<?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>84796</bug_id>
          
          <creation_ts>2012-04-24 16:12:23 -0700</creation_ts>
          <short_desc>Implement top layer rendering bits</short_desc>
          <delta_ts>2021-08-20 05:29:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.chromium.org/p/chromium/issues/detail?id=240576</see_also>
          <bug_file_loc>https://fullscreen.spec.whatwg.org/#new-stacking-layer</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>97425</dependson>
    
    <dependson>102904</dependson>
    
    <dependson>105489</dependson>
    
    <dependson>227800</dependson>
          <blocked>84635</blocked>
    
    <blocked>84798</blocked>
    
    <blocked>221471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Theresa O&apos;Connor">eoconnor</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>50167214</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cigitia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>falken</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mail</cc>
    
    <cc>menard</cc>
    
    <cc>mike</cc>
    
    <cc>morrita</cc>
    
    <cc>ntim</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609206</commentid>
    <comment_count>0</comment_count>
    <who name="Theresa O&apos;Connor">eoconnor</who>
    <bug_when>2012-04-24 16:12:23 -0700</bug_when>
    <thetext>In https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#new-stacking-layer the Fullscreen API spec adds a new stacking layer, the top layer. The Fullscreen API and the HTML &lt;dialog&gt; element both depend on this stacking layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609207</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-04-24 16:13:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/11313359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716955</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-11 02:01:22 -0700</bug_when>
    <thetext>I&apos;ve been looking at the specs to try to figure out the requirements for the top layer.

My understanding is that the top layer can have multiple fullscreen elements and multiple dialogs. Due to requestFullscreen() restrictions, the fullscreen elements on the top layer must be an ancestor chain (the topmost element is the leaf descendant). Typically, you won&apos;t see other fullscreened ancestors since the default ::backdrop is a black box covering the whole viewport. But with a custom backdrop style, the ancestors may be visible. However, there is no double rendering of an element: the containing block of each element in the top layer is the initial containing block.

I&apos;m not sure if the current Fullscreen implementation supports rendering multiple fullscreen elements. It might just render the topmost fullscreen element and black out the rest of the screen. So that would have to change to render all elements in the top layer including ::backdrops.

Maybe a good plan would be to first try to get top layer working for the Fullscreen API, then add support for dialog. This is because if we implement it for dialog first, we might end up with something difficult to get to work with the current Fullscreen implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719307</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-13 03:46:18 -0700</bug_when>
    <thetext>It seems that RenderFullScreen works now by wrapping a renderer when its element becomes full screen and then unwrapping when it&apos;s no longer full screen. So there is one element (and its subtree) that is full screen at a time.

I wonder if we can do something like this instead:

- RenderFullScreen (perhaps renamed &quot;RenderTopLayer&quot;) is a child of RenderView
- When an element is added to the top layer, its renderer becomes a child of RenderFullScreen
- When an element is removed from the top layer, its renderer is returned to its original place
- RenderFullScreen handles the special layout and stacking of the elements as described in the spec (z-index has no effect, position:&quot;static&quot; computes to &quot;absolute&quot;, and the static position for top, left, right are zero).

Does that sound like an okay approach? Maybe dynamic changes to the DOM tree would be problematic for returning no longer fullscreened elements to their original place in the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720882</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-14 10:10:13 -0700</bug_when>
    <thetext>Seems like a good approach to me.(In reply to comment #3)
&gt; It seems that RenderFullScreen works now by wrapping a renderer when its element becomes full screen and then unwrapping when it&apos;s no longer full screen. So there is one element (and its subtree) that is full screen at a time.
&gt; 
&gt; I wonder if we can do something like this instead:
&gt; 
&gt; - RenderFullScreen (perhaps renamed &quot;RenderTopLayer&quot;) is a child of RenderView
&gt; - When an element is added to the top layer, its renderer becomes a child of RenderFullScreen
&gt; - When an element is removed from the top layer, its renderer is returned to its original place
&gt; - RenderFullScreen handles the special layout and stacking of the elements as described in the spec (z-index has no effect, position:&quot;static&quot; computes to &quot;absolute&quot;, and the static position for top, left, right are zero).
&gt; 
&gt; Does that sound like an okay approach? Maybe dynamic changes to the DOM tree would be problematic for returning no longer fullscreened elements to their original place in the render tree.

I would hope that returning un-fullscreened element to their original place would fall out of recalculating the render tree after a style change, in which case changes to the DOM tree during full screen wouldn&apos;t be problematic.

I like the idea of replacing RenderFullScreen with a RenderTopLayer-like object.  I&apos;m pretty optimistic about this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725265</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-21 01:32:57 -0700</bug_when>
    <thetext>Jer, thanks for the comments.

After investigating some more and talking with morrita@, I&apos;m wondering if we should use RenderLayer to implement this. It sounds like the RenderObject tree should basically correspond to the DOM tree, so moving the renderers around in the tree may cause problems.

I wonder if instead we can extend RenderLayer to do top layer stacking in addition to the existing z-index stacking. Each element in the top layer would have a RenderLayer. Then we can keep the RenderObjects in their usual place in the render tree. It might still be necessary to have their containing block (but not parent) be RenderFullScreen/RenderTopLayer, so it can do any special positioning required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725310</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-09-21 02:29:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Jer, thanks for the comments.
&gt; 
&gt; After investigating some more and talking with morrita@, I&apos;m wondering if we should use RenderLayer to implement this. It sounds like the RenderObject tree should basically correspond to the DOM tree, so moving the renderers around in the tree may cause problems.
&gt; 
&gt; I wonder if instead we can extend RenderLayer to do top layer stacking in addition to the existing z-index stacking. Each element in the top layer would have a RenderLayer. Then we can keep the RenderObjects in their usual place in the render tree. It might still be necessary to have their containing block (but not parent) be RenderFullScreen/RenderTopLayer, so it can do any special positioning required.

Some followup:

- Specifying z-index gives a layer to the renderer. What special about &lt;dialog&gt;
  is that it might need a layer in some unusual position.
- Render tree represents a CSS Box tree, which roughly matches DOM tree but
  it has its own construction algorithm (specified in CSS standard).
  In my understanding, moving RenderDialog to some special position
  means changing that algorithm.
  In contrast, RenderLayer roughly corresponds the stacking context, 
  so it seems to have natural fit to achieve the modality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725544</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-21 08:51:32 -0700</bug_when>
    <thetext>CC some people who know things about RenderLayers and stacking contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725592</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-21 09:57:36 -0700</bug_when>
    <thetext>Doing this via RenderLayer seems reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729393</commentid>
    <comment_count>9</comment_count>
      <attachid>165969</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-27 03:52:00 -0700</bug_when>
    <thetext>Created attachment 165969
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729398</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-27 04:02:02 -0700</bug_when>
    <thetext>I&apos;ve uploaded a WIP patch for the stacking behavior of the top layer. I&apos;d be happy for any comments.

So far this patch only does stacking. Other behavior for an element in the top layer is not yet implemented, like:
* Its containing block is the initial containing block.

Also, so far only modal dialogs can be added to the top layer, so I&apos;ve guarded everything behind the DIALOG_ELEMENT flag. The idea is to make fullscreen also use the top layer, so later this can be DIALOG_ELEMENT || FULLSCREEN_API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729586</commentid>
    <comment_count>11</comment_count>
      <attachid>165969</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-27 09:11:20 -0700</bug_when>
    <thetext>Comment on attachment 165969
WIP patch

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

Looks reasonable to me. I&apos;ll give one of the more seasoned RenderLayer folks time to take a look before r+&apos;ing though.

&gt; Source/WebCore/dom/Document.cpp:5500
&gt; +    size_t position = m_topLayer.find(element);
&gt; +    if (position != notFound)

Should you ASSERT(m_topLayer.contains(element)) or ASSERT(position != notFound)? I don&apos;t see how you&apos;d get to this code without the element being in m_topLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729691</commentid>
    <comment_count>12</comment_count>
      <attachid>165969</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-27 10:47:14 -0700</bug_when>
    <thetext>Comment on attachment 165969
WIP patch

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

&gt; Source/WebCore/dom/Document.h:1167
&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt;&amp; topLayer() { return m_topLayer; }

This function is confusingly named. It doesn&apos;t return a layer; it returns a vector of elements. Maybe elementsInTopLayer(), or topLayerElements()?

&gt; Source/WebCore/dom/Document.h:1471
&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; m_topLayer;

What&apos;s the mechanism for removing elements from this array when they go away? Do we assume that HTMLDialogElement is the only element for now that can get into this list?

&gt; Source/WebCore/dom/Element.h:420
&gt; +    virtual void setIsInTopLayer(bool);

I think this should be setInTopLayer()

&gt; Source/WebCore/dom/ElementRareData.h:125
&gt;  #if ENABLE(FULLSCREEN_API)
&gt;      bool m_containsFullScreenElement;
&gt;  #endif
&gt; +
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +    bool m_isInTopLayer;
&gt; +#endif

Should probably group this bools with the previous two bools, and make them part of the bitfield.

&gt; Source/WebCore/rendering/RenderBox.h:50
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +        || (node() &amp;&amp; node()-&gt;isElementNode() &amp;&amp; toElement(node())-&gt;isInTopLayer())
&gt; +#endif

I worry slightly that this will affect performance. Don&apos;t top layer elements have non-auto z-index by virtue of being stacking contexts anyway?

&gt; Source/WebCore/rendering/RenderLayer.cpp:4606
&gt; +    if (isRootLayer()) {
&gt; +        Vector&lt;RefPtr&lt;Element&gt; &gt;&amp; topLayer = renderer()-&gt;document()-&gt;topLayer();
&gt; +        for (Vector&lt;RefPtr&lt;Element&gt; &gt;::iterator i = topLayer.begin(); i != topLayer.end(); ++i) {
&gt; +            RenderLayer* layer = toRenderBoxModelObject((*i)-&gt;renderer())-&gt;layer();
&gt; +            m_posZOrderList-&gt;append(layer);
&gt; +        }
&gt; +    }

This doesn&apos;t seem right. You should never go directly from elements to RenderLayers; I think we need this top layer stuff represented in the render tree too. You have to handle stuff like display:none on a &lt;dialog&gt;. What happens if &lt;dialog&gt; elements have z-index? Can that z-index be negative?

&gt; Source/WebCore/rendering/RenderLayer.h:701
&gt; +        return !style-&gt;hasAutoZIndex()
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +            || isInTopLayer()
&gt; +#endif
&gt; +            || isRootLayer();
&gt; +    }

I think top element layers would have non-auto z-index?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731405</commentid>
    <comment_count>13</comment_count>
      <attachid>165969</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-09-30 23:34:17 -0700</bug_when>
    <thetext>Comment on attachment 165969
WIP patch

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

Thanks for the review comments!

&gt;&gt; Source/WebCore/dom/Document.cpp:5500
&gt;&gt; +    if (position != notFound)
&gt; 
&gt; Should you ASSERT(m_topLayer.contains(element)) or ASSERT(position != notFound)? I don&apos;t see how you&apos;d get to this code without the element being in m_topLayer.

I should probably change setIsInTopLayer(flag) to do nothing if the flag hasn&apos;t changed. In the current patch, we get to this code when a non-modal dialog is closed.

&gt;&gt; Source/WebCore/dom/Document.h:1471
&gt;&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; m_topLayer;
&gt; 
&gt; What&apos;s the mechanism for removing elements from this array when they go away? Do we assume that HTMLDialogElement is the only element for now that can get into this list?

Perhaps Element::removedFrom can call removeFromTopLayer.

&gt;&gt; Source/WebCore/rendering/RenderBox.h:50
&gt;&gt; +#endif
&gt; 
&gt; I worry slightly that this will affect performance. Don&apos;t top layer elements have non-auto z-index by virtue of being stacking contexts anyway?

Top layer elements don&apos;t necessarily have a non-auto z-index. Actually, z-index has no effect in the top layer. Maybe StyleResolver can give elements in the top layer a dummy non-auto z-index, so requiresLayer doesn&apos;t need to be changed?

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4606
&gt;&gt; +    }
&gt; 
&gt; This doesn&apos;t seem right. You should never go directly from elements to RenderLayers; I think we need this top layer stuff represented in the render tree too. You have to handle stuff like display:none on a &lt;dialog&gt;. What happens if &lt;dialog&gt; elements have z-index? Can that z-index be negative?

Hmm, is there a good mechanism for representing the top layer order information in the render tree? Something like adding the position in the top layer vector to the renderer, then sorting on that seems possible but a bit clumsy.

The z-index should be ignored for an element in the top layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731787</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-01 10:29:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 165969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165969&amp;action=review
&gt; 
&gt; Thanks for the review comments!
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Document.cpp:5500
&gt; &gt;&gt; +    if (position != notFound)
&gt; &gt; 
&gt; &gt; Should you ASSERT(m_topLayer.contains(element)) or ASSERT(position != notFound)? I don&apos;t see how you&apos;d get to this code without the element being in m_topLayer.
&gt; 
&gt; I should probably change setIsInTopLayer(flag) to do nothing if the flag hasn&apos;t changed. In the current patch, we get to this code when a non-modal dialog is closed.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Document.h:1471
&gt; &gt;&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; m_topLayer;
&gt; &gt; 
&gt; &gt; What&apos;s the mechanism for removing elements from this array when they go away? Do we assume that HTMLDialogElement is the only element for now that can get into this list?
&gt; 
&gt; Perhaps Element::removedFrom can call removeFromTopLayer.
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderBox.h:50
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; I worry slightly that this will affect performance. Don&apos;t top layer elements have non-auto z-index by virtue of being stacking contexts anyway?
&gt; 
&gt; Top layer elements don&apos;t necessarily have a non-auto z-index. Actually, z-index has no effect in the top layer.

&lt;http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#rendering&gt; says:

&quot;The z-index property has no effect in the top layer.&quot;

and
An element in this stack has the following attributes:
* It generates a new stacking context.

So each element can have z-index: 0

Maybe StyleResolver can give elements in the top layer a dummy non-auto z-index, so requiresLayer doesn&apos;t need to be changed?

Yes, that&apos;s the right way to do it.

&gt; &gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4606
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; This doesn&apos;t seem right. You should never go directly from elements to RenderLayers; I think we need this top layer stuff represented in the render tree too. You have to handle stuff like display:none on a &lt;dialog&gt;. What happens if &lt;dialog&gt; elements have z-index? Can that z-index be negative?
&gt; 
&gt; Hmm, is there a good mechanism for representing the top layer order information in the render tree? Something like adding the position in the top layer vector to the renderer, then sorting on that seems possible but a bit clumsy.

Top layer order is just the sibling order of the renderers in the top layer.

There&apos;s another missing piece here, which is the backdrop pseudo-element. I think you&apos;ll need to make Renderer changes for that. So I think what you need is to make renderers for the top layer stack, including the backdrop. These would get added to the render tree by RenderView, in a way that guarantees they are higher in z-index than everything else in the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732337</commentid>
    <comment_count>15</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-01 23:42:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 165969 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165969&amp;action=review
&gt; &gt; &gt; This doesn&apos;t seem right. You should never go directly from elements to RenderLayers; I think we need this top layer stuff represented in the render tree too. You have to handle stuff like display:none on a &lt;dialog&gt;. What happens if &lt;dialog&gt; elements have z-index? Can that z-index be negative?
&gt; &gt; 
&gt; &gt; Hmm, is there a good mechanism for representing the top layer order information in the render tree? Something like adding the position in the top layer vector to the renderer, then sorting on that seems possible but a bit clumsy.
&gt; 
&gt; Top layer order is just the sibling order of the renderers in the top layer.

I&apos;m a little lost here. Do you mean to arrange the render tree so top layer renderers are siblings in top layer order? I thought we don&apos;t want to change the render tree structure (comment #5, #6).

Perhaps an alternative is to keep the renderers in their original place and build a sorted list by having each top layer renderer point to the next one in the stack.

&gt; There&apos;s another missing piece here, which is the backdrop pseudo-element. I think you&apos;ll need to make Renderer changes for that. So I think what you need is to make renderers for the top layer stack, including the backdrop. These would get added to the render tree by RenderView, in a way that guarantees they are higher in z-index than everything else in the document.

I see what you mean about needing renderer changes for backdrop. It seems we can implement backdrop with a wrapper renderer that is a parent of both the original renderer and the backdrop renderer (like how RenderFullscreen wraps).

I&apos;m not sure I see how RenderView would add these renderers to the render tree. I guess it depends on whether we are changing the render tree structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739761</commentid>
    <comment_count>16</comment_count>
      <attachid>168181</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-11 02:48:50 -0700</bug_when>
    <thetext>Created attachment 168181
represent top layer in render tree as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739771</commentid>
    <comment_count>17</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-11 02:57:10 -0700</bug_when>
    <thetext>Simon, I&apos;ve modified the patch so now top layer renderers are added as children of RenderView in top layer stacking order. This way RenderLayer no longer goes directly from the elements in the top layer to their layers.

I still have not tackled :backdrop yet. I hope to get to that in a subsequent patch.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740157</commentid>
    <comment_count>18</comment_count>
      <attachid>168181</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-11 11:40:50 -0700</bug_when>
    <thetext>Comment on attachment 168181
represent top layer in render tree as well

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

I&apos;d like to see some tests to actually ensure that the rendering is correct, e.g. tests with high z-index elements and dialogs, as well as nested dialogs. I think you also need to test removing showing dialog elements (esp those with dialog children) via JS.

&gt; Source/WebCore/dom/Document.h:1467
&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; m_topLayer;

Should be m_topLayerElements

&gt; Source/WebCore/dom/NodeRareData.h:327
&gt; +    bool isInTopLayer() { return m_isInTopLayer; }

Should be const

&gt; Source/WebCore/html/HTMLDialogElement.cpp:56
&gt; +    setIsInTopLayer(false);

Is close() always called when a &lt;dialog&gt; gets destroyed? What if it&apos;s removed from the DOM while showing?

&gt; Source/WebCore/rendering/RenderLayer.cpp:4635
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +    if (isRootLayer()) {
&gt; +        RenderObject* view = renderer()-&gt;view();
&gt; +        for (RenderObject* child = view-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
&gt; +            Element* childElement = child-&gt;node()-&gt;isElementNode() ? toElement(child-&gt;node()) : 0;
&gt; +            if (childElement &amp;&amp; childElement-&gt;isInTopLayer()) {
&gt; +                RenderLayer* layer = toRenderBoxModelObject(child)-&gt;layer();
&gt; +                m_posZOrderList-&gt;append(layer);
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +#endif

I&apos;m not sure why you need this code here, since your createRendererIfNeeded() changes ensure that the dialog renderers are parented in the view. Or does this ensure that they get appended after z-index sorting? Some comments would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740356</commentid>
    <comment_count>19</comment_count>
      <attachid>168181</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-11 16:01:22 -0700</bug_when>
    <thetext>Comment on attachment 168181
represent top layer in render tree as well

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

Thanks for the review!

&gt;&gt; Source/WebCore/html/HTMLDialogElement.cpp:56
&gt;&gt; +    setIsInTopLayer(false);
&gt; 
&gt; Is close() always called when a &lt;dialog&gt; gets destroyed? What if it&apos;s removed from the DOM while showing?

I think in that case we get to Element::removedFrom which also removes it from the top layer.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4635
&gt;&gt; +#endif
&gt; 
&gt; I&apos;m not sure why you need this code here, since your createRendererIfNeeded() changes ensure that the dialog renderers are parented in the view. Or does this ensure that they get appended after z-index sorting? Some comments would help.

Without this code, I think the stacking may be wrong if:
- RenderView has a child with a positive z-index, or
- RenderView has a child appended after the top layer renderers, with a child with a positive z-index

I&apos;m not sure whether those are possible. I&apos;ll investigate more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741889</commentid>
    <comment_count>20</comment_count>
      <attachid>168661</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-15 02:59:41 -0700</bug_when>
    <thetext>Created attachment 168661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741897</commentid>
    <comment_count>21</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-15 03:08:23 -0700</bug_when>
    <thetext>Simon, I&apos;ve modified the patch to address your review comments.

(In reply to comment #18)
&gt; I&apos;d like to see some tests to actually ensure that the rendering is correct, e.g. tests with high z-index elements and dialogs, as well as nested dialogs. I think you also need to test removing showing dialog elements (esp those with dialog children) via JS.

I think the tests now cover all of these cases. I&apos;ve added some comments to the top of the tests to explain what they do.

&gt; &gt; Source/WebCore/html/HTMLDialogElement.cpp:56
&gt; &gt; +    setIsInTopLayer(false);
&gt; 
&gt; Is close() always called when a &lt;dialog&gt; gets destroyed? What if it&apos;s removed 
from the DOM while showing?

I&apos;ve verified Element::removedFrom is called and removes the element from the top layer. This also works for dialogs in the subtree of a removed element.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:4635
&gt; &gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; &gt; +    if (isRootLayer()) {
&gt; &gt; +        RenderObject* view = renderer()-&gt;view();
&gt; &gt; +        for (RenderObject* child = view-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
&gt; &gt; +            Element* childElement = child-&gt;node()-&gt;isElementNode() ? toElement(child-&gt;node()) : 0;
&gt; &gt; +            if (childElement &amp;&amp; childElement-&gt;isInTopLayer()) {
&gt; &gt; +                RenderLayer* layer = toRenderBoxModelObject(child)-&gt;layer();
&gt; &gt; +                m_posZOrderList-&gt;append(layer);
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; I&apos;m not sure why you need this code here, since your createRendererIfNeeded() changes ensure that the dialog renderers are parented in the view. Or does this ensure that they get appended after z-index sorting? Some comments would help.

I&apos;ve verified that this is needed or else a positive z-indexed element is rendered on top of the top layer, and added a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747348</commentid>
    <comment_count>22</comment_count>
      <attachid>169862</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-22 02:38:14 -0700</bug_when>
    <thetext>Created attachment 169862
sync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747385</commentid>
    <comment_count>23</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-22 03:31:41 -0700</bug_when>
    <thetext>Simon, could you please take another look? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750031</commentid>
    <comment_count>24</comment_count>
      <attachid>169862</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-24 14:15:19 -0700</bug_when>
    <thetext>Comment on attachment 169862
sync

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

&gt; Source/WebCore/dom/Element.cpp:975
&gt; +    setIsInTopLayer(false);

I wonder if you should check isInTopLayer() to avoid a perf hit.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:272
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +    if (element &amp;&amp; element-&gt;isInTopLayer()) {
&gt; +        parentRenderer = parentRenderer-&gt;view();
&gt; +        nextRenderer = 0;
&gt; +        Vector&lt;RefPtr&lt;Element&gt; &gt;&amp; topLayerElements = document-&gt;topLayerElements();
&gt; +        size_t topLayerPosition = topLayerElements.find(element);
&gt; +        ASSERT(topLayerPosition != notFound);
&gt; +        for (RenderObject* child = parentRenderer-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
&gt; +            Element* childElement = child-&gt;node()-&gt;isElementNode() ? toElement(child-&gt;node()) : 0;
&gt; +            if (childElement &amp;&amp; childElement-&gt;isInTopLayer()) {
&gt; +                size_t childTopLayerPosition = topLayerElements.find(childElement);
&gt; +                ASSERT(childTopLayerPosition != notFound);
&gt; +                if (topLayerPosition &lt; childTopLayerPosition) {
&gt; +                    nextRenderer = child;
&gt; +                    break;
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +#endif

I think it&apos;s worth moving this into its own function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750296</commentid>
    <comment_count>25</comment_count>
      <attachid>169862</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-24 18:59:19 -0700</bug_when>
    <thetext>Comment on attachment 169862
sync

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

&gt; Source/WebCore/dom/Element.cpp:2016
&gt; +    if (isInTopLayer() == flag)

This is regarding of Simon&apos;s comment above.

nit: looking up element rare data table twice (through isInTopLayer()) will cost. 
You can retrieve elementRareData() here and see ElementRareData::isInTopLayer() to avoid the extra lookup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750772</commentid>
    <comment_count>26</comment_count>
      <attachid>170637</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-25 06:59:58 -0700</bug_when>
    <thetext>Created attachment 170637
review comments &amp; fix assert failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750788</commentid>
    <comment_count>27</comment_count>
      <attachid>170637</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-25 07:12:00 -0700</bug_when>
    <thetext>Comment on attachment 170637
review comments &amp; fix assert failure

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

Thanks for the review!

&gt; Source/WebCore/dom/Element.cpp:2014
&gt; +    ElementRareData* rareData = hasRareData() ? elementRareData() : 0;

morrita: Is this what you mean by avoiding looking up element rare data table twice?

&gt; Source/WebCore/dom/Node.cpp:1328
&gt; +                || (renderer-&gt;enclosingLayer()-&gt;isInTopLayerSubtree())

jchaffraix: Is this right? This patch makes elements in the top layer move from their regular tree location to be children of RenderView. This assertion was failing for elements in the top layer and their subtree. I&apos;m not sure if these are eventually destroyed. It looks like detach() is called on dialog elements in the top layer, but I don&apos;t see it being called on their descendants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750810</commentid>
    <comment_count>28</comment_count>
      <attachid>170637</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 07:40:34 -0700</bug_when>
    <thetext>Comment on attachment 170637
review comments &amp; fix assert failure

Attachment 170637 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14553685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754060</commentid>
    <comment_count>29</comment_count>
      <attachid>171395</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-30 01:34:07 -0700</bug_when>
    <thetext>Created attachment 171395
fix win compile failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754075</commentid>
    <comment_count>30</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-30 01:51:46 -0700</bug_when>
    <thetext>Hi jchaffraix, could you take a look at my change to the assert in Node::detach (see comment 27)? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755350</commentid>
    <comment_count>31</comment_count>
      <attachid>171395</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-31 08:49:57 -0700</bug_when>
    <thetext>Comment on attachment 171395
fix win compile failure

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        contexts and in the desired order.

I have an issue with the high-level design (nobody seems to have mentioned it so maybe it&apos;s just me being dumb here): most of what you are talking about are *rendering* concepts (layer, stacking context, ...). Yet you handle this in the DOM, which doesn&apos;t seem right.

Your work is close to what RenderFlowThread is doing and RenderFlowThread doesn&apos;t pollute the DOM in the same manner. Could you explain the rationale behind going the DOM way?

&gt; Source/WebCore/dom/Element.cpp:1990
&gt; +    return hasRareData() ? elementRareData()-&gt;isInTopLayer() : false;

This will be better written:

return hasRareData() &amp;&amp; elementRareData()-&gt;isInTopLayer();

&gt; Source/WebCore/dom/Element.cpp:1993
&gt; +void Element::setIsInTopLayer(bool flag)

|flag| is not a good name.

&gt; Source/WebCore/dom/Node.cpp:1328
&gt; +            ASSERT(!renderer || renderer-&gt;inRenderFlowThread() || (renderer-&gt;enclosingLayer()-&gt;isInTopLayerSubtree()));

I think this is the same problem as RenderFlowThread - that you shuffle the renderers in the tree - so it makes sense to extend the ASSERT to cover top-layer.

&gt; Source/WebCore/dom/NodeRareData.h:345
&gt; +    bool m_isInTopLayer : 1;

Nobody mentioned it but if this is going to be changed for each element removal (ie in the hot path), we may consider adding this flag to NodeFlags. This would also avoid the horrible code in setIsInTopLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755413</commentid>
    <comment_count>32</comment_count>
      <attachid>171395</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-31 10:13:10 -0700</bug_when>
    <thetext>Comment on attachment 171395
fix win compile failure

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

Hi Julien, thanks for the review. I&apos;ll just try to address your design comment for now.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        contexts and in the desired order.
&gt; 
&gt; I have an issue with the high-level design (nobody seems to have mentioned it so maybe it&apos;s just me being dumb here): most of what you are talking about are *rendering* concepts (layer, stacking context, ...). Yet you handle this in the DOM, which doesn&apos;t seem right.
&gt; 
&gt; Your work is close to what RenderFlowThread is doing and RenderFlowThread doesn&apos;t pollute the DOM in the same manner. Could you explain the rationale behind going the DOM way?

I&apos;m pretty inexperienced at WebKit so the design might not be the best, so thanks for asking.

My thinking is as follows. The spec defines DOM functions showModal() and close() for dialog elements. These push and pop from the top layer stack, which defines the rendered stacking order. So it seems to make sense to store the top layer stack in the DOM and pass the needed information to the rendering parts. I&apos;m not sure if the rendering parts can hold the top layer itself. For example it&apos;s possible to call showModal on a dialog that doesn&apos;t have a renderer. Or if somehow the render tree must be entirely recreated, if the DOM has the top layer stack the needed information still exists.

It looks like the ordering of renderers in RenderFlowThread is based on the position of the nodes in the DOM tree, which makes it possible to not store additional information in the DOM.

Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755934</commentid>
    <comment_count>33</comment_count>
      <attachid>171781</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-31 23:48:43 -0700</bug_when>
    <thetext>Created attachment 171781
review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755940</commentid>
    <comment_count>34</comment_count>
      <attachid>171395</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-10-31 23:56:47 -0700</bug_when>
    <thetext>Comment on attachment 171395
fix win compile failure

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

Hi Julien, I&apos;ve updated the patch.

I&apos;d like to commit this soon if possible. Do you still have an issue with the design?

&gt;&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt;&gt; +        contexts and in the desired order.
&gt;&gt; 
&gt;&gt; I have an issue with the high-level design (nobody seems to have mentioned it so maybe it&apos;s just me being dumb here): most of what you are talking about are *rendering* concepts (layer, stacking context, ...). Yet you handle this in the DOM, which doesn&apos;t seem right.
&gt;&gt; 
&gt;&gt; Your work is close to what RenderFlowThread is doing and RenderFlowThread doesn&apos;t pollute the DOM in the same manner. Could you explain the rationale behind going the DOM way?
&gt; 
&gt; I&apos;m pretty inexperienced at WebKit so the design might not be the best, so thanks for asking.
&gt; 
&gt; My thinking is as follows. The spec defines DOM functions showModal() and close() for dialog elements. These push and pop from the top layer stack, which defines the rendered stacking order. So it seems to make sense to store the top layer stack in the DOM and pass the needed information to the rendering parts. I&apos;m not sure if the rendering parts can hold the top layer itself. For example it&apos;s possible to call showModal on a dialog that doesn&apos;t have a renderer. Or if somehow the render tree must be entirely recreated, if the DOM has the top layer stack the needed information still exists.
&gt; 
&gt; It looks like the ordering of renderers in RenderFlowThread is based on the position of the nodes in the DOM tree, which makes it possible to not store additional information in the DOM.
&gt; 
&gt; Does that make sense?

I&apos;ve added this explanation to the ChangeLog.

&gt;&gt; Source/WebCore/dom/Element.cpp:1990
&gt;&gt; +    return hasRareData() ? elementRareData()-&gt;isInTopLayer() : false;
&gt; 
&gt; This will be better written:
&gt; 
&gt; return hasRareData() &amp;&amp; elementRareData()-&gt;isInTopLayer();

Fixed.

&gt;&gt; Source/WebCore/dom/Element.cpp:1993
&gt;&gt; +void Element::setIsInTopLayer(bool flag)
&gt; 
&gt; |flag| is not a good name.

Fixed.

&gt;&gt; Source/WebCore/dom/NodeRareData.h:345
&gt;&gt; +    bool m_isInTopLayer : 1;
&gt; 
&gt; Nobody mentioned it but if this is going to be changed for each element removal (ie in the hot path), we may consider adding this flag to NodeFlags. This would also avoid the horrible code in setIsInTopLayer.

I think morrita also mentioned this to me but said the remaining bits for NodeFlags are quite valuable. Since this code is still guarded by DIALOG_ELEMENT, I think I&apos;d like to keep it as RareData for now. Maybe if this moves out of the feature flag and merges with fullscreen, we can reconsider putting it in NodeFlags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758398</commentid>
    <comment_count>35</comment_count>
      <attachid>171781</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-05 03:46:53 -0800</bug_when>
    <thetext>Comment on attachment 171781
review comments

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

High-level comments: because we insert top layer renderers&apos; into the RenderView&apos;s children, they should interact with them during layout. I don&apos;t know how much of a pain this is.

&gt; Source/WebCore/ChangeLog:13
&gt; +        This adds the top layer element stack to Document. The stack is
&gt; +        stored in the DOM because pushing and popping from the top layer
&gt; +        occurs via the DOM functions showModal() and close() for dialog
&gt; +        elements. It seems difficult to store the stack as part of rendering
&gt; +        because, for example, an element without a renderer can be pushed on
&gt; +        the top layer.

I think more to the point: the FullScreen specification mandates that we track the ordering of the DOM nodes in the top layer, not the renderers. That makes it hard to implement on the rendering side only.

&gt; Source/WebCore/dom/Document.cpp:5553
&gt; +    ASSERT(m_topLayerElements.contains(element));
&gt; +    size_t position = m_topLayerElements.find(element);

You could replace that with:

size_t position = m_topLayerElements.find(element);
ASSERT(position != notFound);

which would remove one iteration over the Vector in Debug.

&gt; Source/WebCore/dom/Document.h:1165
&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt;&amp; topLayerElements() { return m_topLayerElements; }

This should be a |const| function, probably returning a const Vector as we don&apos;t expect callers to modify it.

&gt; Source/WebCore/dom/Node.cpp:1328
&gt; +            ASSERT(!renderer || renderer-&gt;inRenderFlowThread() || (renderer-&gt;enclosingLayer()-&gt;isInTopLayerSubtree()));

Note that this will involve walking up the render tree in Debug for every detach.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:230
&gt; +    size_t topLayerPosition = topLayerElements.find(element);
&gt; +    ASSERT(topLayerPosition != notFound);

Couldn&apos;t we just find the next renderer from the topLayerElements instead of iterating on all the RenderView&apos;s children?

Note that because you compute the positions in the Vector in the loop, the code is O(n^2).

&gt; Source/WebCore/rendering/RenderLayer.cpp:4669
&gt; +        for (RenderObject* child = view-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
&gt; +            Element* childElement = child-&gt;node()-&gt;isElementNode() ? toElement(child-&gt;node()) : 0;
&gt; +            if (childElement &amp;&amp; childElement-&gt;isInTopLayer()) {

Same comment here: couldn&apos;t we use the Document&apos;s list?

&gt; LayoutTests/ChangeLog:16
&gt; +

Per discussion, there should be a test for percent length resolution. This would prove that we correctly layout top-layer elements with their containing block as the initial containing block.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:21
&gt; +    -webkit-transform: rotateY(45deg);

As discussed I don&apos;t know if that covers the hardware accelerated case but it needs to be covered by one test as we disable AC on named flow-thread.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:27
&gt; +&lt;dialog id=&quot;z&quot; style=&quot;display: none&quot;&gt;This should not be displayed.&lt;/dialog&gt;

You should add some red for good measure.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:49
&gt; +document.getElementById(&apos;x&apos;).showModal();
&gt; +document.getElementById(&apos;y&apos;).showModal();
&gt; +document.getElementById(&apos;z&apos;).showModal();

x, y, z don&apos;t really speak to me. Better names: topHiddenDialog, middleFixedDialog, bottomDialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759395</commentid>
    <comment_count>36</comment_count>
      <attachid>171781</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-06 01:36:57 -0800</bug_when>
    <thetext>Comment on attachment 171781
review comments

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

Hi Julien, thanks for the review and discussion on IRC. I&apos;ve prepared a new patch.

As for having the renderers parented by RenderView, I&apos;m not sure what to do now. I&apos;m inclined to try this approach now and fix it if we start seeing real pain and have a better understanding of the problem. I took the RenderView approach based on Simon&apos;s reviews in comments #12 and #14.

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        the top layer.
&gt; 
&gt; I think more to the point: the FullScreen specification mandates that we track the ordering of the DOM nodes in the top layer, not the renderers. That makes it hard to implement on the rendering side only.

Thanks, that&apos;s a better rationale.

&gt;&gt; Source/WebCore/dom/Document.cpp:5553
&gt;&gt; +    size_t position = m_topLayerElements.find(element);
&gt; 
&gt; You could replace that with:
&gt; 
&gt; size_t position = m_topLayerElements.find(element);
&gt; ASSERT(position != notFound);
&gt; 
&gt; which would remove one iteration over the Vector in Debug.

Done.

&gt;&gt; Source/WebCore/dom/Document.h:1165
&gt;&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt;&amp; topLayerElements() { return m_topLayerElements; }
&gt; 
&gt; This should be a |const| function, probably returning a const Vector as we don&apos;t expect callers to modify it.

Done.

&gt;&gt; Source/WebCore/dom/Node.cpp:1328
&gt;&gt; +            ASSERT(!renderer || renderer-&gt;inRenderFlowThread() || (renderer-&gt;enclosingLayer()-&gt;isInTopLayerSubtree()));
&gt; 
&gt; Note that this will involve walking up the render tree in Debug for every detach.

Hm, I&apos;m not sure there&apos;s an easy way to prevent this. One idea could be to maintain a isInTopLayerSubtree bit on RenderObject or RenderLayer... but it could be hard to update it when an ancestor renderer changes. Also, there are no bits left in RenderObjectBitfields. Maybe this can be tackled in a subsequent patch.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:230
&gt;&gt; +    ASSERT(topLayerPosition != notFound);
&gt; 
&gt; Couldn&apos;t we just find the next renderer from the topLayerElements instead of iterating on all the RenderView&apos;s children?
&gt; 
&gt; Note that because you compute the positions in the Vector in the loop, the code is O(n^2).

I&apos;ve revised this to take an O(n) approach using topLayerElements.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4669
&gt;&gt; +            if (childElement &amp;&amp; childElement-&gt;isInTopLayer()) {
&gt; 
&gt; Same comment here: couldn&apos;t we use the Document&apos;s list?

I originally did it that way, but changed it after Simon&apos;s review in comment #12 and #14, namely his comment that we shouldn&apos;t go directly from elements to layers. So the new approach is to order the top layer renderers as siblings under RenderView. I think this will also help for :backdrop-- a backdrop renderer would be after each top layer renderer, though I haven&apos;t attempted it yet.

It may be possible to use the Document&apos;s list here as well. I&apos;m not sure if the only concern with going from element to layer is the case where the renderer is NULL, or that it&apos;s an abstraction violation. In any case, at least this code is still O(n).

&gt;&gt; LayoutTests/ChangeLog:16
&gt;&gt; +
&gt; 
&gt; Per discussion, there should be a test for percent length resolution. This would prove that we correctly layout top-layer elements with their containing block as the initial containing block.

I&apos;ve added a percent length value to top-layer-stacking.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:21
&gt;&gt; +    -webkit-transform: rotateY(45deg);
&gt; 
&gt; As discussed I don&apos;t know if that covers the hardware accelerated case but it needs to be covered by one test as we disable AC on named flow-thread.

It turns out this uses accelerated composition (actually it requires AC), so it does at least work for this case.

I found that if dialog itself has translateZ(0), its fixed child becomes positioned relative to the dialog instead of the browser window. But it turns out this also happens for a non-dialog, normal &lt;div&gt; as well. I think it&apos;s an AC bug... I&apos;ll file a bug for it.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:27
&gt;&gt; +&lt;dialog id=&quot;z&quot; style=&quot;display: none&quot;&gt;This should not be displayed.&lt;/dialog&gt;
&gt; 
&gt; You should add some red for good measure.

Done.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking.html:49
&gt;&gt; +document.getElementById(&apos;z&apos;).showModal();
&gt; 
&gt; x, y, z don&apos;t really speak to me. Better names: topHiddenDialog, middleFixedDialog, bottomDialog.

Revised the test cases with better ids, except for top-layer-stacking-dynamic.html. I don&apos;t think changing those ids would improve readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759402</commentid>
    <comment_count>37</comment_count>
      <attachid>172521</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-06 01:44:52 -0800</bug_when>
    <thetext>Created attachment 172521
more review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759826</commentid>
    <comment_count>38</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-06 10:22:34 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; I found that if dialog itself has translateZ(0), its fixed child becomes positioned relative to the dialog instead of the browser window. But it turns out this also happens for a non-dialog, normal &lt;div&gt; as well. I think it&apos;s an AC bug... I&apos;ll file a bug for it.

This is how CSS transforms are specified; a transformed element is a positioning container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761283</commentid>
    <comment_count>39</comment_count>
      <attachid>172521</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-07 19:11:24 -0800</bug_when>
    <thetext>Comment on attachment 172521
more review comments

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

&gt; Source/WebCore/dom/Element.cpp:2124
&gt; +    if (inTopLayer)
&gt; +        document()-&gt;addToTopLayer(this);
&gt; +    else
&gt; +        document()-&gt;removeFromTopLayer(this);

As you never check that inTopLayer != wasInTopLayer, shouldn&apos;t calling showModalDialog() on an element several times trigger the ASSERT?

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:234
&gt; +        if ((nextRenderer = topLayerElements[i]-&gt;renderer())) {

I would split this in 2 as it&apos;s difficult to see the side effect:
nextRenderer = topLayerElements[i]-&gt;renderer();
if (nextRenderer) {

&gt; Source/WebCore/rendering/RenderLayer.cpp:4673
&gt; +                RenderLayer* layer = toRenderBoxModelObject(child)-&gt;layer();

toRenderLayerModelObject(child)-&gt;layer()

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-containing-block.html:19
&gt; +        This modal dialog should be unaffected by its ancestor with overflow. It should not be clipped.

A global explanation on showModal vs show would help.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-containing-block.html:25
&gt; +&lt;div style=&quot;position: absolute; top: 1000px; left: 1000px; width: 20px;&quot;&gt;

This is not tested by your test: the viewport is 800 x 600 so anything outside is not rendered nor checked by the ref-test.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking-dynamic-expected.html:1
&gt; +&lt;html&gt;

Tests that don&apos;t check for quirksmode behavior should include a doctype declaration: &lt;!DOCTYPE html&gt;

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking-dynamic-expected.html:22
&gt; +The stacking order should be: yellow, magenta, green, pink, cyan (closest to user)

The passing condition should be readable by people non-familiar with the rendering code: &quot;This test passes if you see 5 rectangles stacked in the following order (from bottom to top): yellow, magenta, green, pink, cyan&quot;.

This really is a nasty condition for passing btw as it&apos;s very broad. Better would be more focused tests that use red / green for passing / failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761601</commentid>
    <comment_count>40</comment_count>
      <attachid>172521</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-08 03:42:21 -0800</bug_when>
    <thetext>Comment on attachment 172521
more review comments

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

Julien, thanks for the review. Uploading a revised patch...

&gt;&gt; Source/WebCore/dom/Element.cpp:2124
&gt;&gt; +        document()-&gt;removeFromTopLayer(this);
&gt; 
&gt; As you never check that inTopLayer != wasInTopLayer, shouldn&apos;t calling showModalDialog() on an element several times trigger the ASSERT?

It&apos;s checked in the early return. I&apos;ve rearranged the code to hopefully be more readable.

Also, an existing test, dialog-show-modal.html, covers that multiple showModalDialog() calls result in the correct DOM exception error.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:234
&gt;&gt; +        if ((nextRenderer = topLayerElements[i]-&gt;renderer())) {
&gt; 
&gt; I would split this in 2 as it&apos;s difficult to see the side effect:
&gt; nextRenderer = topLayerElements[i]-&gt;renderer();
&gt; if (nextRenderer) {

Done.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4673
&gt;&gt; +                RenderLayer* layer = toRenderBoxModelObject(child)-&gt;layer();
&gt; 
&gt; toRenderLayerModelObject(child)-&gt;layer()

Done.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-containing-block.html:19
&gt;&gt; +        This modal dialog should be unaffected by its ancestor with overflow. It should not be clipped.
&gt; 
&gt; A global explanation on showModal vs show would help.

Added.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-containing-block.html:25
&gt;&gt; +&lt;div style=&quot;position: absolute; top: 1000px; left: 1000px; width: 20px;&quot;&gt;
&gt; 
&gt; This is not tested by your test: the viewport is 800 x 600 so anything outside is not rendered nor checked by the ref-test.

Actually this div isn&apos;t supposed to be visible. The point is that its child dialog should be positioned relative to the initial containing block, and therefore is in the viewport.

However some parts of this test were beyond the 800x600 viewport. I&apos;ve compressed things so they are visible now.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking-dynamic-expected.html:1
&gt;&gt; +&lt;html&gt;
&gt; 
&gt; Tests that don&apos;t check for quirksmode behavior should include a doctype declaration: &lt;!DOCTYPE html&gt;

Done.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-stacking-dynamic-expected.html:22
&gt;&gt; +The stacking order should be: yellow, magenta, green, pink, cyan (closest to user)
&gt; 
&gt; The passing condition should be readable by people non-familiar with the rendering code: &quot;This test passes if you see 5 rectangles stacked in the following order (from bottom to top): yellow, magenta, green, pink, cyan&quot;.
&gt; 
&gt; This really is a nasty condition for passing btw as it&apos;s very broad. Better would be more focused tests that use red / green for passing / failing.

I&apos;ve broken this test into 3 more focused tests: top-layer-nesting.html, top-layer-display-none.html, and top-layer-stacking-dynamic.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761608</commentid>
    <comment_count>41</comment_count>
      <attachid>172999</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-08 03:46:13 -0800</bug_when>
    <thetext>Created attachment 172999
more review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768957</commentid>
    <comment_count>42</comment_count>
      <attachid>174612</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-15 23:31:14 -0800</bug_when>
    <thetext>Created attachment 174612
sync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771120</commentid>
    <comment_count>43</comment_count>
      <attachid>174612</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-19 15:48:09 -0800</bug_when>
    <thetext>Comment on attachment 174612
sync

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

As mentioned on IRC, there is no logic for detaching / reattaching the top layer elements&apos; when we insert or remove them. When the spec says we should change the top layer bit of an element, it already has to be detached (e.g. showModalDialog) so it should be fine but better to keep that in mind.

&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-display-none.html:49
&gt; +document.getElementById(&apos;container&apos;).style.display = &apos;none&apos;;
&gt; +document.getElementById(&apos;displayNoneChild2&apos;).showModal();

Not sure this line helps as &apos;displayNoneChild2&apos; already matches .hidden.

It is probably better to not have &apos;displayNoneChild2&apos; with .hidden but then add hidden to container&apos;s classList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771374</commentid>
    <comment_count>44</comment_count>
      <attachid>174612</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-19 18:46:18 -0800</bug_when>
    <thetext>Comment on attachment 174612
sync

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

Thanks Julien.

&gt;&gt; LayoutTests/fast/dom/HTMLDialogElement/top-layer-display-none.html:49
&gt;&gt; +document.getElementById(&apos;displayNoneChild2&apos;).showModal();
&gt; 
&gt; Not sure this line helps as &apos;displayNoneChild2&apos; already matches .hidden.
&gt; 
&gt; It is probably better to not have &apos;displayNoneChild2&apos; with .hidden but then add hidden to container&apos;s classList.

I&apos;m not sure I understand. The .hidden just colors the dialog red to indicate failure. I&apos;ll change &quot;hidden&quot; to &quot;red for clarity.

This tests that the dialog is not rendered whether it&apos;s added to the top layer before or after its ancestor is set to display: none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771420</commentid>
    <comment_count>45</comment_count>
      <attachid>175122</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-19 20:02:19 -0800</bug_when>
    <thetext>Created attachment 175122
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771441</commentid>
    <comment_count>46</comment_count>
      <attachid>175122</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 20:45:43 -0800</bug_when>
    <thetext>Comment on attachment 175122
patch for landing

Clearing flags on attachment: 175122

Committed r135242: &lt;http://trac.webkit.org/changeset/135242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052338</commentid>
    <comment_count>47</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-12-03 16:30:14 -0800</bug_when>
    <thetext>This was all rolled out in bug 120467.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727101</commentid>
    <comment_count>48</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-09 09:56:21 -0800</bug_when>
    <thetext>*** Bug 221471 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785565</commentid>
    <comment_count>49</comment_count>
      <attachid>435898</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-19 13:31:58 -0700</bug_when>
    <thetext>Created attachment 435898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785620</commentid>
    <comment_count>50</comment_count>
      <attachid>435920</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-19 16:52:46 -0700</bug_when>
    <thetext>Created attachment 435920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785629</commentid>
    <comment_count>51</comment_count>
      <attachid>435925</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-19 17:02:09 -0700</bug_when>
    <thetext>Created attachment 435925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785643</commentid>
    <comment_count>52</comment_count>
      <attachid>435929</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-19 17:27:38 -0700</bug_when>
    <thetext>Created attachment 435929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785704</commentid>
    <comment_count>53</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 23:20:55 -0700</bug_when>
    <thetext>Committed r281296 (240720@main): &lt;https://commits.webkit.org/240720@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435929.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165969</attachid>
            <date>2012-09-27 03:52:00 -0700</date>
            <delta_ts>2012-10-11 02:48:46 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-84796-20120927195118.patch</filename>
            <type>text/plain</type>
            <size>16036</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI5YjJlMmNhMTk0ODhk
YmMxNzgxNzczMzY0OGVhNTBhNDYyZTIxNi4uNTE2NDFmODg5M2VhNTg1MTk1ZDlmNGE1YjZmOGU3
Nzc4NzVmYWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTI3ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcCBsYXllcgorICAgICAgICBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXll
cik6IEFkZCB0aGUgdG9wIGxheWVyIGVsZW1lbnQgc3RhY2sgdG8gRG9jdW1lbnQuCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojppc0luVG9wTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SXNJblRvcExheWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9F
bGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxl
bWVudDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OnNob3dN
b2RhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOiBFbGVtZW50cyBpbiB0aGUg
dG9wIGxheWVyIHJlcXVpcmUgYSBsYXllci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxk
Wk9yZGVyTGlzdHMpOiBBZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5ZXIg
Y29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJz
KTogQXZvaWQgYWRkaW5nIGVsZW1lbnRzIGluIHRoZSB0b3AgbGF5ZXIgZHVyaW5nIG5vcm1hbCBs
YXllciBjb2xsZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzU3Rh
Y2tpbmdDb250ZXh0KToKKwogMjAxMi0wOS0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgUGFnZTo6ZnJhbWVDb3VudCgpIHRvIHN1YmZy
YW1lQ291bnQoKSwgYW5kIHJlbGF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZDE1OGZjMDU5
MTMwMGNiMmIyY2VmNTllOWRiYmYyY2U4ZjBkZDFlMC4uNWYwNDU2NDFlZjZhNjIwN2Y4ZDM5NzQ0
YTYwZmFjZWViNGRlMGY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxNDAsNiArMjE0MCwx
MCBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTZkYXNoYm9hcmRSZWdpb25zRXYKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczQxc2V0VXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGVF
YgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitfX1pOSzdXZWJDb3JlMTFS
ZW5kZXJMYXllcjEyaXNJblRvcExheWVyRXYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdkcmFnU291cmNlRW5kZWRBdEVSS05T
XzE4UGxhdGZvcm1Nb3VzZUV2ZW50RU5TXzEzRHJhZ09wZXJhdGlvbkUKIF9fWk5LN1dlYkNvcmUx
MkV2ZW50SGFuZGxlcjE3ZXZlbnRNYXlTdGFydERyYWdFUktOU18xOFBsYXRmb3JtTW91c2VFdmVu
dEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAwZGUwZTc2ODM4OGVjOTM4MDBiNGY3YWU2
ODg0NTgzM2JhMjIxZTcuLmVmNTdiMTE3OWQ2N2YzMjZmYjk5YzlmNDc2YzcwNzAzYzkzN2MxMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTQ4Nyw2ICs1NDg3LDIxIEBAIHZvaWQgRG9j
dW1lbnQ6OmFkZERvY3VtZW50VG9GdWxsU2NyZWVuQ2hhbmdlRXZlbnRRdWV1ZShEb2N1bWVudCog
ZG9jKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCit2b2lkIERvY3Vt
ZW50OjphZGRUb1RvcExheWVyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKCFtX3Rv
cExheWVyLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBtX3RvcExheWVyLmFwcGVuZChlbGVtZW50
KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgc2l6ZV90IHBvc2l0aW9uID0gbV90b3BMYXllci5maW5kKGVsZW1lbnQpOwor
ICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkKKyAgICAgICAgbV90b3BMYXllci5yZW1vdmUo
cG9zaXRpb24pOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogdm9pZCBE
b2N1bWVudDo6d2Via2l0RXhpdFBvaW50ZXJMb2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNjRiOWYwYWRkYjc5NGMxMTk3M2U4OGVkNGM0MjRkYjMzMjhlMjA5NC4uMGY2ZGM3ZmU4ZDY5
ODc4NTU0YzZlNmYzYzBlYzRlZjJhYTQ4ZmU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEx
NjEsNiArMTE2MSwxMiBAQCBwdWJsaWM6CiAKICAgICBMb2NhbGl6ZXImIGdldExvY2FsaXplcihj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQp
CisgICAgdm9pZCBhZGRUb1RvcExheWVyKEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZUZyb21U
b3BMYXllcihFbGVtZW50Kik7CisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXll
cigpIHsgcmV0dXJuIG1fdG9wTGF5ZXI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgRG9j
dW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCk7CiAK
QEAgLTE0NjEsNiArMTQ2NywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFM
T0dfRUxFTUVOVCkKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gbV90b3BMYXllcjsKKyNl
bmRpZgorCiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudDsKICAgICBUaW1lcjxEb2N1bWVu
dD4gbV9sb2FkRXZlbnREZWxheVRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTE3
NmY4OTc3NTUxODI4YWY5Y2UyZTM3N2MwODNlYjRjZmEyODliYy4uNTk2ZGYwMDUwZDhkNjEzMzk1
MDZlN2VjOGRjZWE2NTRkMjkzNTIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTk2MCw2
ICsxOTYwLDIzIEBAIHZvaWQgRWxlbWVudDo6c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9u
QW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vCiB9CiAjZW5kaWYgICAgCiAKKyNp
ZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIEVsZW1lbnQ6OmlzSW5Ub3BMYXllcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+bV9p
c0luVG9wTGF5ZXIgOiBmYWxzZTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRJc0luVG9wTGF5ZXIo
Ym9vbCBmbGFnKQoreworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5tX2lzSW5Ub3BMYXll
ciA9IGZsYWc7CisgICAgaWYgKGZsYWcpCisgICAgICAgIGRvY3VtZW50KCktPmFkZFRvVG9wTGF5
ZXIodGhpcyk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGcm9tVG9wTGF5
ZXIodGhpcyk7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7
Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIEVsZW1lbnQ6Ondl
YmtpdFJlcXVlc3RQb2ludGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAwY2QyMDlk
ZjgyZDA3NDYzMjZiYTk2NDdkZTJjNDI0ODA2YjZmMGU1Li44NTU5Nzg2ZWE3YTg1Y2YzMmNlNmZi
NzUyMzUzZGQwODU3NGFhNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQxNSw2ICs0MTUsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBpc0luVG9wTGF5
ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBv
aW50ZXJMb2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRl
eCBiNzVhMGJkYTljYjg3NjlmZWYzMTkyOGVkNTE3MTRmZmY0OTg3YzA3Li5mMWZlMjliM2Y4NGVi
YTA1NjUxMzlkMDRmNmEyZjg3MGQ0YTM3OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CiAjZW5kaWYKKwor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIG1faXNJblRvcExheWVyOworI2Vu
ZGlmCiB9OwogCiBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygp
CkBAIC0xMzQsNiArMTM4LDkgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVE
YXRhKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLCBtX2NvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisg
ICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5MGQzNmU4
MzY4OTcxZjMwYzVlOWMzNDYuLjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgzMjkzNzNk
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBAIC01Myw2
ICs1Myw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0
dHIsIGZhbHNlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lkIEhUTUxE
aWFsb2dFbGVtZW50OjpzaG93KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxl
bWVudDo6c2hvd01vZGFsKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNldElzSW5U
b3BMYXllcih0cnVlKTsKIH0KIAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBkYjI3NGZiODQxMmQ2ZWFkNDg2MGFkMmI5NGExZGY5
ZDU1NTgxNTQ0Li5kZDdmMzEzNDM1YzNiOTkzZjAwN2RlYzI0NmEwMTdhMDQ4ZGE0MDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC00NCw3ICs0NCwxMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBoYXNBdXRvWkluZGV4IG9ubHkgcmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50
IGlzIHBvc2l0aW9uZWQgb3IgYSBmbGV4LWl0ZW0gc2luY2UKICAgICAvLyBwb3NpdGlvbjpzdGF0
aWMgZWxlbWVudHMgdGhhdCBhcmUgbm90IGZsZXgtaXRlbXMgZ2V0IHRoZWlyIHotaW5kZXggY29l
cmNlZCB0byBhdXRvLgotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gaXNSb290KCkgfHwgaXNQb3NpdGlvbmVkKCkgfHwgY3JlYXRlc0dyb3Vw
KCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBoYXNUcmFuc2Zvcm0o
KSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLT5z
cGVjaWZpZXNDb2x1bW5zKCkgfHwgIXN0eWxlKCktPmhhc0F1dG9aSW5kZXgoKTsgfQorICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNSb290
KCkgfHwgaXNQb3NpdGlvbmVkKCkgfHwgY3JlYXRlc0dyb3VwKCkgfHwgaGFzQ2xpcFBhdGgoKSB8
fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFj
ZSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCkgfHwg
IXN0eWxlKCktPmhhc0F1dG9aSW5kZXgoKQorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAg
ICAgICAgfHwgKG5vZGUoKSAmJiBub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSgpKS0+aXNJblRvcExheWVyKCkpCisjZW5kaWYKKyAgICAgICAgOyB9CiAKICAgICAvLyBV
c2UgdGhpcyB3aXRoIGNhdXRpb24hIE5vIHR5cGUgY2hlY2tpbmcgaXMgZG9uZSEKICAgICBSZW5k
ZXJCb3gqIGZpcnN0Q2hpbGRCb3goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDc1OTg2MzM1ZWVmNDhiZjQ0YTQzMjcxNmQyYzc5NDE5OWJjNWEw
ZTcuLjJjZWM1OTQ2MTU0OTQzZTRiMWRlZGFlM2JmZDZhYzFmYjA1MzY5OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzUwNyw2ICszNTA3LDE0IEBAIE5v
ZGUqIFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzSW5U
b3BMYXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKTsK
KyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5v
ZGUpLT5pc0luVG9wTGF5ZXIoKTsKK30KKyNlbmRpZgorCiAvLyBDb21wdXRlIHRoZSB6LW9mZnNl
dCBvZiB0aGUgcG9pbnQgaW4gdGhlIHRyYW5zZm9ybVN0YXRlLgogLy8gVGhpcyBpcyBlZmZlY3Rp
dmVseSBwcm9qZWN0aW5nIGEgcmF5IG5vcm1hbCB0byB0aGUgcGxhbmUgb2YgYW5jZXN0b3IsIGZp
bmRpbmcgd2hlcmUgdGhhdAogLy8gcmF5IGludGVyc2VjdHMgdGFyZ2V0LCBhbmQgY29tcHV0aW5n
IHRoZSB6IGRlbHRhIGJldHdlZW4gdGhvc2UgdHdvIHBvaW50cy4KQEAgLTQ1ODgsNiArNDU5Niwx
NiBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogICAgIGlmIChtX25l
Z1pPcmRlckxpc3QpCiAgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9uZWdaT3JkZXJMaXN0LT5i
ZWdpbigpLCBtX25lZ1pPcmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKIAorI2lmIEVO
QUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoaXNSb290TGF5ZXIoKSkgeworICAgICAgICBW
ZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQo
KS0+dG9wTGF5ZXIoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID46Oml0
ZXJhdG9yIGkgPSB0b3BMYXllci5iZWdpbigpOyBpICE9IHRvcExheWVyLmVuZCgpOyArK2kpIHsK
KyAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
KCppKS0+cmVuZGVyZXIoKSktPmxheWVyKCk7CisgICAgICAgICAgICBtX3Bvc1pPcmRlckxpc3Qt
PmFwcGVuZChsYXllcik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG1fek9yZGVy
TGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCkBAIC00NjEyLDYgKzQ2MzAsMTEgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogCiB2b2lkIFJlbmRlckxheWVyOjpjb2xs
ZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgVmVjdG9yPFJlbmRlckxheWVyKj4q
JiBwb3NCdWZmZXIsIFZlY3RvcjxSZW5kZXJMYXllcio+KiYgbmVnQnVmZmVyKQogeworI2lmIEVO
QUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoaXNJblRvcExheWVyKCkpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCiAgICAgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CiAK
ICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3QgcGFpbnRlZCBieSB0aGVpciBlbmNsb3Np
bmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQgaW4gem9yZGVyIGxpc3RzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA5NzBiMTY0M2U3YjllYWI4MjgzNTNk
NDE5OTBjZmMyZWExNGEzOTZlLi43ZTI4ZDc5ODczZWE0M2M5NDZkMTYzMjc2MmE5ODFmNDdmMmVh
MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjgwLDYgKzY4
MCwxMCBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBlbmNsb3NpbmdFbGVtZW50KCkgY29uc3Q7CiAK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25z
dDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMoKTsKICAg
ICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpAQCAtNjg3LDcgKzY5MSwxNCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogCi0gICAgYm9vbCBpc1N0YWNr
aW5nQ29udGV4dChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0IHsgcmV0dXJuICFzdHls
ZS0+aGFzQXV0b1pJbmRleCgpIHx8IGlzUm9vdExheWVyKCk7IH0KKyAgICBib29sIGlzU3RhY2tp
bmdDb250ZXh0KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhc3R5bGUtPmhhc0F1dG9aSW5kZXgoKQorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKKyAgICAgICAgICAgIHx8IGlzSW5Ub3BMYXllcigpCisjZW5kaWYKKyAgICAgICAgICAgIHx8
IGlzUm9vdExheWVyKCk7CisgICAgfQogICAgIGJvb2wgaXNEaXJ0eVN0YWNraW5nQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fek9yZGVyTGlzdHNEaXJ0eSAmJiBpc1N0YWNraW5nQ29udGV4dCgp
OyB9CiAKICAgICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNTZWxmUGFpbnRpbmdMYXllckRlc2Nl
bmRhbnQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA2YWQ2YzU5ZTc0MDgyZDMyMDA3OGU3NWE4NjdlMDUwYWZjZmFhMzJm
Li5jMmQxZjdhNGIxZWUwZDM5NWE3OWQ3MmU4OWUyZTk1NDc1ZWJiNzdjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMDktMjcgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbmV3IHN0YWNraW5nIGxheWVyIG5lZWRlZCBi
eSB0aGUgRnVsbHNjcmVlbiBBUEkgYW5kIHRoZSBuZXcgPGRpYWxvZz4gZWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQg
dGhlIHRvcCBsYXllciBpcyBhYm92ZSB6LWluZGV4IHN0YWNraW5nIGNvbnRleHRzIGFuZAorICAg
ICAgICBlbGVtZW50cyBpbiB0aGUgdG9wIGxheWVyIGFyZSBzdGFja2VkIGluIHRoZSBvcmRlciB0
aGV5IHdlcmUgYWRkZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90
b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTA5LTI2ICBNaWtlIFJlZWQgIDxyZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAgdXBkYXRl
IGV4cGVjdGF0aW9ucyBmb3IgZmVUaWxlLnN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tp
bmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTI3ZmI0NWEyNDYwMDBkZmNkYTU2ZTEyYTM3
OTVjMzA4YzJkNDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSw0MSBAQAorPGh0bWw+Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBoZWlnaHQ6IDE1MHB4
OworICAgIHdpZHRoOiAxNTBweDsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1MDBweDsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7
Cit9CisudHJhbnNmb3JtZWQgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4
OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDYwZGVnKTsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOworfQorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6
IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBj
b2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0icHNldWRv
ZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDE0MHB4OyB6LWluZGV4OjMwMDAi
PgorICAgICAgICBUaGlzIHdoaXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0
IHNob3VsZCBiZSBvbiB0b3Agb2YgZXZlcnl0aGluZy4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+PC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0
b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogNzUlOyBoZWlnaHQ6IDQw
MHB4OyB6LWluZGV4OjIwMDAiPgorICAgICAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEgbW9k
YWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVsbG93
IHJlY3RhbmdsZXMuCisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1lZCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAxMDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5k
LWNvbG9yOiB5ZWxsb3c7IHotaW5kZXg6MTAwMCI+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90
b3AtbGF5ZXItc3RhY2tpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ODE2MmI0YTc1MDQw
MTM1MmY0NjcxMGZjN2Q2NWU5NjA1MTJhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApAQCAt
MCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVl
KTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmNvbnRhaW5lciB7CisgICAgaGVpZ2h0OiAxNTBweDsK
KyAgICB3aWR0aDogMTUwcHg7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOwor
fQorLnRyYW5zZm9ybWVkIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsK
KyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSg2MGRlZyk7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGlhbG9nIGlk
PSJ5IiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDE0MHB4Ij4KKyAgICAgICAgVGhpcyB3
aGl0ZSBib3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgb24gdG9w
IG9mIGV2ZXJ5dGhpbmcuCisgICAgPC9kaWFsb2c+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBs
ZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPgorICAgICAgICA8ZGlhbG9nIGlkPSJ4
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyB3aWR0aDogNzUlOyBoZWlnaHQ6IDQwMHB4Ij4KKyAgICAgICAgICAgIFRoaXMgZ3Jl
ZW4gYm94IGlzIGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSByZW5kZXJlZCBhYm92
ZSB0aGUgcmVkIGFuZCB5ZWxsb3cgcmVjdGFuZ2xlcy4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNvbnRhaW5lciI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3JtZWQiPjwv
ZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4i
PlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwvZGl2PgorICAgICAgICA8L2RpYWxv
Zz4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MTAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVpZ2h0OiAyMDBlbTsgYmFja2dyb3VuZC1j
b2xvcjogeWVsbG93OyB6LWluZGV4OjEwMDAiPgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4Jykuc2hvd01vZGFsKCk7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5Jykuc2hvd01vZGFsKCk7CisgICAgPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168181</attachid>
            <date>2012-10-11 02:48:50 -0700</date>
            <delta_ts>2012-10-15 02:59:37 -0700</delta_ts>
            <desc>represent top layer in render tree as well</desc>
            <filename>bug-84796-20121011184748.patch</filename>
            <type>text/plain</type>
            <size>28187</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEzNDU0YmM5YzllMWVi
OWEyMDI3NzUwMDM1OWEzMTFmNjgwNzYwZi4uNDYzY2NlNWJkOTFiY2FhNmVlZjFlNTYzM2U5MDc3
MTMxNTZiYzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTEwLTExICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcCBsYXllcgorICAgICAgICBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3IGluCisgICAgICAgIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZSBj
b250YWluaW5nCisgICAgICAgIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrLiAgSXQKKyAgICAgICAgYWxzbyBhbGxvd3Mg
UmVuZGVyTGF5ZXIgdG8ga25vdyB0aGUgcHJvcGVyIHN0YWNraW5nIG9yZGVyIG9mIHRoZSBsYXll
cnMKKyAgICAgICAgd2l0aG91dCBnb2luZyBkaXJlY3RseSBmcm9tIHRoZSB0b3AgbGF5ZXIgZWxl
bWVudHMgdG8gdGhlaXIgbGF5ZXJzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXIt
c3RhY2tpbmcuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRq
dXN0UmVuZGVyU3R5bGUpOiBFbGVtZW50cyBpbiB0aGUgdG9wIGxheWVyIGhhdmUgYSBzdGFja2lu
ZyBjb250ZXh0LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRUb1RvcExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVGcm9tVG9wTGF5ZXIpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnRvcExheWVyRWxlbWVudHMpOiBBZGQgdGhlIHRvcCBsYXllciBlbGVtZW50IHN0YWNrIHRv
IERvY3VtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldElzSW5Ub3BMYXllcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAg
ICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6
Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFy
ZURhdGE6OnNldElzSW5Ub3BMYXllcik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJl
bmRlcmVySWZOZWVkZWQpOiBBZGQgcmVuZGVyZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYXMg
Y2hpbGRyZW4gb2YKKyAgICAgICAgUmVuZGVyVmlldywgYW5kIGluIHRvcCBsYXllciBzdGFja2lu
ZyBvcmRlci4KKyAgICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEaWFsb2dFbGVtZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRGlhbG9nRWxlbWVudDo6c2hvd01vZGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1
aWxkWk9yZGVyTGlzdHMpOiBBZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5
ZXIgY29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5
ZXJzKTogQXZvaWQgYWRkaW5nIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGR1cmluZyBu
b3JtYWwgbGF5ZXIgY29sbGVjdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKwogMjAxMi0xMC0xMCAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzA5
MzcsIHIxMzA5NDksIHIxMzA5NTUsIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlOTk2OGIx
OGUxNmNlOTYxZTI2M2Y3NTU5OGQwYzQxNDFjZDM5Njk5Li5mNTEyNzg1Y2ViMTJiZWQwNjUzNTFj
NTBhZjQxMWY2ZTE5ZmM2Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE1MCw2ICsyMTUw
LDEwIEBAIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmFubm90YXRlZFJlZ2lvbnNFdgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzNDFzZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZUViCiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK19fWk5LN1dlYkNvcmUx
MVJlbmRlckxheWVyMTJpc0luVG9wTGF5ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJL
TlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFTlNfMTNEcmFnT3BlcmF0aW9uRQogX19aTks3V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMTdldmVudE1heVN0YXJ0RHJhZ0VSS05TXzE4UGxhdGZvcm1Nb3VzZUV2
ZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDJkOWNjZDU5ZGE1YzJk
NTRiNmEyNGFmYzcyMWFlMmMwODliZDdlNmMuLjNjZmZmZmE0ZGQ0ZjUxODJhMjViYTQzMGQ4YmIz
MDJlYzA4YjU0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5NDMs
NiArMTk0Myw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5CiAgICAgICAgIC8vIFRvdWNoIG92
ZXJmbG93IHNjcm9sbGluZyBjcmVhdGVzIGEgc3RhY2tpbmcgY29udGV4dC4KICAgICAgICAgfHwg
KChzdHlsZS0+b3ZlcmZsb3dYKCkgIT0gT0hJRERFTiB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgIT0g
T0hJRERFTikgJiYgc3R5bGUtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAgICAgfHwgKGUgJiYgZS0+aXNJblRvcExh
eWVyKCkpCisjZW5kaWYKICAgICAgICAgKSkKICAgICAgICAgc3R5bGUtPnNldFpJbmRleCgwKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNmM5Nzc3N2NiOGQ0Njg3ZmZhZDI5NWZhMTEw
NzM5NmRiYmEwODhlZS4uMTg1ZTlmZjg0ZTgxNWQwOWNlODM5YjI2YWYyNGIyNDkwNmI0YzQ4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NDk1LDYgKzU0OTUsMjEgQEAgdm9pZCBEb2N1
bWVudDo6YWRkRG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFuZ2VFdmVudFF1ZXVlKERvY3VtZW50KiBk
b2MpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK3ZvaWQgRG9jdW1l
bnQ6OmFkZFRvVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1fdG9w
TGF5ZXIuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fdG9wTGF5ZXIuYXBwZW5kKGVsZW1lbnQp
OworfQorCit2b2lkIERvY3VtZW50OjpyZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICBBU1NFUlQobV90b3BMYXllci5jb250YWlucyhlbGVtZW50KSk7CisgICAgc2l6
ZV90IHBvc2l0aW9uID0gbV90b3BMYXllci5maW5kKGVsZW1lbnQpOworICAgIG1fdG9wTGF5ZXIu
cmVtb3ZlKHBvc2l0aW9uKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
IHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRQb2ludGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDVkZjViNmNhZTk3Y2MyMTYxZTQ4NTg1NGFmYjhhY2JiZmRhMGM2MmEuLmFkOTU0
ZjdmYzJiNWUxMjgyZDU4NzljNDJlYzdjYjdlYzI4NTMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMTU5LDYgKzExNTksMTIgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBhIExvY2FsaXpl
ciBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVudCBpcyBudWxsIG9yIGVtcHR5
LgogICAgIExvY2FsaXplciYgZ2V0Q2FjaGVkTG9jYWxpemVyKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlID0gbnVsbEF0b20pOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHZv
aWQgYWRkVG9Ub3BMYXllcihFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVGcm9tVG9wTGF5ZXIo
RWxlbWVudCopOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50
cygpIHsgcmV0dXJuIG1fdG9wTGF5ZXI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgRG9j
dW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCk7CiAK
QEAgLTE0NTcsNiArMTQ2MywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFM
T0dfRUxFTUVOVCkKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gbV90b3BMYXllcjsKKyNl
bmRpZgorCiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudDsKICAgICBUaW1lcjxEb2N1bWVu
dD4gbV9sb2FkRXZlbnREZWxheVRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZGQx
MzE2OGQ5YzZkMjU5NGVmNzg0ZWM3YzMyYmNmNGUzYTM4ODdmYy4uZjk1NDRiZjRmY2E1N2VkNjc5
YmUwZTBhZWJiNmI4ODlkNzY4MjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTcyLDYg
Kzk3Miw5IEBAIHN0YXRpYyBpbmxpbmUgVHJlZVNjb3BlKiB0cmVlU2NvcGVPZlBhcmVudChOb2Rl
KiBub2RlLCBDb250YWluZXJOb2RlKiBpbnNlcnRpb25QCiAKIHZvaWQgRWxlbWVudDo6cmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CisjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQorICAgIHNldElzSW5Ub3BMYXllcihmYWxzZSk7CisjZW5kaWYKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkK
ICAgICAgICAgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdG
cmFtZUJvdW5kYXJpZXMoZmFsc2UpOwpAQCAtMTk2OCw2ICsxOTcxLDI1IEBAIHZvaWQgRWxlbWVu
dDo6c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJv
dW5kYXJpZXMoYm9vCiB9CiAjZW5kaWYgICAgCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQp
Citib29sIEVsZW1lbnQ6OmlzSW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+aXNJblRvcExheWVyKCkgOiBmYWxzZTsKK30K
Kwordm9pZCBFbGVtZW50OjpzZXRJc0luVG9wTGF5ZXIoYm9vbCBmbGFnKQoreworICAgIGlmIChp
c0luVG9wTGF5ZXIoKSA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldElzSW5Ub3BMYXllcihmbGFnKTsKKyAgICBpZiAoZmxhZykKKyAgICAg
ICAgZG9jdW1lbnQoKS0+YWRkVG9Ub3BMYXllcih0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGRv
Y3VtZW50KCktPnJlbW92ZUZyb21Ub3BMYXllcih0aGlzKTsKKyAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGM3MDg3NzViYTM2OGNlZjc3ZTE3ZmEyZmI3Mjk2YzUzMTQxYmU4
NmIuLjNiNjNlNmQ1YjExMWM3NGE0MjIwODE2MjAxZjk1ZTAwOTI4M2QzNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtNDE3LDYgKzQxNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1
ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisg
ICAgdmlydHVhbCBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0luVG9wTGF5ZXIoYm9vbCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGI0YmM4ZTJlOTliM2FmNGJjMGQxMzE5YzJkNWYw
MzJlNDNiYjVmZmYuLmZkMjBkNGNmMjI3NzI5YmI3OTE2ZTE0N2RlYzBkYTM2ZTQxMzU3MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTUzLDYgKzUzLDEwIEBAIHB1Ymxp
YzoKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CiAg
ICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OwogI2Vu
ZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6
aXNJblRvcExheWVyOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJblRvcExheWVyOwor
I2VuZGlmCiAKICAgICBib29sIGhhc0NhY2hlZEhUTUxDb2xsZWN0aW9ucygpIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDViM2E1ODNiMGQyMjllOGRiZWJlZTIx
Y2Q2NDJkYzJjNzcwZjM0NDIuLjQ4MDdkOGZmNjMxYzQ1OGI3YjIxMmM1Njk2YTA0MWUxNDdmNzgy
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE5MSw2ICsxOTEsOSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAsIG1fY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
KyAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICB9CiAK
QEAgLTMyMCw2ICszMjMsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgY29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAg
IHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSB7IHJldHVybiBtX2lzSW5Ub3BMYXll
cjsgfQorICAgIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wgdmFsdWUpIHsgbV9pc0luVG9wTGF5
ZXIgPSB2YWx1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVT
Y29wZTsKQEAgLTMzNCw2ICszNDEsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBtX2lzSW5Ub3BMYXllciA6IDE7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgT3duUHRyPFZl
Y3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiA+IG1fbXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggMjFmMWMzZjg5OWZiMDkzZmJmZmI4MjQ2MWFjMWUwYzViNTNhODE5ZC4uNjAx
ODIzYzgzNmE5MzA3MzNiMTJjMTBjYTViMjYyZWMzOWUxOGI0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNDksNiArMjQ5LDI4IEBAIHZvaWQg
Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAgICAgLy8gRG8g
bm90IGNhbGwgbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUgaW4gdGhlIGZpcnN0IGNsYXVz
ZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUKICAgICAvLyB0aGUgcmVuZGVyZXIgYWRkZWQg
dG8gaXRzIHBhcmVudCBhbHJlYWR5LgogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyID0g
bV9jb250ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSA/IG1fY29udGV4dC5wYXJlbnRGbG93UmVu
ZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9kZShub2RlKSA6IG1fY29udGV4dC5uZXh0UmVuZGVy
ZXIoKTsKKworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoZWxlbWVudCAmJiBl
bGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVu
dFJlbmRlcmVyLT52aWV3KCk7CisgICAgICAgIG5leHRSZW5kZXJlciA9IDA7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50cyA9IGRvY3VtZW50LT50b3BM
YXllckVsZW1lbnRzKCk7CisgICAgICAgIHNpemVfdCB0b3BMYXllclBvc2l0aW9uID0gdG9wTGF5
ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgICAgICBBU1NFUlQodG9wTGF5ZXJQb3NpdGlv
biAhPSBub3RGb3VuZCk7CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHBhcmVu
dFJlbmRlcmVyLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSBjaGlsZC0+bm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkgOiAwOworICAgICAg
ICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7
CisgICAgICAgICAgICAgICAgc2l6ZV90IGNoaWxkVG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVy
RWxlbWVudHMuZmluZChjaGlsZEVsZW1lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChjaGls
ZFRvcExheWVyUG9zaXRpb24gIT0gbm90Rm91bmQpOworICAgICAgICAgICAgICAgIGlmICh0b3BM
YXllclBvc2l0aW9uIDwgY2hpbGRUb3BMYXllclBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgIG5leHRSZW5kZXJlciA9IGNoaWxkOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
KwogICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcigpOwogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dF
bGVtZW50LmNwcAppbmRleCA3ZDRkNjQ1MWJlM2E5OWY2OTBkMzZlODM2ODk3MWYzMGM1ZTljMzQ2
Li4yOTUwZmJhNmIyZTVlY2Y1Y2ZhOTJmOWVlODdiM2M4MzI5MzczZDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcApAQCAtNTMsNiArNTMsNyBAQCB2b2lkIEhU
TUxEaWFsb2dFbGVtZW50OjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBzZXRCb29sZWFuQXR0cmlidXRlKG9wZW5BdHRyLCBmYWxzZSk7CisgICAg
c2V0SXNJblRvcExheWVyKGZhbHNlKTsKIH0KIAogdm9pZCBIVE1MRGlhbG9nRWxlbWVudDo6c2hv
dygpCkBAIC02OSw2ICs3MCw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OnNob3dNb2RhbChF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRCb29sZWFu
QXR0cmlidXRlKG9wZW5BdHRyLCB0cnVlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIodHJ1ZSk7CiB9
CiAKIGJvb2wgSFRNTERpYWxvZ0VsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCAzZDE5M2M4ZTg4NjU0NmViOTAyODA3YWMzYjM5MTg4M2E3YTUxNTZl
Li5kYWU1MzY3ZDRkOWRiODVjZWI3MmRhNzBmYTU1MTY3ZWM1Mjc2M2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM1MzIsNiArMzUzMiwxNCBAQCBOb2Rl
KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIFJlbmRlckxheWVyOjppc0luVG9w
TGF5ZXIoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlcigpLT5ub2RlKCk7Cisg
ICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2Rl
KS0+aXNJblRvcExheWVyKCk7Cit9CisjZW5kaWYKKwogLy8gQ29tcHV0ZSB0aGUgei1vZmZzZXQg
b2YgdGhlIHBvaW50IGluIHRoZSB0cmFuc2Zvcm1TdGF0ZS4KIC8vIFRoaXMgaXMgZWZmZWN0aXZl
bHkgcHJvamVjdGluZyBhIHJheSBub3JtYWwgdG8gdGhlIHBsYW5lIG9mIGFuY2VzdG9yLCBmaW5k
aW5nIHdoZXJlIHRoYXQKIC8vIHJheSBpbnRlcnNlY3RzIHRhcmdldCwgYW5kIGNvbXB1dGluZyB0
aGUgeiBkZWx0YSBiZXR3ZWVuIHRob3NlIHR3byBwb2ludHMuCkBAIC00NjEzLDYgKzQ2MjEsMTkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICBpZiAobV9uZWda
T3JkZXJMaXN0KQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9yZGVyTGlzdC0+YmVn
aW4oKSwgbV9uZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKKyNpZiBFTkFC
TEUoRElBTE9HX0VMRU1FTlQpCisgICAgaWYgKGlzUm9vdExheWVyKCkpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOworICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSB2aWV3LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSBj
aGlsZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkg
OiAwOworICAgICAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQtPmlzSW5U
b3BMYXllcigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChjaGlsZCktPmxheWVyKCk7CisgICAgICAgICAgICAgICAgbV9wb3Na
T3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorI2VuZGlmCisKICAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtNDYz
Nyw2ICs0NjU4LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkK
IAogdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXll
cnMsIFZlY3RvcjxSZW5kZXJMYXllcio+KiYgcG9zQnVmZmVyLCBWZWN0b3I8UmVuZGVyTGF5ZXIq
PiomIG5lZ0J1ZmZlcikKIHsKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgaWYgKGlz
SW5Ub3BMYXllcigpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHVwZGF0ZURlc2Nl
bmRhbnREZXBlbmRlbnRGbGFncygpOwogCiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFyZSBqdXN0
IHBhaW50ZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBnZXQgcHV0
IGluIHpvcmRlciBsaXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5k
ZXggYzNkYjk2ZDFkZWQ2NTYwZjllYTQxZTYzZDgwNTdiODFjODllOGIzYi4uNzgxYjk4OWM1MTM2
YzIxMTAwOTc2ZTg3NTg4ZDIyZGNmYzZjZjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKQEAgLTY4MCw2ICs2ODAsMTAgQEAgcHVibGljOgogCiAgICAgTm9kZSogZW5j
bG9zaW5nRWxlbWVudCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAg
IGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBhNTg5ZjEyMjA1NzRlODRiZTg3YzI0Y2VlMzlmMTdjY2Q5NjFhOWY5Li4zZjUxMzRlYTRk
ZGYxMmRhN2QzNjQ5YjNmODQ0MjhhNTM3Nzc2MjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMTAtMTEgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEltcGxlbWVudCB0aGUgbmV3IHN0YWNraW5nIGxheWVyIG5lZWRlZCBieSB0aGUgRnVsbHNj
cmVlbiBBUEkgYW5kIHRoZSBuZXcgPGRpYWxvZz4gZWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIHRvcCBsYXllciBzdGFj
a2luZyBhbmQgcmVuZGVyaW5nLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxv
Y2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVy
LXN0YWNraW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0x
MCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoaXMgdGVzdCBj
YW4gYWxzbyBmYWlsIHdpdGggVEVYVC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29u
dGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNzZhYmZkMTZlODYzOTVj
NzJiODQxZjIwNzgzNGZkYjI0OWUyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorPC9z
Y3JpcHQ+Cis8c3R5bGU+CisucHNldWRvZGlhbG9nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRlcjog
c29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIGNv
bG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNz
PSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWln
aHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPgorICAgICAgICBUaGlzIG1vZGFs
IGRpYWxvZyBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gSXQg
aXMgdGhlIGNoaWxkIG9mIGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYgc2NyZWVuLCBidXQgdGhl
IGNvbnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBpcyB0aGUgaW5pdGlhbCBj
b250YWluaW5nIGJsb2NrLgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxv
ZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA3MHB4OyBsZWZ0OiAwcHg7IGhlaWdo
dDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICAgICAgVGhpcyBtb2Rh
bCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZs
b3cuIEl0IHNob3VsZCBub3QgYmUgY2xpcHBlZC4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVp
Z2h0OiAxNTBweDsgdG9wOiA2MDBweDsgbGVmdDogNTAwcHgiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWln
aHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAg
ICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5j
ZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIGJlIGNsaXBwZWQuCisgICAgICAgIDwvZGl2
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBt
YWdlbnRhIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQg
YnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNjAwcHg7IG9wYWNpdHk6IDAuMyI+CisgICAgICAg
IDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YSI+CisgICAgICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVj
dGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgICAgIDwvZGlhbG9nPgorICAg
IDwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5p
bmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2ZlNGVmNjBjZjFlNDY2NTY3MWRkZTRmZjNiNzg4
NDI0YmM2N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbApAQCAtMCwwICsxLDM4
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDYwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAgICAgICA8ZGlhbG9nIGlkPSJ6IiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IG1hZ2VudGEiPgorICAgICAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJl
IHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICAgICAgPC9kaWFs
b2c+CisgICAgICAgIDxkaWFsb2cgaWQ9ImEiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG1h
Z2VudGEiPgorICAgICAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZl
Y3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgICAgICA8L2RpYWxvZz4KKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBo
aWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0OiAxNTBweDsgdG9wOiA2MDBweDsgbGVmdDogNTAw
cHgiPgorICAgICAgICA8ZGlhbG9nIGlkPSJ5IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0
b3A6IDcwcHg7IGxlZnQ6IDBweDsgaGVpZ2h0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lh
biI+CisgICAgICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBi
eSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgor
ICAgICAgICA8L2RpYWxvZz4KKyAgICAgICAgPGRpYWxvZyBpZD0iYiIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hv
dWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQg
YmUgY2xpcHBlZC4KKyAgICAgICAgPC9kaWFsb2c+CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMDBweDsgbGVmdDogMTAwMHB4Ij4KKyAgICAg
ICAgPGRpYWxvZyBpZD0ieCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhl
aWdodDogNTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyI+CisgICAgICAgICAgICBUaGlz
IG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVl
bi4gSXQgaXMgdGhlIGNoaWxkIG9mIGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYgc2NyZWVuLCBi
dXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBpcyB0aGUgaW5p
dGlhbCBjb250YWluaW5nIGJsb2NrLgorICAgICAgICA8L2RpYWxvZz4KKyAgICA8L2Rpdj4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneCcpLnNob3dNb2Rh
bCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneScpLnNob3dNb2RhbCgpOwor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneicpLnNob3dNb2RhbCgpOworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYScpLnNob3coKTsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90
b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZWVjZmVjMWE3NjRiNjhhMTkxN2FkNGNmNDQ3NzhiYzgxZmU4
MTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0Vs
ZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwv
c2NyaXB0PgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7IHJp
Z2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkOworICAgIHBhZGRp
bmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGUgc3RhY2tpbmcgb3JkZXIgc2hvdWxkIGJlOiB5
ZWxsb3csIG1hZ2VudGEsIGdyZWVuLCBjeWFuIChjbG9zZXN0IHRvIHVzZXIpCisgICAgPGRpdiBj
bGFzcz0icHNldWRvZGlhbG9nIiBpZD0iYSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij48L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJkIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDE1MHB4OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9k
aXY+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0iZSIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJiIiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGxlZnQ6IDUwcHg7IGJhY2tncm91bmQtY29s
b3I6IGN5YW4iPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1z
dGFja2luZy1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY0MjRkNTYyMzg4NmJlN2M1YTQxNmU1
MzE1OWJhMDcxOWQ1YjlhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFs
cykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7
Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3
aWR0aDogMTUwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGUgc3RhY2tpbmcg
b3JkZXIgc2hvdWxkIGJlOiB5ZWxsb3csIG1hZ2VudGEsIGdyZWVuLCBjeWFuIChjbG9zZXN0IHRv
IHVzZXIpCisgICAgPGRpYWxvZyBpZD0iYSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwcHg7IGxlZnQ6IDBweDsgZGlzcGxheTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93
Ij48L2RpYWxvZz4KKyAgICA8ZGlhbG9nIGlkPSJiIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDUwcHg7IGxlZnQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPjwvZGlhbG9n
PgorICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaWFsb2cgaWQ9ImMiIHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4Ij48L2RpYWxvZz4K
KyAgICA8L2Rpdj4KKyAgICA8ZGlhbG9nIGlkPSJkIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDE1MHB4OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9k
aWFsb2c+CisgICAgPGRpYWxvZyBpZD0iZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAyMDBweDsgbGVmdDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2RpYWxvZz4K
KyAgICA8ZGlhbG9nIGlkPSJmIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDI1MHB4
OyBsZWZ0OiAyNTBweCI+ZjwvZGlhbG9nPgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBmID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKTsKKyAgICAgICAgZi5zaG93TW9kYWwoKTsKKyAg
ICAgICAgZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYScpLnNob3dNb2RhbCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYicpLnNob3dNb2RhbCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YycpLnNob3dNb2RhbCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZCcpLnNo
b3dNb2RhbCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpLnNob3dNb2Rh
bCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLmNsb3NlKCk7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJykuc2hvd01vZGFsKCk7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0g
J25vbmUnOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3At
bGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTI5MGIzYmE3MWYzMjll
YTM3MjcyNDQyN2I4NTI3Mjk1NTNjZjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+Cis8c3R5bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6
IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKy5jb250YWluZXIgeworICAgIC13ZWJraXQt
cGVyc3BlY3RpdmU6IDUwMHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJh
Y2tncm91bmQtY29sb3I6IG1hZ2VudGE7Cit9CisudHJhbnNmb3JtZWQgeworICAgIC13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGVZKDQ1ZGVnKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuOwor
fQorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7
IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkOworICAgIHBh
ZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9
Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0i
cG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IHotaW5kZXg6MzAwMCI+CisgICAgICAgIFRoaXMg
d2hpdGUgYm94IGlzIHRoZSB0b3Btb3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIG9uIHRv
cCBvZiBldmVyeXRoaW5nLgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgbGVm
dDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJw
c2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAwcHg7IHotaW5kZXg6MjAw
MCI+CisgICAgICAgIFRoaXMgZ3JlZW4gYm94IGlzIGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNo
b3VsZCBiZSByZW5kZXJlZCBhYm92ZSB0aGUgcmVkIGFuZCB5ZWxsb3cgcmVnaW9ucy4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJveCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
cmFuc2Zvcm1lZCBib3giPkEgdHJhbnNmb3JtIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNvbG9y
OiBjeWFuIj4KKyAgICAgICAgICAgIFRoaXMgc2hvd3Mgei1pbmRleCBzdGFja2luZyB3aXRoaW4g
dGhlIGRpYWxvZydzIHN1YnRyZWUuIFRoZSBjeWFuIGJveCBzaG91bGQgYmUgb24gdG9wIG9mIHRo
ZSBtYWdlbnRhIG9uZS4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5kZXg6
IDE7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwvZGl2PgorICAgIDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVm
dDogMHB4OyByaWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7IHotaW5kZXg6MTAwMCI+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3Rh
Y2tpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1zdGFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ZThiZGI4MGJkZjkzNmQzZmRjMjJhYWZk
MTU1MWYzMWIzNWNhMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0
PgorPHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0OjE1MHB4OworICAgIHdpZHRoOjE1MHB4Owor
fQorLmNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YTsKK30K
Ky50cmFuc2Zvcm1lZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoNDVkZWcpOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IGN5YW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpYWxvZyBpZD0ieiIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPlRoaXMgc2hvdWxkIG5v
dCBiZSBkaXNwbGF5ZWQuPC9kaWFsb2c+CisgICAgPGRpYWxvZyBpZD0ieSIgc3R5bGU9InBvc2l0
aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OiAtMTAiPgorICAgICAgICBUaGlzIHdoaXRl
IGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSBvbiB0b3Agb2Yg
ZXZlcnl0aGluZy4KKyAgICA8L2RpYWxvZz4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGxlZnQ6
IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+CisgICAgICAgIDxkaWFsb2cgaWQ9IngiIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAwcHgiPgorICAgICAgICAgICAgVGhpcyBncmVlbiBi
b3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFib3ZlIHRo
ZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFp
bmVyIGJveCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3JtZWQgYm94Ij5B
IHRyYW5zZm9ybSB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+CisgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4K
KyAgICAgICAgICAgICAgICBUaGlzIHNob3dzIHotaW5kZXggc3RhY2tpbmcgd2l0aGluIHRoZSBk
aWFsb2cncyBzdWJ0cmVlLiBUaGUgY3lhbiBib3ggc2hvdWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFn
ZW50YSBvbmUuCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJv
eCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5k
ZXg6IDE7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRpYWxvZy48L2Rpdj4K
KyAgICAgICAgPC9kaWFsb2c+CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAw
ZW07IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDoxMDAwIj4KKyAgICA8L2Rpdj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneCcpLnNob3dN
b2RhbCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneScpLnNob3dNb2RhbCgp
OworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneicpLnNob3dNb2RhbCgpOworICAg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168661</attachid>
            <date>2012-10-15 02:59:41 -0700</date>
            <delta_ts>2012-10-22 02:38:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84796-20121015185832.patch</filename>
            <type>text/plain</type>
            <size>29006</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwMjc0MTZkOGM4ZTQ1
NjU0ODkyOTdhNjA3NzgyZjNkZmI4M2YzZS4uZDU3OGFhYTc1M2FlMmYxNDgyODYwOTNlMmYxMmE2
NTMyYzg2ZTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTEwLTE1ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcAorICAgICAgICBsYXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQor
ICAgICAgICBjb250YWluaW5nIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbAorICAgICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBS
ZW5kZXJMYXllciB0byBrbm93IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2Yg
dGhlIGxheWVycyB3aXRob3V0IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAg
ICAgICBlbGVtZW50cyB0byB0aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1v
ZGFsIGRpYWxvZyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAg
ICAgVGhlIHBsYW4gaXMgdG8gbWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRv
cCBsYXllci4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXllckVs
ZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9wTGF5
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZVJh
cmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6
CisgICAgICAgIChOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRh
Ojppc0luVG9wTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0lu
VG9wTGF5ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KTogQWRkIHJlbmRlcmVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFzIGNoaWxkcmVuIG9mIFJl
bmRlclZpZXcsIGFuZCBpbiB0b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgICAgICogaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxl
bWVudDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OnNob3dN
b2RhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKTogQWRkIHRo
ZSB0b3AgbGF5ZXIgc3RhY2sgYWZ0ZXIgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyk6IEF2b2lkIGFkZGluZyBsYXll
cnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBkdXJpbmcgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXll
cik6CisKIDIwMTItMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IEdyYXBoaWNzTGF5ZXJDQSB2aXNpYmxlIHJlY3QgY29tcHV0YXRpb24g
aW4gdGhlIGZhY2Ugb2YgcGVyc3BlY3RpdmUgYW5kIHByZXNlcnZlLTNkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDQwMmUyNjUwZjlmZjZjNjYwYWRmYjcwNzhhZDY2Yjk0ODk3MWJlMTYuLmE1ZDU5
MjM1ZWIxNjhiYjI4MjE4NzRjODM4ZjRiMWZjYzMwYjhkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0yMTY3LDYgKzIxNjcsMTAgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDE2YW5ub3RhdGVk
UmVnaW9uc0V2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MXNldFVzZXNEYXNoYm9hcmRCYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlRWIKICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQorX19aTks3V2ViQ29yZTExUmVuZGVyTGF5ZXIxMmlzSW5Ub3BMYXllckV2CisjZW5kaWYKKwog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3ZHJh
Z1NvdXJjZUVuZGVkQXRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEVOU18xM0RyYWdPcGVyYXRp
b25FCiBfX1pOSzdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2V2ZW50TWF5U3RhcnREcmFnRVJLTlNf
MThQbGF0Zm9ybU1vdXNlRXZlbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggMDBlZDI1MGUzNTIxODRjZDUwMDAyYzY4N2VlNDMyOWVlMWE5YTgxMi4uMDBlNDhkZjBhNDQ1
MDUwMmM5NDdhMTE3YTg3NjBiODdjMGY4ZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMTk1OSw2ICsxOTU5LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RS
ZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHkKICAg
ICAgICAgLy8gVG91Y2ggb3ZlcmZsb3cgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFja2luZyBjb250
ZXh0LgogICAgICAgICB8fCAoKHN0eWxlLT5vdmVyZmxvd1goKSAhPSBPSElEREVOIHx8IHN0eWxl
LT5vdmVyZmxvd1koKSAhPSBPSElEREVOKSAmJiBzdHlsZS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9s
bGluZygpKQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgICAgICB8fCAo
ZSAmJiBlLT5pc0luVG9wTGF5ZXIoKSkKKyNlbmRpZgogICAgICAgICApKQogICAgICAgICBzdHls
ZS0+c2V0WkluZGV4KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NzE0MjM1ODE3
MDA2YjY1NjI0NWFkM2IxZTA0MTJjODU1ZTRlMGY3Li44MTk4NTYwYzNiMmI0MDVlYWNmNDg1Nzgx
MTg2ZGMxMDIzYzIzZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1MDEsNiArNTUw
MSwyMSBAQCB2b2lkIERvY3VtZW50OjphZGREb2N1bWVudFRvRnVsbFNjcmVlbkNoYW5nZUV2ZW50
UXVldWUoRG9jdW1lbnQqIGRvYykKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQordm9pZCBEb2N1bWVudDo6YWRkVG9Ub3BMYXllcihFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIEFTU0VSVCghbV90b3BMYXllckVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBt
X3RvcExheWVyRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworfQorCit2b2lkIERvY3VtZW50Ojpy
ZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQobV90b3BM
YXllckVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBzaXplX3QgcG9zaXRpb24gPSBt
X3RvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKKyAgICBtX3RvcExheWVyRWxlbWVudHMu
cmVtb3ZlKHBvc2l0aW9uKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
IHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRQb2ludGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDM1ZGY3YTJlNThjMWFkNmU2OGZhMzY2ZjUxYmU4ZjlkOTk5YmMyMzAuLjc5Zjll
ZWVhYTM5MDlmM2Q4NzQ5NDIwYWI3NTEzOTE2NWUwZDMxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMTU5LDYgKzExNTksMTIgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBhIExvY2FsaXpl
ciBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVudCBpcyBudWxsIG9yIGVtcHR5
LgogICAgIExvY2FsaXplciYgZ2V0Q2FjaGVkTG9jYWxpemVyKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlID0gbnVsbEF0b20pOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHZv
aWQgYWRkVG9Ub3BMYXllcihFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVGcm9tVG9wTGF5ZXIo
RWxlbWVudCopOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50
cygpIHsgcmV0dXJuIG1fdG9wTGF5ZXJFbGVtZW50czsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wgaXNI
VE1MKTsKIApAQCAtMTQ1Nyw2ICsxNDYzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBtX3RvcExh
eWVyRWxlbWVudHM7CisjZW5kaWYKKwogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQ7CiAg
ICAgVGltZXI8RG9jdW1lbnQ+IG1fbG9hZEV2ZW50RGVsYXlUaW1lcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDdjYmE1MWYwZGY4YzIwNGVlNjk1NzQ1OTA1ODU2N2Y2YmExMWE0NzcuLjhm
MmU4ZDk0NGUxZjQ0YTkyMDg5MzA2YzJhNmE1ZjA3ZTk1ZGU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTk3Miw2ICs5NzIsOSBAQCBzdGF0aWMgaW5saW5lIFRyZWVTY29wZSogdHJlZVNj
b3BlT2ZQYXJlbnQoTm9kZSogbm9kZSwgQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUAogCiB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwor
I2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50KCkpCiAgICAgICAgIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFu
Y2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGZhbHNlKTsKQEAgLTE5OTcsNiArMjAwMCwy
NSBAQCB2b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9y
c0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogfQogI2VuZGlmICAgIAogCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorYm9vbCBFbGVtZW50Ojppc0luVG9wTGF5ZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmlzSW5Ub3BMYXll
cigpIDogZmFsc2U7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0SXNJblRvcExheWVyKGJvb2wgZmxh
ZykKK3sKKyAgICBpZiAoaXNJblRvcExheWVyKCkgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRJc0luVG9wTGF5ZXIoZmxhZyk7CisgICAg
aWYgKGZsYWcpCisgICAgICAgIGRvY3VtZW50KCktPmFkZFRvVG9wTGF5ZXIodGhpcyk7CisgICAg
ZWxzZQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGcm9tVG9wTGF5ZXIodGhpcyk7CisgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CisjZW5kaWYKKwog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RQb2lu
dGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1OGUyOTdkMTU3NDQ1OTVjYTE4Yjk5
YjQ1M2Y2ZTMwNGEwMTRkYTIxLi4zY2EyNTA1M2I5NWY4MTUzN2NmNDk5NDM3NmYzMzk3NTcyMzAw
NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQxMCw2ICs0MTAsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERJ
QUxPR19FTEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBiNGJjOGUyZTk5YjNh
ZjRiYzBkMTMxOWMyZDVmMDMyZTQzYmI1ZmZmLi5mZDIwZDRjZjIyNzcyOWJiNzkxNmUxNDdkZWMw
ZGEzNmU0MTM1NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01Myw2
ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50OwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudDsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB1c2lu
ZyBOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcjsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNl
dElzSW5Ub3BMYXllcjsKKyNlbmRpZgogCiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVjdGlv
bnMoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA1YjNhNTgz
YjBkMjI5ZThkYmViZWUyMWNkNjQyZGMyYzc3MGYzNDQyLi43YTk3YzFjMGFlOWUyODZiMGQzNjBj
MTY0YTg1YTYzZGVmYjcxNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xOTEs
NiArMTkxLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAg
LCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUo
RElBTE9HX0VMRU1FTlQpCisgICAgICAgICwgbV9pc0luVG9wTGF5ZXIoZmFsc2UpCisjZW5kaWYK
ICAgICB7CiAgICAgfQogCkBAIC0zMjAsNiArMzIzLDEwIEBAIHByb3RlY3RlZDoKICAgICBib29s
IGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQ7IH0KICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2
YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQogI2VuZGlmCisj
aWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0luVG9wTGF5ZXI7IH0KKyAgICB2b2lkIHNldElzSW5Ub3BMYXllcihib29s
IHZhbHVlKSB7IG1faXNJblRvcExheWVyID0gdmFsdWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgog
ICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CkBAIC0zMzQsNiArMzQxLDkgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQgOiAxOwogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGJv
b2wgbV9pc0luVG9wTGF5ZXIgOiAxOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQogICAgIE93blB0cjxWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24+ID4gPiBtX211dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxZjFjM2Y4OTlmYjA5M2ZiZmZiODI0
NjFhYzFlMGM1YjUzYTgxOWQuLjYwMTgyM2M4MzZhOTMwNzMzYjEyYzEwY2E1YjI2MmVjMzllMThi
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
MjQ5LDYgKzI0OSwyOCBAQCB2b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVy
SWZOZWVkZWQoKQogICAgIC8vIERvIG5vdCBjYWxsIG1fY29udGV4dC5uZXh0UmVuZGVyZXIoKSBo
ZXJlIGluIHRoZSBmaXJzdCBjbGF1c2UsIGJlY2F1c2UgaXQgZXhwZWN0cyB0byBoYXZlCiAgICAg
Ly8gdGhlIHJlbmRlcmVyIGFkZGVkIHRvIGl0cyBwYXJlbnQgYWxyZWFkeS4KICAgICBSZW5kZXJP
YmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNGbG93VGhyZWFkUGFyZW50KCkgPyBt
X2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCktPm5leHRSZW5kZXJlckZvck5vZGUobm9kZSkg
OiBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCk7CisKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQp
CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAg
cGFyZW50UmVuZGVyZXIgPSBwYXJlbnRSZW5kZXJlci0+dmlldygpOworICAgICAgICBuZXh0UmVu
ZGVyZXIgPSAwOworICAgICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxl
bWVudHMgPSBkb2N1bWVudC0+dG9wTGF5ZXJFbGVtZW50cygpOworICAgICAgICBzaXplX3QgdG9w
TGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKKyAgICAgICAg
QVNTRVJUKHRvcExheWVyUG9zaXRpb24gIT0gbm90Rm91bmQpOworICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBwYXJlbnRSZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgRWxlbWVudCogY2hpbGRF
bGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KGNoaWxk
LT5ub2RlKCkpIDogMDsKKyAgICAgICAgICAgIGlmIChjaGlsZEVsZW1lbnQgJiYgY2hpbGRFbGVt
ZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBjaGlsZFRvcExh
eWVyUG9zaXRpb24gPSB0b3BMYXllckVsZW1lbnRzLmZpbmQoY2hpbGRFbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hpbGRUb3BMYXllclBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAg
ICAgICAgICAgICAgICBpZiAodG9wTGF5ZXJQb3NpdGlvbiA8IGNoaWxkVG9wTGF5ZXJQb3NpdGlv
bikgeworICAgICAgICAgICAgICAgICAgICBuZXh0UmVuZGVyZXIgPSBjaGlsZDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0g
Y3JlYXRlUmVuZGVyZXIoKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAKaW5kZXggN2Q0ZDY0NTFiZTNhOTlmNjkw
ZDM2ZTgzNjg5NzFmMzBjNWU5YzM0Ni4uMjk1MGZiYTZiMmU1ZWNmNWNmYTkyZjllZTg3YjNjODMy
OTM3M2Q0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAKQEAg
LTUzLDYgKzUzLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxlbWVudDo6Y2xvc2UoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShv
cGVuQXR0ciwgZmFsc2UpOworICAgIHNldElzSW5Ub3BMYXllcihmYWxzZSk7CiB9CiAKIHZvaWQg
SFRNTERpYWxvZ0VsZW1lbnQ6OnNob3coKQpAQCAtNjksNiArNzAsNyBAQCB2b2lkIEhUTUxEaWFs
b2dFbGVtZW50OjpzaG93TW9kYWwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShvcGVuQXR0ciwgdHJ1ZSk7CisgICAgc2V0
SXNJblRvcExheWVyKHRydWUpOwogfQogCiBib29sIEhUTUxEaWFsb2dFbGVtZW50Ojppc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMWU2YTM3OTk1NTc1YWI3MWQx
YTAwM2QyYzk1MTg4Mjk1YjkwNmIzNi4uNTNhZDRhYzNiNmRiZTJlZjYwMTY5MDI3MzM3NDA1OWJh
NmJlYmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0z
NTMyLDYgKzM1MzIsMTQgQEAgTm9kZSogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0VsZW1lbnQoKSBj
b25zdAogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorYm9v
bCBSZW5kZXJMYXllcjo6aXNJblRvcExheWVyKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0g
cmVuZGVyZXIoKS0+bm9kZSgpOworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzSW5Ub3BMYXllcigpOworfQorI2VuZGlmCisKIC8v
IENvbXB1dGUgdGhlIHotb2Zmc2V0IG9mIHRoZSBwb2ludCBpbiB0aGUgdHJhbnNmb3JtU3RhdGUu
CiAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IHByb2plY3RpbmcgYSByYXkgbm9ybWFsIHRvIHRoZSBw
bGFuZSBvZiBhbmNlc3RvciwgZmluZGluZyB3aGVyZSB0aGF0CiAvLyByYXkgaW50ZXJzZWN0cyB0
YXJnZXQsIGFuZCBjb21wdXRpbmcgdGhlIHogZGVsdGEgYmV0d2VlbiB0aG9zZSB0d28gcG9pbnRz
LgpAQCAtNDYxMyw2ICs0NjIxLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJM
aXN0cygpCiAgICAgaWYgKG1fbmVnWk9yZGVyTGlzdCkKICAgICAgICAgc3RkOjpzdGFibGVfc29y
dChtX25lZ1pPcmRlckxpc3QtPmJlZ2luKCksIG1fbmVnWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBh
cmVaSW5kZXgpOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIC8vIEFwcGVuZCBs
YXllcnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlv
biwgdG8gZW5zdXJlIHRoZXkgYXJlIG9uIHRvcCByZWdhcmRsZXNzIG9mIHotaW5kZXhlcy4KKyAg
ICAvLyBUaGUgcmVuZGVyZXJzIG9mIHRvcCBsYXllciBlbGVtZW50cyBhcmUgY2hpbGRyZW4gb2Yg
dGhlIHZpZXcsIHNvcnRlZCBpbiB0b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgaWYgKGlz
Um9vdExheWVyKCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiB2aWV3ID0gcmVuZGVyZXIoKS0+
dmlldygpOworICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSB2aWV3LT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAg
ICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSBjaGlsZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkg
PyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkgOiAwOworICAgICAgICAgICAgaWYgKGNoaWxkRWxl
bWVudCAmJiBjaGlsZEVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgICAgICAgICAg
UmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjaGlsZCktPmxheWVy
KCk7CisgICAgICAgICAgICAgICAgbV9wb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBtX3pPcmRlckxpc3Rz
RGlydHkgPSBmYWxzZTsKIH0KIApAQCAtNDYzNyw2ICs0NjYwLDExIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKIAogdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExh
eWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIFZlY3RvcjxSZW5kZXJMYXllcio+KiYgcG9z
QnVmZmVyLCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiomIG5lZ0J1ZmZlcikKIHsKKyNpZiBFTkFCTEUo
RElBTE9HX0VMRU1FTlQpCisgICAgaWYgKGlzSW5Ub3BMYXllcigpKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKwogICAgIHVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwogCiAgICAg
Ly8gT3ZlcmZsb3cgbGF5ZXJzIGFyZSBqdXN0IHBhaW50ZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxh
eWVycywgc28gdGhleSBkb24ndCBnZXQgcHV0IGluIHpvcmRlciBsaXN0cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggYzNkYjk2ZDFkZWQ2NTYwZjllYTQxZTYzZDgw
NTdiODFjODllOGIzYi4uNzgxYjk4OWM1MTM2YzIxMTAwOTc2ZTg3NTg4ZDIyZGNmYzZjZjI4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY4MCw2ICs2ODAsMTAg
QEAgcHVibGljOgogCiAgICAgTm9kZSogZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0OwogCisjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdm9p
ZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkN2JkMjU2NzBmYzJiMjNlN2JjZmQzNGQ0
OWU3Nzg2NTMwNWYyYjhkLi4yMjdjYWE1Yzg4MWJiYzhiYjkwNTdhMTg2YWIwYjU4MjhiMzIxZTVl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMTUgIE1hdHQgRmFsa2VuaGFnZW4gIDxm
YWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbmV3IHN0YWNraW5n
IGxheWVyIG5lZWRlZCBieSB0aGUgRnVsbHNjcmVlbiBBUEkgYW5kIHRoZSBuZXcgPGRpYWxvZz4g
ZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgdGVzdHMgZm9yIHRvcCBsYXllciBzdGFja2luZyBhbmQgcmVuZGVyaW5nLgorCisgICAgICAg
ICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2st
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2lu
Zy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxv
Y2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50
L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNj
MjFjYjJhY2MzMGUzMzlhMTQ5MzZhNDdjYjkyMWZlOWFiZTI1YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWlu
aW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87
CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDog
d2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDBweDsgaGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij4KKyAgICBUaGlz
IG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVl
bi4gSXQgaXMgdGhlIGNoaWxkIG9mIGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYgc2NyZWVuLCBi
dXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBpcyB0aGUgaW5p
dGlhbCBjb250YWluaW5nIGJsb2NrLgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ci
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNzBweDsgbGVmdDogMHB4OyBoZWlnaHQ6
IDI1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFs
b2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0
IHNob3VsZCBub3QgYmUgY2xpcHBlZC4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyBvdmVyZmxvdzogaGlkZGVuOyB3aWR0aDogNTAwcHg7IGhlaWdodDogMTUwcHg7IHRv
cDogNjAwcHg7IGxlZnQ6IDUwMHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDog
MTUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBk
aWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJ
dCBzaG91bGQgYmUgY2xpcHBlZC4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icHNl
dWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAw
cHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNo
b3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCis8L2Rpdj4K
KzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA2MDBweDsgb3BhY2l0eTogMC4z
Ij4KKyAgICA8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29s
b3I6IG1hZ2VudGEiPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFm
ZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9kaXY+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhjYmI2YTViYjA2NDdkOGRlMWZkNjUzNThjMzE1ZWIzN2Y1NTdjNzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVu
dC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA2MDBweDsg
b3BhY2l0eTogMC4zIj4KKyAgICA8ZGlhbG9nIGlkPSJ6IiBzdHlsZT0icG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgor
ICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5j
ZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9ImEiIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDog
MTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgICAgICBUaGlzIG5vbi1tb2Rh
bCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHku
CisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
b3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4OyB0b3A6IDYwMHB4
OyBsZWZ0OiA1MDBweCI+CisgICAgPGRpYWxvZyBpZD0ieSIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiA3MHB4OyBsZWZ0OiAwcHg7IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQtY29s
b3I6IGN5YW4iPgorICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3Rl
ZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVk
LgorICAgIDwvZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9ImIiIHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFm
ZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgYmUgY2xpcHBl
ZC4KKyAgICA8L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwMDBweDsgbGVmdDogMTAwMHB4Ij4KKyAgICA8ZGlhbG9nIGlkPSJ4IiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZC1j
b2xvcjogeWVsbG93Ij4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGRpc3Bs
YXllZCBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uIEl0IGlzIHRoZSBjaGlsZCBvZiBhbiBlbGVt
ZW50IHBvc2l0aW9uZWQgb2ZmIHNjcmVlbiwgYnV0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIGEg
dG9wIGxheWVyIGVsZW1lbnQgaXMgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jay4KKyAgICA8
L2RpYWxvZz4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4Jyku
c2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneScpLnNob3dNb2RhbCgpOwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3onKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhJykuc2hvdygpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3At
bGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3OTFmNjYx
NzM5NzBkOTM2OWRlYzYwMjQzNTg4MjAxZDAwMzgwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHlu
YW1pYy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERp
YWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisucHNldWRvZGlh
bG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOwor
ICAgIGJvcmRlcjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdo
aXRlOworICAgIGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
ZSBzdGFja2luZyBvcmRlciBzaG91bGQgYmU6IHllbGxvdywgbWFnZW50YSwgZ3JlZW4sIHBpbmss
IGN5YW4gKGNsb3Nlc3QgdG8gdXNlcikKKworPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0i
YSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBsZWZ0OiA1MHB4OyB3aWR0
aDogMjgwcHg7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJw
c2V1ZG9kaWFsb2ciIGlkPSJkIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4
OyBsZWZ0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9kaXY+Cis8ZGl2IGNs
YXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDI1MHB4OyBsZWZ0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPGRp
diBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0iaCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiA4MHB4OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcGluayI+PC9kaXY+Cis8
ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJiIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwMHB4OyBsZWZ0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZDdlNjQxOWM5OGE0N2Q3MjNhYzdmY2VhNTlhNGY5NTRhNGMyMTJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IS0t
IFRoaXMgdGVzdHMgdG9wIGxheWVyIGVsZW1lbnRzIHN0YWNraW5nIGFmdGVyIGR5bmFtaWMgY2hh
bmdlcyB0byAnZGlzcGxheScsIHJlbW92YWwKK2Zyb20gdGhlIERPTSB0cmVlLCBhbmQgY2FsbGlu
ZyBzaG93L2Nsb3NlLiBOZXN0ZWQgbW9kYWwgZGlhbG9ncyBhcmUgYWxzbyB0ZXN0ZWQuIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4K
KzxzdHlsZT4KK2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGUgc3RhY2tpbmcgb3JkZXIgc2hvdWxk
IGJlOiB5ZWxsb3csIG1hZ2VudGEsIGdyZWVuLCBwaW5rLCBjeWFuIChjbG9zZXN0IHRvIHVzZXIp
CisKKzxkaWFsb2cgaWQ9ImEiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAyODBw
eDsgdG9wOiA1MHB4OyBsZWZ0OiA1MHB4OyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kLWNvbG9y
OiB5ZWxsb3c7IHotaW5kZXg6IDEwMDAiPjwvZGlhbG9nPgorPGRpYWxvZyBpZD0iYiIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMTAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGN5YW47IHotaW5kZXg6IC0xMDAwIj48L2RpYWxvZz4KKzxkaXYgaWQ9ImNvbnRhaW5l
ciI+CisgICAgPGRpYWxvZyBpZD0iYyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAx
NTBweDsgbGVmdDogMTUwcHgiPjwvZGlhbG9nPgorPC9kaXY+Cis8ZGlhbG9nIGlkPSJlIiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDI1MHB4OyBsZWZ0OiAyNTBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW4iPgorICAgIDxkaWFsb2cgaWQ9ImQiIHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRh
Ij4KKyAgICAgICAgPGRpYWxvZyBpZD0iZiIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAzMDBweDsgbGVmdDogMzAwcHgiPgorICAgICAgICAgICAgPGRpYWxvZyBpZD0iZyIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAzNTBweDsgbGVmdDogMzUwcHgiPjwvZGlhbG9nPgor
ICAgICAgICA8L2RpYWxvZz4KKyAgICAgICAgPGRpYWxvZyBpZD0iaCIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiA4MHB4OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcGlu
ayI+PC9kaWFsb2c+CisgICAgPC9kaWFsb2c+Cis8L2RpYWxvZz4KKzxzY3JpcHQ+Cit2YXIgZiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJyk7CitmLnNob3dNb2RhbCgpOworZy5zaG93TW9k
YWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJykuc2hvd01vZGFsKCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYycpLnNob3dNb2RhbCgpOworZi5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGYpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2QnKS5zaG93TW9kYWwoKTsKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdlJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaCcpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5jbG9z
ZSgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhJykuc2hvdygpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2En
KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90
b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY5N2JlZTNkY2JmMWI2NmM0NzQ0MDk3YTIxNjRlMTk5MTNmNzY3MzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXIt
c3RhY2tpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKzxzdHlsZT4K
Ky5ib3ggeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworfQorLmNvbnRh
aW5lciB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YTsKK30KKy50cmFuc2Zv
cm1lZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoNDVkZWcpOworICAgIGJhY2tn
cm91bmQtY29sb3I6IGN5YW47Cit9CisucHNldWRvZGlhbG9nIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJv
cmRlcjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOwor
ICAgIGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgY2xhc3M9InBzZXVk
b2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OjMwMDAi
PgorICAgIFRoaXMgd2hpdGUgYm94IGlzIHRoZSB0b3Btb3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hv
dWxkIGJlIG9uIHRvcCBvZiBldmVyeXRoaW5nLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IGxlZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJw
c2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAwcHg7IHotaW5kZXg6MjAw
MCI+CisgICAgVGhpcyBncmVlbiBib3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxk
IGJlIHJlbmRlcmVkIGFib3ZlIHRoZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAgIDxkaXYg
Y2xhc3M9ImNvbnRhaW5lciBib3giPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1lZCBi
b3giPkEgdHJhbnNmb3JtIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDozMDBweDsgei1pbmRleDogMjsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRo
aXMgc2hvd3Mgei1pbmRleCBzdGFja2luZyB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuIFRo
ZSBjeWFuIGJveCBzaG91bGQgYmUgb24gdG9wIG9mIHRoZSBtYWdlbnRhIG9uZS4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDoz
NTBweDsgbGVmdDo1MHB4OyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48
L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDog
MzBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4g
ZGlhbG9nLjwvZGl2PgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMTAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVpZ2h0OiAyMDBlbTsgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93OyB6LWluZGV4OjEwMDAiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3At
bGF5ZXItc3RhY2tpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMzhiOTkyZmVkNzY4NzI5
MzljNWRkOTA1MmJkMTQwNjIyODFiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApAQCAtMCww
ICsxLDUyIEBACis8IS0tIFRoaXMgdGVzdHMgdGhhdCB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIHJl
bmRlcmVkIGFib3ZlIHotaW5kZXhlZCBlbGVtZW50cworYW5kIHN0YWNrZWQgaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIgYW1vbmdzdCB0aGVtc2VsdmVzLiBBbHNvLCBsYXllciBmZWF0dXJlcyBsaWtlCit0
cmFuc2Zvcm1zIGFuZCB6LWluZGV4IGFyZSB0ZXN0ZWQgaW5zaWRlIGEgdG9wIGxheWVyIGVsZW1l
bnQgc3VidHJlZS4gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0
cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0OjE1MHB4OworICAg
IHdpZHRoOjE1MHB4OworfQorLmNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTog
NTAwcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogbWFnZW50YTsKK30KKy50cmFuc2Zvcm1lZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJv
dGF0ZVkoNDVkZWcpOworICAgIGJhY2tncm91bmQtY29sb3I6IGN5YW47Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGlhbG9nIGlkPSJ6IiBzdHlsZT0iZGlzcGxheTogbm9uZSI+VGhp
cyBzaG91bGQgbm90IGJlIGRpc3BsYXllZC48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9InkiIHN0eWxl
PSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsgei1pbmRleDogLTEwIj4KKyAgICBUaGlzIHdo
aXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSBvbiB0b3Ag
b2YgZXZlcnl0aGluZy4KKzwvZGlhbG9nPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBsZWZ0OiAwOyBy
aWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPgorICAgIDxkaWFsb2cgaWQ9IngiIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdpZHRo
OiA3NSU7IGhlaWdodDogNDAwcHgiPgorICAgICAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEg
bW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVs
bG93IHJlZ2lvbnMuCisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBib3giPgorICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3JtZWQgYm94Ij5BIHRyYW5zZm9ybSB3aXRoaW4gdGhl
IGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNs
YXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozMDBweDsgei1pbmRleDog
MjsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgICAgICBUaGlzIHNob3dzIHotaW5k
ZXggc3RhY2tpbmcgd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLiBUaGUgY3lhbiBib3ggc2hv
dWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFnZW50YSBvbmUuCisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsg
bGVmdDo1MHB4OyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMw
cHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRp
YWxvZy48L2Rpdj4KKyAgICA8L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAw
ZW07IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPHNj
cmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4Jykuc2hvd01vZGFsKCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgneScpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3onKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169862</attachid>
            <date>2012-10-22 02:38:14 -0700</date>
            <delta_ts>2012-10-25 06:59:53 -0700</delta_ts>
            <desc>sync</desc>
            <filename>bug-84796-20121022183653.patch</filename>
            <type>text/plain</type>
            <size>29014</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA2NmQ4ZGQ1ZDFmMDM2
ODc1ZTU4Yzg0NDZhZjNkNWEwZDJmZTM4Ny4uYmUyNzlmYjdjYjZhODZhMTNhYzMxM2U1YWQ3Y2M5
ZWU3OGI5MzFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTEwLTIyICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcAorICAgICAgICBsYXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQor
ICAgICAgICBjb250YWluaW5nIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbAorICAgICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBS
ZW5kZXJMYXllciB0byBrbm93IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2Yg
dGhlIGxheWVycyB3aXRob3V0IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAg
ICAgICBlbGVtZW50cyB0byB0aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1v
ZGFsIGRpYWxvZyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAg
ICAgVGhlIHBsYW4gaXMgdG8gbWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRv
cCBsYXllci4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXllckVs
ZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9wTGF5
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZVJh
cmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6
CisgICAgICAgIChOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRh
Ojppc0luVG9wTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0lu
VG9wTGF5ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KTogQWRkIHJlbmRlcmVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFzIGNoaWxkcmVuIG9mIFJl
bmRlclZpZXcsIGFuZCBpbiB0b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgICAgICogaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxl
bWVudDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OnNob3dN
b2RhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKTogQWRkIHRo
ZSB0b3AgbGF5ZXIgc3RhY2sgYWZ0ZXIgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyk6IEF2b2lkIGFkZGluZyBsYXll
cnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBkdXJpbmcgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXll
cik6CisKIDIwMTItMTAtMjAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgog
CiAgICAgICAgIFtFRkxdW0FDXSBCdWlsZCBmaXggYWZ0ZXIgcjEzMTkzMwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAyYjk3ZDQ1OTAzYzNlYjdmMTQ1NjhlOTYxYWU0Y2VhN2U3N2UyYTJiLi5lMTRh
NmNhYzlhMjg1ZmFkZjU3YjUxYmI3YWY0ZGQ2YzZmOTJiNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjE4Niw2ICsyMTg2LDEwIEBAIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmFubm90YXRl
ZFJlZ2lvbnNFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXRVc2VzRGFzaGJvYXJkQmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZUViCiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKK19fWk5LN1dlYkNvcmUxMVJlbmRlckxheWVyMTJpc0luVG9wTGF5ZXJFdgorI2VuZGlmCisK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2Ry
YWdTb3VyY2VFbmRlZEF0RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFTlNfMTNEcmFnT3BlcmF0
aW9uRQogX19aTks3V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdldmVudE1heVN0YXJ0RHJhZ0VSS05T
XzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IGVhNDc4NTM2NWI2MmVlYTVlMGM1NGE0NWM5MmYxZGMwODk4YzA3YzYuLmI2Y2M4YjI4N2Rj
ZWIzMWY2NTVlNzJmZThhMzEzMjRiZjI4MWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTE5NjAsNiArMTk2MCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0
UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5CiAg
ICAgICAgIC8vIFRvdWNoIG92ZXJmbG93IHNjcm9sbGluZyBjcmVhdGVzIGEgc3RhY2tpbmcgY29u
dGV4dC4KICAgICAgICAgfHwgKChzdHlsZS0+b3ZlcmZsb3dYKCkgIT0gT0hJRERFTiB8fCBzdHls
ZS0+b3ZlcmZsb3dZKCkgIT0gT0hJRERFTikgJiYgc3R5bGUtPnVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmcoKSkKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAgICAgfHwg
KGUgJiYgZS0+aXNJblRvcExheWVyKCkpCisjZW5kaWYKICAgICAgICAgKSkKICAgICAgICAgc3R5
bGUtPnNldFpJbmRleCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTg1YzhmMWMw
NzNmZmUxMGRhMDdjZmI0YmNlM2JjZWI5NDQ0NzNhNi4uMGEzZjE2MDdkMjhhNGZiZDkyYTdmYTYz
Yzc5OTllNTZhOGE0ZmM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTI5LDYgKzU1
MjksMjEgQEAgdm9pZCBEb2N1bWVudDo6YWRkRG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFuZ2VFdmVu
dFF1ZXVlKERvY3VtZW50KiBkb2MpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxF
TUVOVCkKK3ZvaWQgRG9jdW1lbnQ6OmFkZFRvVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBBU1NFUlQoIW1fdG9wTGF5ZXJFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAg
bV90b3BMYXllckVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKK30KKwordm9pZCBEb2N1bWVudDo6
cmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKG1fdG9w
TGF5ZXJFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgc2l6ZV90IHBvc2l0aW9uID0g
bV90b3BMYXllckVsZW1lbnRzLmZpbmQoZWxlbWVudCk7CisgICAgbV90b3BMYXllckVsZW1lbnRz
LnJlbW92ZShwb3NpdGlvbik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0UG9pbnRlckxvY2soKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCAzZWVhMGYwZGRhODE4ZDM2MWQwYWUxYmY4MGYxODg1ZjMwZWE1Mjc0Li5iMWE1
YThmOTgyOWQ3MDE3OWYwNDU5YmM1NjVjMjlkNTk1NWY4OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtMTE1OSw2ICsxMTU5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gYSBMb2NhbGl6
ZXIgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbCBvciBlbXB0
eS4KICAgICBMb2NhbGl6ZXImIGdldENhY2hlZExvY2FsaXplcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSA9IG51bGxBdG9tKTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB2
b2lkIGFkZFRvVG9wTGF5ZXIoRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlRnJvbVRvcExheWVy
KEVsZW1lbnQqKTsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVu
dHMoKSB7IHJldHVybiBtX3RvcExheWVyRWxlbWVudHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCk7CiAKQEAgLTE0NTcsNiArMTQ2MywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gbV90b3BM
YXllckVsZW1lbnRzOworI2VuZGlmCisKICAgICBpbnQgbV9sb2FkRXZlbnREZWxheUNvdW50Owog
ICAgIFRpbWVyPERvY3VtZW50PiBtX2xvYWRFdmVudERlbGF5VGltZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCA2OWY2NjY2YTUwNmE0MjI1MzBhNDExNTUxMDhhYzQwNzZhNGUzMDcxLi4w
NDVlNGYzMDhkOTFmMDE3Y2Y1NTZjYTVjNTgyNmExNjdlNWIxNTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC05NzEsNiArOTcxLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW8KIAogdm9p
ZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgc2V0SXNJblRvcExheWVyKGZhbHNlKTsK
KyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAoY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpKQogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25B
bmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7CkBAIC0yMDAyLDYgKzIwMDUs
MjUgQEAgdm9pZCBFbGVtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3Rv
cnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhib28KIH0KICNlbmRpZiAgICAKIAorI2lmIEVOQUJM
RShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgRWxlbWVudDo6aXNJblRvcExheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5pc0luVG9wTGF5
ZXIoKSA6IGZhbHNlOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzSW5Ub3BMYXllcihib29sIGZs
YWcpCit7CisgICAgaWYgKGlzSW5Ub3BMYXllcigpID09IGZsYWcpCisgICAgICAgIHJldHVybjsK
KyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0SXNJblRvcExheWVyKGZsYWcpOworICAg
IGlmIChmbGFnKQorICAgICAgICBkb2N1bWVudCgpLT5hZGRUb1RvcExheWVyKHRoaXMpOworICAg
IGVsc2UKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRnJvbVRvcExheWVyKHRoaXMpOworICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworfQorI2VuZGlmCisK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogdm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0UG9p
bnRlckxvY2soKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNTE5YzUwZDc3ODkzMTUxNmZhZjg4
MzBjNDYzYjI1MDIwMTViNmRmZC4uYjNjZjcyNDgwNjdhNDczYzNlZDFkYjQ3MmYzMWE3NDQyYTVk
MDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MTEsNiArNDExLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHNldElzSW5Ub3BMYXllcihib29sKTsKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggYjRiYzhlMmU5OWIz
YWY0YmMwZDEzMTljMmQ1ZjAzMmU0M2JiNWZmZi4uZmQyMGQ0Y2YyMjc3MjliYjc5MTZlMTQ3ZGVj
MGRhMzZlNDEzNTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNTMs
NiArNTMsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgdXNp
bmcgTm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXI7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpz
ZXRJc0luVG9wTGF5ZXI7CisjZW5kaWYKIAogICAgIGJvb2wgaGFzQ2FjaGVkSFRNTENvbGxlY3Rp
b25zKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNWIzYTU4
M2IwZDIyOWU4ZGJlYmVlMjFjZDY0MmRjMmM3NzBmMzQ0Mi4uN2E5N2MxYzBhZTllMjg2YjBkMzYw
YzE2NGE4NWE2M2RlZmI3MTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTkx
LDYgKzE5MSw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAg
ICwgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorICAgICAgICAsIG1faXNJblRvcExheWVyKGZhbHNlKQorI2VuZGlm
CiAgICAgewogICAgIH0KIApAQCAtMzIwLDYgKzMyMywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wg
dmFsdWUpIHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KICNlbmRpZgor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNJblRvcExheWVyOyB9CisgICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9v
bCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZhbHVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwpAQCAtMzM0LDYgKzM0MSw5IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9jb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50IDogMTsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBi
b29sIG1faXNJblRvcExheWVyIDogMTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uPiA+ID4gbV9tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMWYxYzNmODk5ZmIwOTNmYmZmYjgy
NDYxYWMxZTBjNWI1M2E4MTlkLi42MDE4MjNjODM2YTkzMDczM2IxMmMxMGNhNWIyNjJlYzM5ZTE4
YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTI0OSw2ICsyNDksMjggQEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJl
cklmTmVlZGVkKCkKICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkg
aGVyZSBpbiB0aGUgZmlyc3QgY2xhdXNlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8gaGF2ZQogICAg
IC8vIHRoZSByZW5kZXJlciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCiAgICAgUmVuZGVy
T2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8g
bV9jb250ZXh0LnBhcmVudEZsb3dSZW5kZXJlcigpLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUp
IDogbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpOworCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQorICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAg
IHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnZpZXcoKTsKKyAgICAgICAgbmV4dFJl
bmRlcmVyID0gMDsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVs
ZW1lbnRzID0gZG9jdW1lbnQtPnRvcExheWVyRWxlbWVudHMoKTsKKyAgICAgICAgc2l6ZV90IHRv
cExheWVyUG9zaXRpb24gPSB0b3BMYXllckVsZW1lbnRzLmZpbmQoZWxlbWVudCk7CisgICAgICAg
IEFTU0VSVCh0b3BMYXllclBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gcGFyZW50UmVuZGVyZXItPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGNoaWxk
RWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChjaGls
ZC0+bm9kZSgpKSA6IDA7CisgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxl
bWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2hpbGRUb3BM
YXllclBvc2l0aW9uID0gdG9wTGF5ZXJFbGVtZW50cy5maW5kKGNoaWxkRWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGNoaWxkVG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3VuZCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHRvcExheWVyUG9zaXRpb24gPCBjaGlsZFRvcExheWVyUG9zaXRp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dFJlbmRlcmVyID0gY2hpbGQ7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9
IGNyZWF0ZVJlbmRlcmVyKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5
MGQzNmU4MzY4OTcxZjMwYzVlOWMzNDYuLjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgz
MjkzNzNkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBA
IC01Myw2ICs1Myw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUo
b3BlbkF0dHIsIGZhbHNlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lk
IEhUTUxEaWFsb2dFbGVtZW50OjpzaG93KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlh
bG9nRWxlbWVudDo6c2hvd01vZGFsKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNl
dElzSW5Ub3BMYXllcih0cnVlKTsKIH0KIAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDMyNDcxZDg4YjgzMWZhYjNh
ZmMwNmFlMmM3YWFhNTY4N2JmY2U0ZjYuLmMzOTIxN2YzZTY3M2VjZDNmYzViYTM1ZmM1NTk3Mzdj
ZTU2ODE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MzU0NSw2ICszNTQ1LDE0IEBAIE5vZGUqIFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jv
b2wgUmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9
IHJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnRO
b2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc0luVG9wTGF5ZXIoKTsKK30KKyNlbmRpZgorCiAv
LyBDb21wdXRlIHRoZSB6LW9mZnNldCBvZiB0aGUgcG9pbnQgaW4gdGhlIHRyYW5zZm9ybVN0YXRl
LgogLy8gVGhpcyBpcyBlZmZlY3RpdmVseSBwcm9qZWN0aW5nIGEgcmF5IG5vcm1hbCB0byB0aGUg
cGxhbmUgb2YgYW5jZXN0b3IsIGZpbmRpbmcgd2hlcmUgdGhhdAogLy8gcmF5IGludGVyc2VjdHMg
dGFyZ2V0LCBhbmQgY29tcHV0aW5nIHRoZSB6IGRlbHRhIGJldHdlZW4gdGhvc2UgdHdvIHBvaW50
cy4KQEAgLTQ2MzQsNiArNDY0MiwyMSBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVy
TGlzdHMoKQogICAgIGlmIChtX25lZ1pPcmRlckxpc3QpCiAgICAgICAgIHN0ZDo6c3RhYmxlX3Nv
cnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBtX25lZ1pPcmRlckxpc3QtPmVuZCgpLCBjb21w
YXJlWkluZGV4KTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAvLyBBcHBlbmQg
bGF5ZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYWZ0ZXIgbm9ybWFsIGxheWVyIGNvbGxlY3Rp
b24sIHRvIGVuc3VyZSB0aGV5IGFyZSBvbiB0b3AgcmVnYXJkbGVzcyBvZiB6LWluZGV4ZXMuCisg
ICAgLy8gVGhlIHJlbmRlcmVycyBvZiB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIGNoaWxkcmVuIG9m
IHRoZSB2aWV3LCBzb3J0ZWQgaW4gdG9wIGxheWVyIHN0YWNraW5nIG9yZGVyLgorICAgIGlmIChp
c1Jvb3RMYXllcigpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogdmlldyA9IHJlbmRlcmVyKCkt
PnZpZXcoKTsKKyAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gdmlldy0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAg
ICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgp
ID8gdG9FbGVtZW50KGNoaWxkLT5ub2RlKCkpIDogMDsKKyAgICAgICAgICAgIGlmIChjaGlsZEVs
ZW1lbnQgJiYgY2hpbGRFbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICAgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY2hpbGQpLT5sYXll
cigpOworICAgICAgICAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbV96T3JkZXJMaXN0
c0RpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTQ2NTgsNiArNDY4MSwxMSBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RM
YXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiomIHBv
c0J1ZmZlciwgVmVjdG9yPFJlbmRlckxheWVyKj4qJiBuZWdCdWZmZXIpCiB7CisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorICAgIGlmIChpc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKICAgICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAogICAg
IC8vIE92ZXJmbG93IGxheWVycyBhcmUganVzdCBwYWludGVkIGJ5IHRoZWlyIGVuY2xvc2luZyBs
YXllcnMsIHNvIHRoZXkgZG9uJ3QgZ2V0IHB1dCBpbiB6b3JkZXIgbGlzdHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDE4MTEwMzY0M2QzZmNmMjA2NzM5Nzg1OTc4
YzkxOWQyZTU2MjZlZDcuLjE5ZmI2MTc4ZmEwN2I0ZDUzNTU0YjQ4ODUyMTNmYTVmNzllNWE4MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02ODAsNiArNjgwLDEw
IEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIGVuY2xvc2luZ0VsZW1lbnQoKSBjb25zdDsKIAorI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZv
aWQgcmVidWlsZFpPcmRlckxpc3RzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2U1NWY1ZTQ4NjE0ODQ2MjMyNDY5OWQ2
MDViMzIxMmNiZGM1YTk2MS4uNDRhZWJkNDQyY2I4MjAwYjNiZDlkYjk4MDg1Mjg4ZjVjNTAzZGE3
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTIyICBNYXR0IEZhbGtlbmhhZ2VuICA8
ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIG5ldyBzdGFja2lu
ZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0aGUgbmV3IDxkaWFsb2c+
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRlc3RzIGZvciB0b3AgbGF5ZXIgc3RhY2tpbmcgYW5kIHJlbmRlcmluZy4KKworICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2Nr
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3Rv
cC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tp
bmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMjAgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJh
cGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIG1pc3Np
bmcgZXhwZWN0YXRpb25zIGZvciBzb21lIHRlc3RzIGluIHN2Zy9jdXN0b20uCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFp
bmluZy1ibG9jay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xM2MyMWNiMmFjYzMwZTMzOWExNDkzNmE0N2NiOTIxZmU5YWJlMjVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVy
LWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KKzwvc2NyaXB0PgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdp
bjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNr
Z3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPgor
ICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBvZiB0
aGUgc2NyZWVuLiBJdCBpcyB0aGUgY2hpbGQgb2YgYW4gZWxlbWVudCBwb3NpdGlvbmVkIG9mZiBz
Y3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBibG9jayBvZiBhIHRvcCBsYXllciBlbGVtZW50IGlz
IHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2suCis8L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVk
b2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA3MHB4OyBsZWZ0OiAwcHg7
IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG1v
ZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVy
Zmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0OiAx
NTBweDsgdG9wOiA2MDBweDsgbGVmdDogNTAwcHgiPgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2Rp
YWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7
IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbm9u
LW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3Zl
cmZsb3cuIEl0IHNob3VsZCBiZSBjbGlwcGVkLgorICAgIDwvZGl2PgorPC9kaXY+Cis8ZGl2IGNs
YXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7
IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgVGhpcyBtb2RhbCBk
aWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4K
KzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDYwMHB4OyBvcGFj
aXR5OiAwLjMiPgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91
bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2Rpdj4K
KzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5n
LWJsb2NrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNiYjZhNWJiMDY0N2Q4ZGUxZmQ2NTM1OGMzMTVlYjM3
ZjU1N2M3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFs
b2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDYwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAgIDxkaWFsb2cgaWQ9InoiIHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YSI+CisgICAgICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5
IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9kaWFsb2c+CisgICAgPGRpYWxvZyBp
ZD0iYSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7
IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMg
bm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGgg
b3BhY2l0eS4KKyAgICA8L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyBvdmVyZmxvdzogaGlkZGVuOyB3aWR0aDogNTAwcHg7IGhlaWdodDogMTUwcHg7IHRv
cDogNjAwcHg7IGxlZnQ6IDUwMHB4Ij4KKyAgICA8ZGlhbG9nIGlkPSJ5IiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDcwcHg7IGxlZnQ6IDBweDsgaGVpZ2h0OiAyNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1
bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgbm90IGJl
IGNsaXBwZWQuCisgICAgPC9kaWFsb2c+CisgICAgPGRpYWxvZyBpZD0iYiIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFj
a2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91
bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBi
ZSBjbGlwcGVkLgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMTAwMHB4OyBsZWZ0OiAxMDAwcHgiPgorICAgIDxkaWFsb2cgaWQ9Ingi
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDUwMHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiB5ZWxsb3ciPgorICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQg
YmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gSXQgaXMgdGhlIGNoaWxkIG9m
IGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYgc2NyZWVuLCBidXQgdGhlIGNvbnRhaW5pbmcgYmxv
Y2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBpcyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2Nr
LgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3gnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5Jykuc2hvd01v
ZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneicpLnNob3dNb2RhbCgpOworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKS5zaG93KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YicpLnNob3coKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5
bmFtaWMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDc5MWY2NjE3Mzk3MGQ5MzY5ZGVjNjAyNDM1ODgyMDFkMDAzODA5NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5w
c2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46
IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dy
b3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorVGhlIHN0YWNraW5nIG9yZGVyIHNob3VsZCBiZTogeWVsbG93LCBtYWdlbnRhLCBncmVl
biwgcGluaywgY3lhbiAoY2xvc2VzdCB0byB1c2VyKQorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFs
b2ciIGlkPSJhIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGxlZnQ6IDUw
cHg7IHdpZHRoOiAyODBweDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij48L2Rpdj4KKzxkaXYg
Y2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImQiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMjAwcHg7IGxlZnQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4K
KzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDI1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJoIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rIj48
L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImIiIHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFu
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmct
ZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkN2U2NDE5Yzk4YTQ3ZDcyM2FjN2ZjZWE1OWE0Zjk1
NGE0YzIxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhLS0gVGhpcyB0ZXN0cyB0b3AgbGF5ZXIgZWxlbWVudHMgc3RhY2tpbmcgYWZ0ZXIgZHlu
YW1pYyBjaGFuZ2VzIHRvICdkaXNwbGF5JywgcmVtb3ZhbAorZnJvbSB0aGUgRE9NIHRyZWUsIGFu
ZCBjYWxsaW5nIHNob3cvY2xvc2UuIE5lc3RlZCBtb2RhbCBkaWFsb2dzIGFyZSBhbHNvIHRlc3Rl
ZC4gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwv
c2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRo
OiAxNTBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoZSBzdGFja2luZyBvcmRl
ciBzaG91bGQgYmU6IHllbGxvdywgbWFnZW50YSwgZ3JlZW4sIHBpbmssIGN5YW4gKGNsb3Nlc3Qg
dG8gdXNlcikKKworPGRpYWxvZyBpZD0iYSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lk
dGg6IDI4MHB4OyB0b3A6IDUwcHg7IGxlZnQ6IDUwcHg7IGRpc3BsYXk6IG5vbmU7IGJhY2tncm91
bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDogMTAwMCI+PC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJi
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAxMDBweDsgYmFj
a2dyb3VuZC1jb2xvcjogY3lhbjsgei1pbmRleDogLTEwMDAiPjwvZGlhbG9nPgorPGRpdiBpZD0i
Y29udGFpbmVyIj4KKyAgICA8ZGlhbG9nIGlkPSJjIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDE1MHB4OyBsZWZ0OiAxNTBweCI+PC9kaWFsb2c+Cis8L2Rpdj4KKzxkaWFsb2cgaWQ9
ImUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDI1MHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+CisgICAgPGRpYWxvZyBpZD0iZCIgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6
IG1hZ2VudGEiPgorICAgICAgICA8ZGlhbG9nIGlkPSJmIiBzdHlsZT0icG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDMwMHB4OyBsZWZ0OiAzMDBweCI+CisgICAgICAgICAgICA8ZGlhbG9nIGlkPSJn
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDM1MHB4OyBsZWZ0OiAzNTBweCI+PC9k
aWFsb2c+CisgICAgICAgIDwvZGlhbG9nPgorICAgICAgICA8ZGlhbG9nIGlkPSJoIiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBwaW5rIj48L2RpYWxvZz4KKyAgICA8L2RpYWxvZz4KKzwvZGlhbG9nPgorPHNjcmlwdD4K
K3ZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKTsKK2Yuc2hvd01vZGFsKCk7Citn
LnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93TW9kYWwoKTsK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJykuc2hvd01vZGFsKCk7CitmLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZCcpLnNob3dNb2RhbCgp
OworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdoJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YicpLmNsb3NlKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnNob3dNb2RhbCgpOwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKS5zaG93KCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjk3YmVlM2RjYmYxYjY2YzQ3NDQwOTdhMjE2NGUxOTkxM2Y3NjczNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3Rv
cC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPgor
PHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7Cit9
CisuY29udGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1MDBweDsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhOworfQor
LnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSg0NWRlZyk7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKy5wc2V1ZG9kaWFsb2cgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87
CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDog
d2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IHotaW5k
ZXg6MzAwMCI+CisgICAgVGhpcyB3aGl0ZSBib3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwgZGlhbG9n
LiBJdCBzaG91bGQgYmUgb24gdG9wIG9mIGV2ZXJ5dGhpbmcuCis8L2Rpdj4KKzxkaXYgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgbGVmdDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7Ij48L2Rpdj4KKzxkaXYg
Y2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBweDsgei1p
bmRleDoyMDAwIj4KKyAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEgbW9kYWwgZGlhbG9nLiBJ
dCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVsbG93IHJlZ2lvbnMuCisg
ICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJveCI+CisgICAgICAgIDxkaXYgY2xhc3M9InRyYW5z
Zm9ybWVkIGJveCI+QSB0cmFuc2Zvcm0gd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLjwvZGl2
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAg
ICAgICAgVGhpcyBzaG93cyB6LWluZGV4IHN0YWNraW5nIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3Vi
dHJlZS4gVGhlIGN5YW4gYm94IHNob3VsZCBiZSBvbiB0b3Agb2YgdGhlIG1hZ2VudGEgb25lLgor
ICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0
ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5kZXg6IDE7IGJhY2tncm91bmQtY29sb3I6IG1h
Z2VudGEiPjwvZGl2PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiA5MHB4
OyBsZWZ0OiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+VGhpcyBpcyBwYXJ0IG9mIHRo
ZSBncmVlbiBkaWFsb2cuPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBi
YWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IHotaW5kZXg6MTAwMCI+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIzOGI5OTJm
ZWQ3Njg3MjkzOWM1ZGQ5MDUyYmQxNDA2MjI4MWIxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1s
CkBAIC0wLDAgKzEsNTIgQEAKKzwhLS0gVGhpcyB0ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50
cyBhcmUgcmVuZGVyZWQgYWJvdmUgei1pbmRleGVkIGVsZW1lbnRzCithbmQgc3RhY2tlZCBpbiB0
aGUgY29ycmVjdCBvcmRlciBhbW9uZ3N0IHRoZW1zZWx2ZXMuIEFsc28sIGxheWVyIGZlYXR1cmVz
IGxpa2UKK3RyYW5zZm9ybXMgYW5kIHotaW5kZXggYXJlIHRlc3RlZCBpbnNpZGUgYSB0b3AgbGF5
ZXIgZWxlbWVudCBzdWJ0cmVlLiAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRF
bmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6MTUw
cHg7CisgICAgd2lkdGg6MTUwcHg7Cit9CisuY29udGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNw
ZWN0aXZlOiA1MDBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBtYWdlbnRhOworfQorLnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlWSg0NWRlZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaWFsb2cgaWQ9InoiIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj5UaGlzIHNob3VsZCBub3QgYmUgZGlzcGxheWVkLjwvZGlhbG9nPgorPGRpYWxvZyBpZD0i
eSIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OiAtMTAiPgorICAg
IFRoaXMgd2hpdGUgYm94IGlzIHRoZSB0b3Btb3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJl
IG9uIHRvcCBvZiBldmVyeXRoaW5nLgorPC9kaWFsb2c+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGxl
ZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+CisgICAgPGRpYWxvZyBpZD0ieCIgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsgd2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBweCI+CisgICAgICAgIFRoaXMgZ3JlZW4gYm94IGlz
IGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSByZW5kZXJlZCBhYm92ZSB0aGUgcmVk
IGFuZCB5ZWxsb3cgcmVnaW9ucy4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJveCI+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1lZCBib3giPkEgdHJhbnNmb3JtIHdp
dGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjMwMHB4OyB6
LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgICAgIFRoaXMgc2hv
d3Mgei1pbmRleCBzdGFja2luZyB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuIFRoZSBjeWFu
IGJveCBzaG91bGQgYmUgb24gdG9wIG9mIHRoZSBtYWdlbnRhIG9uZS4KKyAgICAgICAgPC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5kZXg6IDE7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEi
PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsg
bGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUg
Z3JlZW4gZGlhbG9nLjwvZGl2PgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVp
Z2h0OiAyMDBlbTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB6LWluZGV4OjEwMDAiPgorPC9k
aXY+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gnKS5zaG93TW9kYWwoKTsK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgneicpLnNob3dNb2RhbCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170637</attachid>
            <date>2012-10-25 06:59:58 -0700</date>
            <delta_ts>2012-10-30 01:34:02 -0700</delta_ts>
            <desc>review comments &amp; fix assert failure</desc>
            <filename>bug-84796-20121025225831.patch</filename>
            <type>text/plain</type>
            <size>31404</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhjZDVlZWQzMzAxMDJi
ZDU0NzQ0Mjg2MDBiMzQ4ZmQ5YTY3ODdjMy4uMWRiOTUxMWUzZTY4MTY2MTM1ZjI5N2E4ZDIwZTVh
MWUzNjEzOThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEwLTI1ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcAorICAgICAgICBsYXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQor
ICAgICAgICBjb250YWluaW5nIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbAorICAgICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBS
ZW5kZXJMYXllciB0byBrbm93IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2Yg
dGhlIGxheWVycyB3aXRob3V0IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAg
ICAgICBlbGVtZW50cyB0byB0aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1v
ZGFsIGRpYWxvZyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAg
ICAgVGhlIHBsYW4gaXMgdG8gbWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRv
cCBsYXllci4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXllckVs
ZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9wTGF5
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBUb3AgbGF5ZXIgZWxlbWVudHMg
YW5kIHRoZWlyIGRlc2NlbmRhbnRzIGFyZSBtb3ZlZCBmcm9tIHRoZWlyIHJlZ3VsYXIgcG9zaXRp
b24gaW4gdGhlIHJlbmRlciB0cmVlLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKE5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldElzSW5Ub3BMYXllcik6Cisg
ICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVy
ZXJJZk5lZWRlZCk6IEFkZCByZW5kZXJlcnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBhcyBjaGls
ZHJlbiBvZiBSZW5kZXJWaWV3LCBhbmQgaW4gdG9wIGxheWVyIHN0YWNraW5nIG9yZGVyLgorICAg
ICAgICAqIGh0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERpYWxvZ0VsZW1lbnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaWFsb2dFbGVt
ZW50OjpzaG93TW9kYWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0luVG9w
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllclN1YnRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyk6
IEFkZCB0aGUgdG9wIGxheWVyIHN0YWNrIGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOiBBdm9pZCBhZGRp
bmcgbGF5ZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgZHVyaW5nIG5vcm1hbCBsYXllciBjb2xs
ZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoUmVu
ZGVyTGF5ZXIpOgorCiAyMDEyLTEwLTI0ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGaXhpbmcgdGhlIENocm9taXVtIGJ1aWxkIGFmdGVyIHR5cG8gaW4g
cjEzMjM2Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDYxOWEyNTgwMzllMTYxYTNiMGY2MzIz
OWFmYzhiM2I0ZmZhZTBlZi4uNDdkZDA3MmE0OTc3MDFlZDg5OWEwNDQzMDRjNGJkMGE0YjBlNTcw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxODgsNiArMjE4OCwxMCBAQCBfX1pOSzdXZWJD
b3JlOERvY3VtZW50MTZhbm5vdGF0ZWRSZWdpb25zRXYKIF9fWk43V2ViQ29yZThTZXR0aW5nczQx
c2V0VXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGVFYgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjEyaXNJ
blRvcExheWVyRXYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIF9fWk43V2Vi
Q29yZTEyRXZlbnRIYW5kbGVyMTdkcmFnU291cmNlRW5kZWRBdEVSS05TXzE4UGxhdGZvcm1Nb3Vz
ZUV2ZW50RU5TXzEzRHJhZ09wZXJhdGlvbkUKIF9fWk5LN1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3
ZXZlbnRNYXlTdGFydERyYWdFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA0YWQ1OTM5ZjQ3OWFhMDMzMzc4NjlmOTE1NWM0Yzc3
YTBkNWQyNGUzLi5mNzBlNWM0ZWE1NjM5MThlMzdkY2Y0OWJhMDViMmRlYzY1NTYyNjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTk4LDYgKzE5OTgsOSBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eQogICAgICAgICAvLyBUb3VjaCBvdmVyZmxvdyBzY3JvbGxpbmcg
Y3JlYXRlcyBhIHN0YWNraW5nIGNvbnRleHQuCiAgICAgICAgIHx8ICgoc3R5bGUtPm92ZXJmbG93
WCgpICE9IE9ISURERU4gfHwgc3R5bGUtPm92ZXJmbG93WSgpICE9IE9ISURERU4pICYmIHN0eWxl
LT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgICAgIHx8IChlICYmIGUtPmlzSW5Ub3BMYXllcigpKQorI2VuZGlmCiAg
ICAgICAgICkpCiAgICAgICAgIHN0eWxlLT5zZXRaSW5kZXgoMCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDcxM2VjYWU5NDU1ZjZhNGMwY2Q0ZjI4NDE3YzYzNjdjOGU2OTkwZGIuLjli
NmI1ODY1YzQ5NmVjOGYyNTQxZWYzZjg2YjlmM2Y0YjViZTdjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNTUzMSw2ICs1NTMxLDIxIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZERvY3VtZW50
VG9GdWxsU2NyZWVuQ2hhbmdlRXZlbnRRdWV1ZShEb2N1bWVudCogZG9jKQogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCit2b2lkIERvY3VtZW50OjphZGRUb1RvcExheWVy
KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKCFtX3RvcExheWVyRWxlbWVudHMuY29u
dGFpbnMoZWxlbWVudCkpOworICAgIG1fdG9wTGF5ZXJFbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7
Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUZyb21Ub3BMYXllcihFbGVtZW50KiBlbGVtZW50
KQoreworICAgIEFTU0VSVChtX3RvcExheWVyRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOwor
ICAgIHNpemVfdCBwb3NpdGlvbiA9IG1fdG9wTGF5ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOwor
ICAgIG1fdG9wTGF5ZXJFbGVtZW50cy5yZW1vdmUocG9zaXRpb24pOworfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogdm9pZCBEb2N1bWVudDo6d2Via2l0RXhpdFBvaW50ZXJM
b2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2VlYTBmMGRkYTgxOGQzNjFkMGFlMWJm
ODBmMTg4NWYzMGVhNTI3NC4uYjFhNWE4Zjk4MjlkNzAxNzlmMDQ1OWJjNTY1YzI5ZDU5NTVmODlk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExNTksNiArMTE1OSwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIGEgTG9jYWxpemVyIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgdGhlIGFy
Z3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCiAgICAgTG9jYWxpemVyJiBnZXRDYWNoZWRMb2NhbGl6
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRvbSk7CiAKKyNpZiBFTkFCTEUo
RElBTE9HX0VMRU1FTlQpCisgICAgdm9pZCBhZGRUb1RvcExheWVyKEVsZW1lbnQqKTsKKyAgICB2
b2lkIHJlbW92ZUZyb21Ub3BMYXllcihFbGVtZW50Kik7CisgICAgVmVjdG9yPFJlZlB0cjxFbGVt
ZW50PiA+JiB0b3BMYXllckVsZW1lbnRzKCkgeyByZXR1cm4gbV90b3BMYXllckVsZW1lbnRzOyB9
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYs
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwogCkBAIC0xNDU3LDYgKzE0NjMsMTAgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0
eWxlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50PiA+IG1fdG9wTGF5ZXJFbGVtZW50czsKKyNlbmRpZgorCiAgICAgaW50IG1f
bG9hZEV2ZW50RGVsYXlDb3VudDsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9sb2FkRXZlbnREZWxh
eVRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZTg0NTZmNzA0MGM3MjFhZGVmNGQy
NDIxNjUzOGJiYjcyNGNmNTI3MC4uYzRlNGQzZmJhNjliZmNmYjMxNjJiM2JjMTI4YzAwZTk3NzVl
YWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTcwLDYgKzk3MCw5IEBAIE5vZGU6Oklu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvCiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCiB7CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHNl
dElzSW5Ub3BMYXllcihmYWxzZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgc2V0Q29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFs
c2UpOwpAQCAtMTk5OSw2ICsyMDAyLDI5IEBAIHZvaWQgRWxlbWVudDo6c2V0Q29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vCiB9CiAj
ZW5kaWYgICAgCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIEVsZW1lbnQ6Omlz
SW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50
UmFyZURhdGEoKS0+aXNJblRvcExheWVyKCkgOiBmYWxzZTsKK30KKwordm9pZCBFbGVtZW50Ojpz
ZXRJc0luVG9wTGF5ZXIoYm9vbCBmbGFnKQoreworICAgIC8vIFRvIGF2b2lkIGFuIGV4dHJhIGNh
bGwgdG8gZWxlbWVudFJhcmVEYXRhKCksIGRvbid0IHVzZSBFbGVtZW50Ojppc0luVG9wTGF5ZXIo
KS4KKyAgICBFbGVtZW50UmFyZURhdGEqIHJhcmVEYXRhID0gaGFzUmFyZURhdGEoKSA/IGVsZW1l
bnRSYXJlRGF0YSgpIDogMDsKKyAgICBpZiAoKCFyYXJlRGF0YSAmJiAhZmxhZykgfHwgKHJhcmVE
YXRhICYmIHJhcmVEYXRhLT5pc0luVG9wTGF5ZXIoKSA9PSBmbGFnKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmICghcmFyZURhdGEpCisgICAgICAgIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCk7CisgICAgcmFyZURhdGEtPnNldElzSW5Ub3BMYXllcihmbGFnKTsKKyAgICBpZiAo
ZmxhZykKKyAgICAgICAgZG9jdW1lbnQoKS0+YWRkVG9Ub3BMYXllcih0aGlzKTsKKyAgICBlbHNl
CisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUZyb21Ub3BMYXllcih0aGlzKTsKKyAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50ZXJM
b2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDg5M2JiZWVmMDY3MWRkNTMyZmFmMThjYjcw
NDhkOTNiMjdhZDc4MWUuLjgxY2I3MmJkZjk1MTEwMTY5MThjYmIwYWI5Nzc3MjRiYWRmZjE1Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDExLDYgKzQxMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgdmlydHVhbCBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGI0YmM4ZTJlOTliM2FmNGJj
MGQxMzE5YzJkNWYwMzJlNDNiYjVmZmYuLmZkMjBkNGNmMjI3NzI5YmI3OTE2ZTE0N2RlYzBkYTM2
ZTQxMzU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTUzLDYgKzUz
LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQ7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6aXNJblRvcExheWVyOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJ
blRvcExheWVyOworI2VuZGlmCiAKICAgICBib29sIGhhc0NhY2hlZEhUTUxDb2xsZWN0aW9ucygp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDE3MGVlMzczN2U0ZDU2YTNmNTdlMTlh
MDY4YmI3YTE0OTg3ZjU4NmMuLmRhODJkNzFkODk3ZjdkYjNkYWQ5NTc1Yjc5NTIyNWFlYmU0ZjM5
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExMSw2ICsxMTEsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisj
aWZuZGVmIE5ERUJVRworI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjZW5kaWYKKwogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKICNpbmNsdWRlICJHZXN0dXJlRXZlbnQuaCIKICNlbmRpZgpA
QCAtMTMxNyw5ICsxMzIxLDEzIEBAIHZvaWQgTm9kZTo6ZGV0YWNoKCkKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2
ZXJzZU5leHROb2RlKHRoaXMpKSB7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIC8vIFJlbmRlckZsb3dUaHJlYWQgcmVt
b3ZlcyBzb21lIGVsZW1lbnRzIGZyb20gdGhlIHJlZ3VsYXIgdHJlZQorICAgICAgICAgICAgLy8g
UmVuZGVyRmxvd1RocmVhZCBhbmQgdGhlIHRvcCBsYXllciByZW1vdmUgZWxlbWVudHMgZnJvbSB0
aGUgcmVndWxhciB0cmVlCiAgICAgICAgICAgICAvLyBoaWVyYXJjaHkuIFRoZXkgd2lsbCBiZSBj
bGVhbmVkIHVwIHdoZW4gd2UgY2FsbCBkZXRhY2ggb24gdGhlbS4KLSAgICAgICAgICAgIEFTU0VS
VCghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmluUmVuZGVyRmxvd1RocmVhZCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmluUmVuZGVyRmxvd1RocmVhZCgpCisj
aWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgICAgICAgICAgICAgIHx8IChyZW5kZXJlci0+
ZW5jbG9zaW5nTGF5ZXIoKS0+aXNJblRvcExheWVyU3VidHJlZSgpKQorI2VuZGlmCisgICAgICAg
ICAgICAgICAgKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCmluZGV4IDViM2E1ODNiMGQyMjllOGRiZWJlZTIxY2Q2NDJkYzJjNzcwZjM0NDIuLjdh
OTdjMWMwYWU5ZTI4NmIwZDM2MGMxNjRhODVhNjNkZWZiNzE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmgKQEAgLTE5MSw2ICsxOTEsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgICAgICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkK
ICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAgICAgLCBtX2lzSW5Ub3BM
YXllcihmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTMyMCw2ICszMjMsMTAgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJu
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9
IHZhbHVlOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBp
c0luVG9wTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Ub3BMYXllcjsgfQorICAgIHZvaWQg
c2V0SXNJblRvcExheWVyKGJvb2wgdmFsdWUpIHsgbV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQor
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKQEAgLTMzNCw2
ICszNDEsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29s
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElB
TE9HX0VMRU1FTlQpCisgICAgYm9vbCBtX2lzSW5Ub3BMYXllciA6IDE7CisjZW5kaWYKIAogI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8TXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiA+IG1fbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjFm
MWMzZjg5OWZiMDkzZmJmZmI4MjQ2MWFjMWUwYzViNTNhODE5ZC4uNjQ3NTYxMTBhY2Y0OWU2YzQ0
NjE2Nzk5MzRjMDZkNWU2YzI2MDk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC0yMjAsNiArMjIwLDI4IEBAIFJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXIoKQogICAgIHJldHVybiBuZXdSZW5kZXJlcjsK
IH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK3N0YXRpYyB2b2lkIGFkanVzdEluc2Vy
dGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlck9iamVj
dComIHBhcmVudFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqJiBuZXh0UmVuZGVyZXIpCit7CisgICAg
cGFyZW50UmVuZGVyZXIgPSBwYXJlbnRSZW5kZXJlci0+dmlldygpOworICAgIG5leHRSZW5kZXJl
ciA9IDA7CisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0g
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+dG9wTGF5ZXJFbGVtZW50cygpOworICAgIHNpemVfdCB0b3BM
YXllclBvc2l0aW9uID0gdG9wTGF5ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgIEFTU0VS
VCh0b3BMYXllclBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2hpbGQgPSBwYXJlbnRSZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSBjaGls
ZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkgOiAw
OworICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNJblRvcExheWVy
KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBjaGlsZFRvcExheWVyUG9zaXRpb24gPSB0b3BMYXll
ckVsZW1lbnRzLmZpbmQoY2hpbGRFbGVtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChjaGlsZFRv
cExheWVyUG9zaXRpb24gIT0gbm90Rm91bmQpOworICAgICAgICAgICAgaWYgKHRvcExheWVyUG9z
aXRpb24gPCBjaGlsZFRvcExheWVyUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBuZXh0UmVu
ZGVyZXIgPSBjaGlsZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNy
ZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogewogICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRleHQubm9k
ZSgpOwpAQCAtMjQ5LDYgKzI3MSwxMiBAQCB2b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0
ZVJlbmRlcmVySWZOZWVkZWQoKQogICAgIC8vIERvIG5vdCBjYWxsIG1fY29udGV4dC5uZXh0UmVu
ZGVyZXIoKSBoZXJlIGluIHRoZSBmaXJzdCBjbGF1c2UsIGJlY2F1c2UgaXQgZXhwZWN0cyB0byBo
YXZlCiAgICAgLy8gdGhlIHJlbmRlcmVyIGFkZGVkIHRvIGl0cyBwYXJlbnQgYWxyZWFkeS4KICAg
ICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNGbG93VGhyZWFkUGFy
ZW50KCkgPyBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCktPm5leHRSZW5kZXJlckZvck5v
ZGUobm9kZSkgOiBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCk7CisKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNJblRvcExheWVyKCkpCisg
ICAgICAgIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KGVsZW1lbnQsIHBh
cmVudFJlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOworI2VuZGlmCisKICAgICBSZW5kZXJPYmplY3Qq
IG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIoKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAKaW5kZXggN2Q0
ZDY0NTFiZTNhOTlmNjkwZDM2ZTgzNjg5NzFmMzBjNWU5YzM0Ni4uMjk1MGZiYTZiMmU1ZWNmNWNm
YTkyZjllZTg3YjNjODMyOTM3M2Q0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGlhbG9nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9n
RWxlbWVudC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxlbWVudDo6Y2xv
c2UoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0Qm9v
bGVhbkF0dHJpYnV0ZShvcGVuQXR0ciwgZmFsc2UpOworICAgIHNldElzSW5Ub3BMYXllcihmYWxz
ZSk7CiB9CiAKIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OnNob3coKQpAQCAtNjksNiArNzAsNyBA
QCB2b2lkIEhUTUxEaWFsb2dFbGVtZW50OjpzaG93TW9kYWwoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShvcGVuQXR0ciwg
dHJ1ZSk7CisgICAgc2V0SXNJblRvcExheWVyKHRydWUpOwogfQogCiBib29sIEhUTUxEaWFsb2dF
bGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjk5
MDhhZjQyMDAyNzZjZjZhNDVlNjEzNDEwOGM5NDk1YjdkMzZiMy4uY2I0NmRiNmMyMzY0Y2EwYTRi
ZWFkMDIwODdhNmE1ZTgxMzE3ZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0zNTQ5LDYgKzM1NDksMjMgQEAgTm9kZSogUmVuZGVyTGF5ZXI6OmVuY2xv
c2luZ0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQorYm9vbCBSZW5kZXJMYXllcjo6aXNJblRvcExheWVyKCkgY29uc3QKK3sKKyAg
ICBOb2RlKiBub2RlID0gcmVuZGVyZXIoKS0+bm9kZSgpOworICAgIHJldHVybiBub2RlICYmIG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzSW5Ub3BMYXllcigpOwor
fQorCitib29sIFJlbmRlckxheWVyOjppc0luVG9wTGF5ZXJTdWJ0cmVlKCkgY29uc3QKK3sKKyAg
ICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxh
eWVyLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmlzSW5Ub3BMYXllcigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRp
ZgorCiAvLyBDb21wdXRlIHRoZSB6LW9mZnNldCBvZiB0aGUgcG9pbnQgaW4gdGhlIHRyYW5zZm9y
bVN0YXRlLgogLy8gVGhpcyBpcyBlZmZlY3RpdmVseSBwcm9qZWN0aW5nIGEgcmF5IG5vcm1hbCB0
byB0aGUgcGxhbmUgb2YgYW5jZXN0b3IsIGZpbmRpbmcgd2hlcmUgdGhhdAogLy8gcmF5IGludGVy
c2VjdHMgdGFyZ2V0LCBhbmQgY29tcHV0aW5nIHRoZSB6IGRlbHRhIGJldHdlZW4gdGhvc2UgdHdv
IHBvaW50cy4KQEAgLTQ2MzgsNiArNDY1NSwyMSBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxk
Wk9yZGVyTGlzdHMoKQogICAgIGlmIChtX25lZ1pPcmRlckxpc3QpCiAgICAgICAgIHN0ZDo6c3Rh
YmxlX3NvcnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBtX25lZ1pPcmRlckxpc3QtPmVuZCgp
LCBjb21wYXJlWkluZGV4KTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAvLyBB
cHBlbmQgbGF5ZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYWZ0ZXIgbm9ybWFsIGxheWVyIGNv
bGxlY3Rpb24sIHRvIGVuc3VyZSB0aGV5IGFyZSBvbiB0b3AgcmVnYXJkbGVzcyBvZiB6LWluZGV4
ZXMuCisgICAgLy8gVGhlIHJlbmRlcmVycyBvZiB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIGNoaWxk
cmVuIG9mIHRoZSB2aWV3LCBzb3J0ZWQgaW4gdG9wIGxheWVyIHN0YWNraW5nIG9yZGVyLgorICAg
IGlmIChpc1Jvb3RMYXllcigpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogdmlldyA9IHJlbmRl
cmVyKCktPnZpZXcoKTsKKyAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gdmlldy0+
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpID8gdG9FbGVtZW50KGNoaWxkLT5ub2RlKCkpIDogMDsKKyAgICAgICAgICAgIGlmIChj
aGlsZEVsZW1lbnQgJiYgY2hpbGRFbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICAg
ICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY2hpbGQp
LT5sYXllcigpOworICAgICAgICAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbV96T3Jk
ZXJMaXN0c0RpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTQ2NjIsNiArNDY5NCwxMSBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBWZWN0b3I8UmVuZGVyTGF5ZXIq
PiomIHBvc0J1ZmZlciwgVmVjdG9yPFJlbmRlckxheWVyKj4qJiBuZWdCdWZmZXIpCiB7CisjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlmIChpc0luVG9wTGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsK
IAogICAgIC8vIE92ZXJmbG93IGxheWVycyBhcmUganVzdCBwYWludGVkIGJ5IHRoZWlyIGVuY2xv
c2luZyBsYXllcnMsIHNvIHRoZXkgZG9uJ3QgZ2V0IHB1dCBpbiB6b3JkZXIgbGlzdHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDE4MTEwMzY0M2QzZmNmMjA2NzM5
Nzg1OTc4YzkxOWQyZTU2MjZlZDcuLmExY2MxNTdiOGI4YzQ1MTE5MWFlNzNiN2UwMzAxY2I2MjBl
MzA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02ODAsNiAr
NjgwLDExIEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIGVuY2xvc2luZ0VsZW1lbnQoKSBjb25zdDsK
IAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNv
bnN0OworICAgIGJvb2wgaXNJblRvcExheWVyU3VidHJlZSgpIGNvbnN0OworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpP
cmRlckxpc3RzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTMyMzM3NDRhYWY0ZDgwNDZkOTE5ZTdlYTBkNzkxYjM4OTYy
MmEyOS4uZmNhNGIzMjc5ZjllOTg0YjA0NzBkOWRiMDhlODZmYmE0YmI5ODlkYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDEyLTEwLTI1ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVk
ZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZv
ciB0b3AgbGF5ZXIgc3RhY2tpbmcgYW5kIHJlbmRlcmluZy4KKworICAgICAgICAqIGZhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1jb250YWluaW5nLWJsb2NrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTAtMjQgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2ZWlld2VkIGdhcmRlbmluZy4gRml4aW5nIGxpbnRlciwgbWFya2luZyAy
IG1hdGhtbCB0ZXN0cyBhcyBmbGFreSBjcmFzaGVycyBvbiBkZWJ1ZywKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5n
LWJsb2NrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYzIxY2IyYWNjMzBlMzM5YTE0OTM2YTQ3Y2I5MjFmZTlhYmUyNWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29u
dGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorPC9zY3JpcHQ+Cis8c3R5bGU+CisucHNldWRvZGlhbG9nIHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBh
dXRvOworICAgIGJvcmRlcjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91
bmQ6IHdoaXRlOworICAgIGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAwcHg7IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyI+CisgICAg
VGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgdG9wIG9mIHRoZSBz
Y3JlZW4uIEl0IGlzIHRoZSBjaGlsZCBvZiBhbiBlbGVtZW50IHBvc2l0aW9uZWQgb2ZmIHNjcmVl
biwgYnV0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIGEgdG9wIGxheWVyIGVsZW1lbnQgaXMgdGhl
IGluaXRpYWwgY29udGFpbmluZyBibG9jay4KKzwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlh
bG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDcwcHg7IGxlZnQ6IDBweDsgaGVp
Z2h0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbW9kYWwg
ZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93
LiBJdCBzaG91bGQgbm90IGJlIGNsaXBwZWQuCis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4
OyB0b3A6IDYwMHB4OyBsZWZ0OiA1MDBweCI+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9n
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lk
dGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBub24tbW9k
YWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxv
dy4gSXQgc2hvdWxkIGJlIGNsaXBwZWQuCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9
InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVm
dDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAgICBUaGlzIG1vZGFsIGRpYWxv
ZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorPC9k
aXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNjAwcHg7IG9wYWNpdHk6
IDAuMyI+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBtYWdlbnRhIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBi
ZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGl2PgorPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxv
Y2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44Y2JiNmE1YmIwNjQ3ZDhkZTFmZDY1MzU4YzMxNWViMzdmNTU3
YzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0Vs
ZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbApAQCAtMCwwICsxLDM4IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNjAw
cHg7IG9wYWNpdHk6IDAuMyI+CisgICAgPGRpYWxvZyBpZD0ieiIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRh
Ij4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRz
IGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2RpYWxvZz4KKyAgICA8ZGlhbG9nIGlkPSJh
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lk
dGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAgICAgICAgVGhpcyBub24t
bW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFj
aXR5LgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0OiAxNTBweDsgdG9wOiA2
MDBweDsgbGVmdDogNTAwcHgiPgorICAgIDxkaWFsb2cgaWQ9InkiIHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogNzBweDsgbGVmdDogMHB4OyBoZWlnaHQ6IDI1MHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZm
ZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBub3QgYmUgY2xp
cHBlZC4KKyAgICA8L2RpYWxvZz4KKyAgICA8ZGlhbG9nIGlkPSJiIiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBi
ZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIGJlIGNs
aXBwZWQuCisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6IDEwMDBweCI+CisgICAgPGRpYWxvZyBpZD0ieCIgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogNTAwcHg7IGJhY2tncm91
bmQtY29sb3I6IHllbGxvdyI+CisgICAgICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBk
aXNwbGF5ZWQgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLiBJdCBpcyB0aGUgY2hpbGQgb2YgYW4g
ZWxlbWVudCBwb3NpdGlvbmVkIG9mZiBzY3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBibG9jayBv
ZiBhIHRvcCBsYXllciBlbGVtZW50IGlzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2suCisg
ICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
eCcpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3knKS5zaG93TW9kYWwo
KTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd6Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYScpLnNob3coKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJyku
c2hvdygpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1p
Yy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkx
ZjY2MTczOTcwZDkzNjlkZWM2MDI0MzU4ODIwMWQwMDM4MDk1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5n
LWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLnBzZXVk
b2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0
bzsKKyAgICBib3JkZXI6IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5k
OiB3aGl0ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CitUaGUgc3RhY2tpbmcgb3JkZXIgc2hvdWxkIGJlOiB5ZWxsb3csIG1hZ2VudGEsIGdyZWVuLCBw
aW5rLCBjeWFuIChjbG9zZXN0IHRvIHVzZXIpCisKKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIg
aWQ9ImEiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgbGVmdDogNTBweDsg
d2lkdGg6IDI4MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPjwvZGl2PgorPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBpZD0iZCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAy
MDBweDsgbGVmdDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorPGRp
diBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0iZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAyNTBweDsgbGVmdDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4K
KzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImgiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogODBweDsgbGVmdDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IHBpbmsiPjwvZGl2
PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0iYiIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5h
bWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ3ZTY0MTljOThhNDdkNzIzYWM3ZmNlYTU5YTRmOTU0YTRj
MjEyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwKQEAgLTAsMCArMSw0OSBAQAor
PCEtLSBUaGlzIHRlc3RzIHRvcCBsYXllciBlbGVtZW50cyBzdGFja2luZyBhZnRlciBkeW5hbWlj
IGNoYW5nZXMgdG8gJ2Rpc3BsYXknLCByZW1vdmFsCitmcm9tIHRoZSBET00gdHJlZSwgYW5kIGNh
bGxpbmcgc2hvdy9jbG9zZS4gTmVzdGVkIG1vZGFsIGRpYWxvZ3MgYXJlIGFsc28gdGVzdGVkLiAt
LT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3Jp
cHQ+Cis8c3R5bGU+CitkaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1
MHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhlIHN0YWNraW5nIG9yZGVyIHNo
b3VsZCBiZTogeWVsbG93LCBtYWdlbnRhLCBncmVlbiwgcGluaywgY3lhbiAoY2xvc2VzdCB0byB1
c2VyKQorCis8ZGlhbG9nIGlkPSJhIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDog
MjgwcHg7IHRvcDogNTBweDsgbGVmdDogNTBweDsgZGlzcGxheTogbm9uZTsgYmFja2dyb3VuZC1j
b2xvcjogeWVsbG93OyB6LWluZGV4OiAxMDAwIj48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9ImIiIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBjeWFuOyB6LWluZGV4OiAtMTAwMCI+PC9kaWFsb2c+Cis8ZGl2IGlkPSJjb250
YWluZXIiPgorICAgIDxkaWFsb2cgaWQ9ImMiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMTUwcHg7IGxlZnQ6IDE1MHB4Ij48L2RpYWxvZz4KKzwvZGl2PgorPGRpYWxvZyBpZD0iZSIg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyNTBweDsgbGVmdDogMjUwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuIj4KKyAgICA8ZGlhbG9nIGlkPSJkIiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YSI+CisgICAgICAgIDxkaWFsb2cgaWQ9ImYiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMzAwcHg7IGxlZnQ6IDMwMHB4Ij4KKyAgICAgICAgICAgIDxkaWFsb2cgaWQ9ImciIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMzUwcHg7IGxlZnQ6IDM1MHB4Ij48L2RpYWxv
Zz4KKyAgICAgICAgPC9kaWFsb2c+CisgICAgICAgIDxkaWFsb2cgaWQ9ImgiIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogODBweDsgbGVmdDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6
IHBpbmsiPjwvZGlhbG9nPgorICAgIDwvZGlhbG9nPgorPC9kaWFsb2c+Cis8c2NyaXB0PgordmFy
IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZicpOworZi5zaG93TW9kYWwoKTsKK2cuc2hv
d01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnNob3dNb2RhbCgpOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKS5zaG93TW9kYWwoKTsKK2YucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChmKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkJykuc2hvd01vZGFsKCk7Citk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2gnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJyku
Y2xvc2UoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJykuc2hvd01vZGFsKCk7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYScpLnNob3coKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOTdiZWUzZGNiZjFiNjZjNDc0NDA5N2EyMTY0ZTE5OTEzZjc2NzM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+Cis8c3R5
bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKy5j
b250YWluZXIgeworICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDUwMHB4OworICAgIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGE7Cit9CisudHJh
bnNmb3JtZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDQ1ZGVnKTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBjeWFuOworfQorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAg
ICBib3JkZXI6IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0
ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJw
c2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsgei1pbmRleDoz
MDAwIj4KKyAgICBUaGlzIHdoaXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0
IHNob3VsZCBiZSBvbiB0b3Agb2YgZXZlcnl0aGluZy4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyBsZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPjwvZGl2PgorPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogNzUlOyBoZWlnaHQ6IDQwMHB4OyB6LWluZGV4
OjIwMDAiPgorICAgIFRoaXMgZ3JlZW4gYm94IGlzIGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNo
b3VsZCBiZSByZW5kZXJlZCBhYm92ZSB0aGUgcmVkIGFuZCB5ZWxsb3cgcmVnaW9ucy4KKyAgICA8
ZGl2IGNsYXNzPSJjb250YWluZXIgYm94Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3Jt
ZWQgYm94Ij5BIHRyYW5zZm9ybSB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+Cisg
ICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6MzAwcHg7IHotaW5kZXg6IDI7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAg
ICBUaGlzIHNob3dzIHotaW5kZXggc3RhY2tpbmcgd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVl
LiBUaGUgY3lhbiBib3ggc2hvdWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFnZW50YSBvbmUuCisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0
b3A6MzUwcHg7IGxlZnQ6NTBweDsgei1pbmRleDogMTsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50
YSI+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxl
ZnQ6IDMwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdy
ZWVuIGRpYWxvZy48L2Rpdj4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAwZW07IGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLXN0YWNraW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjM4Yjk5MmZlZDc2
ODcyOTM5YzVkZDkwNTJiZDE0MDYyMjgxYjFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwKQEAg
LTAsMCArMSw1MiBAQAorPCEtLSBUaGlzIHRlc3RzIHRoYXQgdG9wIGxheWVyIGVsZW1lbnRzIGFy
ZSByZW5kZXJlZCBhYm92ZSB6LWluZGV4ZWQgZWxlbWVudHMKK2FuZCBzdGFja2VkIGluIHRoZSBj
b3JyZWN0IG9yZGVyIGFtb25nc3QgdGhlbXNlbHZlcy4gQWxzbywgbGF5ZXIgZmVhdHVyZXMgbGlr
ZQordHJhbnNmb3JtcyBhbmQgei1pbmRleCBhcmUgdGVzdGVkIGluc2lkZSBhIHRvcCBsYXllciBl
bGVtZW50IHN1YnRyZWUuIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJs
ZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5ib3ggeworICAgIGhlaWdodDoxNTBweDsK
KyAgICB3aWR0aDoxNTBweDsKK30KKy5jb250YWluZXIgeworICAgIC13ZWJraXQtcGVyc3BlY3Rp
dmU6IDUwMHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91bmQt
Y29sb3I6IG1hZ2VudGE7Cit9CisudHJhbnNmb3JtZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3Jt
OiByb3RhdGVZKDQ1ZGVnKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpYWxvZyBpZD0ieiIgc3R5bGU9ImRpc3BsYXk6IG5vbmUi
PlRoaXMgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuPC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJ5IiBz
dHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IHotaW5kZXg6IC0xMCI+CisgICAgVGhp
cyB3aGl0ZSBib3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgb24g
dG9wIG9mIGV2ZXJ5dGhpbmcuCis8L2RpYWxvZz4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgbGVmdDog
MDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7Ij4KKyAgICA8ZGlhbG9nIGlkPSJ4IiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3
aWR0aDogNzUlOyBoZWlnaHQ6IDQwMHB4Ij4KKyAgICAgICAgVGhpcyBncmVlbiBib3ggaXMgYWxz
byBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFib3ZlIHRoZSByZWQgYW5k
IHllbGxvdyByZWdpb25zLgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgYm94Ij4KKyAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InRyYW5zZm9ybWVkIGJveCI+QSB0cmFuc2Zvcm0gd2l0aGlu
IHRoZSBkaWFsb2cncyBzdWJ0cmVlLjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6MzAwcHg7IHotaW5k
ZXg6IDI7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICAgICAgVGhpcyBzaG93cyB6
LWluZGV4IHN0YWNraW5nIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS4gVGhlIGN5YW4gYm94
IHNob3VsZCBiZSBvbiB0b3Agb2YgdGhlIG1hZ2VudGEgb25lLgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6MzUw
cHg7IGxlZnQ6NTBweDsgei1pbmRleDogMTsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9k
aXY+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiA5MHB4OyBsZWZ0
OiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+VGhpcyBpcyBwYXJ0IG9mIHRoZSBncmVl
biBkaWFsb2cuPC9kaXY+CisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBoZWlnaHQ6
IDIwMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IHotaW5kZXg6MTAwMCI+Cis8L2Rpdj4K
KzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneCcpLnNob3dNb2RhbCgpOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3knKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd6Jykuc2hvd01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171395</attachid>
            <date>2012-10-30 01:34:07 -0700</date>
            <delta_ts>2012-10-31 23:56:47 -0700</delta_ts>
            <desc>fix win compile failure</desc>
            <filename>bug-84796-20121030173232.patch</filename>
            <type>text/plain</type>
            <size>31391</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyYTU0Y2Y1ZDgxYzA3
NGUyZWEzNjU4NjM2ZTYwZGEyYjU5MjEyZC4uODdjNTE2OTA5ZjY4MThjZDk0YTQwOTFlN2FjZGJi
ZWQzODRkY2RiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTEwLTMwICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gRWxlbWVudHMgaW4gdGhlIHRvcAorICAgICAgICBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlIGFkZGVkIHRvIHRoZSByb290CisgICAgICAgIGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUgb3JkZXIgb2Yg
dGhlIHRvcAorICAgICAgICBsYXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZSBhbGwgb3RoZXIgc3RhY2tpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQor
ICAgICAgICBjb250YWluaW5nIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbAorICAgICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBS
ZW5kZXJMYXllciB0byBrbm93IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2Yg
dGhlIGxheWVycyB3aXRob3V0IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAg
ICAgICBlbGVtZW50cyB0byB0aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1v
ZGFsIGRpYWxvZyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAg
ICAgVGhlIHBsYW4gaXMgdG8gbWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRv
cCBsYXllci4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXllckVs
ZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9wTGF5
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBBZGQgYW4gZXhjZXB0aW9uIHRv
IHRoZSBhc3NlcnQgc2luY2UgdG9wIGxheWVyIGVsZW1lbnRzIGFuZCB0aGVpciBkZXNjZW5kYW50
cyBhcmUgbW92ZWQgZnJvbSB0aGVpcgorICAgICAgICByZWd1bGFyIHBvc2l0aW9uIGluIHRoZSBy
ZW5kZXIgdHJlZS4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChOb2RlUmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXIpOgorICAgICAgICAqIGRv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQp
OiBBZGQgcmVuZGVyZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYXMgY2hpbGRyZW4gb2YgUmVu
ZGVyVmlldywgYW5kCisgICAgICAgIGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAgICAg
ICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxE
aWFsb2dFbGVtZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxlbWVu
dDo6c2hvd01vZGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNJblRvcExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0luVG9wTGF5ZXJTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMpOiBB
ZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKTogQXZvaWQgYWRkaW5n
IGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGR1cmluZyBub3JtYWwgbGF5ZXIgY29sbGVj
dGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRl
ckxheWVyKToKKwogMjAxMi0xMC0yOSAgR2xlbm4gQWRhbXMgIDxnbGVubkBza3luYXYuY29tPgog
CiAgICAgICAgIFtDU1NPTV0gRXh0cmFuZW91cyB3aGl0ZXNwYWNlIGluIENTU0ltcG9ydFJ1bGUu
Y3NzVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1NzAyOWVlNzAzMWUxYmQ5OTM5ZTBlNWI5
OWM0Nzg2ZTVmMjQ2ZjgyLi5kOTNjZjNjYzFjNWI2NjBmOTIwODJhNzM2YzUyZjcwOTBjMjkxZmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjIwNiw2ICsyMjA2LDEwIEBAIF9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxNmFubm90YXRlZFJlZ2lvbnNFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFz
ZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZUViCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK19fWk5LN1dlYkNvcmUxMVJlbmRlckxheWVyMTJpc0lu
VG9wTGF5ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJLTlNfMThQbGF0Zm9ybU1vdXNl
RXZlbnRFTlNfMTNEcmFnT3BlcmF0aW9uRQogX19aTks3V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdl
dmVudE1heVN0YXJ0RHJhZ0VSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDAzZDEyZDIxMTJmM2VkNzljNDllNjAwZTIxMWNiOWZj
NTFmYTFjNDUuLjdlOWMxMjJhNWNlMGU2NzIxMmZlOTQ4MTcyZDk4NGRmZGE3ZDg3MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5NjksNiArMTk2OSw5IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5CiAgICAgICAgIC8vIFRvdWNoIG92ZXJmbG93IHNjcm9sbGluZyBj
cmVhdGVzIGEgc3RhY2tpbmcgY29udGV4dC4KICAgICAgICAgfHwgKChzdHlsZS0+b3ZlcmZsb3dY
KCkgIT0gT0hJRERFTiB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgIT0gT0hJRERFTikgJiYgc3R5bGUt
PnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKKyAgICAgICAgfHwgKGUgJiYgZS0+aXNJblRvcExheWVyKCkpCisjZW5kaWYKICAg
ICAgICAgKSkKICAgICAgICAgc3R5bGUtPnNldFpJbmRleCgwKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggYTY5ZTEyZWM3OTE1NmVhODViODcwZGNmNTNhN2QwN2I3MDExMTAzMi4uNzNh
MjE5Y2RiMDIzNjJmYWFhOTNhMzk4NGQ2NDc1ZmUwZDhjZWRmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC01NTM2LDYgKzU1MzYsMjEgQEAgdm9pZCBEb2N1bWVudDo6YWRkRG9jdW1lbnRU
b0Z1bGxTY3JlZW5DaGFuZ2VFdmVudFF1ZXVlKERvY3VtZW50KiBkb2MpCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK3ZvaWQgRG9jdW1lbnQ6OmFkZFRvVG9wTGF5ZXIo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1fdG9wTGF5ZXJFbGVtZW50cy5jb250
YWlucyhlbGVtZW50KSk7CisgICAgbV90b3BMYXllckVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsK
K30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgQVNTRVJUKG1fdG9wTGF5ZXJFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7Cisg
ICAgc2l6ZV90IHBvc2l0aW9uID0gbV90b3BMYXllckVsZW1lbnRzLmZpbmQoZWxlbWVudCk7Cisg
ICAgbV90b3BMYXllckVsZW1lbnRzLnJlbW92ZShwb3NpdGlvbik7Cit9CisjZW5kaWYKKwogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0UG9pbnRlckxv
Y2soKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzNjJjMTlmZjU0MWE2MWRlMmFiOTMxYzE5
Mzk5OGY4ZmE2NWQyMzhmLi5hMzE4NGM3MzZjNzU1YTEwMGFkM2E5OGQxOTI1ZTExZTQ0ZjU4ZDg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTE1OSw2ICsxMTU5LDEyIEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm4gYSBMb2NhbGUgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1l
bnQgaXMgbnVsbCBvciBlbXB0eS4KICAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZSA9IG51bGxBdG9tKTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxF
TUVOVCkKKyAgICB2b2lkIGFkZFRvVG9wTGF5ZXIoRWxlbWVudCopOworICAgIHZvaWQgcmVtb3Zl
RnJvbVRvcExheWVyKEVsZW1lbnQqKTsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRv
cExheWVyRWxlbWVudHMoKSB7IHJldHVybiBtX3RvcExheWVyRWxlbWVudHM7IH0KKyNlbmRpZgor
CiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hI
VE1MLCBib29sIGlzSFRNTCk7CiAKQEAgLTE0NTcsNiArMTQ2MywxMCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1l
bnQ+ID4gbV90b3BMYXllckVsZW1lbnRzOworI2VuZGlmCisKICAgICBpbnQgbV9sb2FkRXZlbnRE
ZWxheUNvdW50OwogICAgIFRpbWVyPERvY3VtZW50PiBtX2xvYWRFdmVudERlbGF5VGltZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4OTljMzM0N2E3MDQ1YjA1NzA0NDhmNjcwODQzNTJl
YmY3OTJjYTdkLi40YWNjMGY4MGFiMTViZDRkZDdhZTgyN2Y3YjI2MTRhZTM3MWQ4N2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05NTMsNiArOTUzLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5z
ZXJ0aW8KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRp
b25Qb2ludCkKIHsKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgc2V0SXNJblRvcExh
eWVyKGZhbHNlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAo
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7CkBAIC0x
OTgxLDYgKzE5ODQsMjkgQEAgdm9pZCBFbGVtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhib28KIH0KICNlbmRpZiAgICAK
IAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgRWxlbWVudDo6aXNJblRvcExheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgp
LT5pc0luVG9wTGF5ZXIoKSA6IGZhbHNlOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzSW5Ub3BM
YXllcihib29sIGZsYWcpCit7CisgICAgLy8gVG8gYXZvaWQgYW4gZXh0cmEgY2FsbCB0byBlbGVt
ZW50UmFyZURhdGEoKSwgZG9uJ3QgdXNlIEVsZW1lbnQ6OmlzSW5Ub3BMYXllcigpLgorICAgIEVs
ZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRh
KCkgOiAwOworICAgIGlmICgoIXJhcmVEYXRhICYmICFmbGFnKSB8fCAocmFyZURhdGEgJiYgcmFy
ZURhdGEtPmlzSW5Ub3BMYXllcigpID09IGZsYWcpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFyYXJlRGF0YSkKKyAgICAgICAgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsK
KyAgICByYXJlRGF0YS0+c2V0SXNJblRvcExheWVyKGZsYWcpOworICAgIGlmIChmbGFnKQorICAg
ICAgICBkb2N1bWVudCgpLT5hZGRUb1RvcExheWVyKHRoaXMpOworICAgIGVsc2UKKyAgICAgICAg
ZG9jdW1lbnQoKS0+cmVtb3ZlRnJvbVRvcExheWVyKHRoaXMpOworICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogdm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggMTQ4NTcwMzNiODY1OWIxNGQ5MzA1Y2E4Y2ExYWU4YTQ0ODhm
MGQ0Ni4uMmJlZmNjMWYyM2JiNzJhMzljYzIyZDA5YzE3MzA3MWNkNmVhZDgxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC00MTEsNiArNDExLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJl
cXVlc3RGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHNldElzSW5Ub3BMYXllcihib29sKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggYjRiYzhlMmU5OWIzYWY0YmMwZDEzMTljMmQ1
ZjAzMmU0M2JiNWZmZi4uZmQyMGQ0Y2YyMjc3MjliYjc5MTZlMTQ3ZGVjMGRhMzZlNDEzNTcwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNTMsNiArNTMsMTAgQEAgcHVi
bGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsK
ICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgdXNpbmcgTm9kZVJhcmVEYXRh
Ojppc0luVG9wTGF5ZXI7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXI7
CisjZW5kaWYKIAogICAgIGJvb2wgaGFzQ2FjaGVkSFRNTENvbGxlY3Rpb25zKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNjAzMDBmYTIzNDc1YTJlZGY3M2RkYmJkNzA1OWU0MTY5
MWU0NzFkNC4uZDUyMjkwZmQzODAwMmQ3ZGFjNTA1YTUzNzRhYzY1ZTUyOTU4NzJmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTEyLDYgKzExMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZm5kZWYgTkRF
QlVHCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQogI2luY2x1ZGUgIkdlc3R1cmVFdmVudC5oIgogI2VuZGlmCkBAIC0xMzE4LDkg
KzEzMjIsMTMgQEAgdm9pZCBOb2RlOjpkZXRhY2goKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
Zm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5v
ZGUodGhpcykpIHsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwotICAgICAgICAgICAgLy8gUmVuZGVyRmxvd1RocmVhZCByZW1vdmVzIHNvbWUg
ZWxlbWVudHMgZnJvbSB0aGUgcmVndWxhciB0cmVlCisgICAgICAgICAgICAvLyBSZW5kZXJGbG93
VGhyZWFkIGFuZCB0aGUgdG9wIGxheWVyIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1bGFy
IHRyZWUKICAgICAgICAgICAgIC8vIGhpZXJhcmNoeS4gVGhleSB3aWxsIGJlIGNsZWFuZWQgdXAg
d2hlbiB3ZSBjYWxsIGRldGFjaCBvbiB0aGVtLgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
KyAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmluUmVuZGVyRmxvd1Ro
cmVhZCgpIHx8IChyZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKS0+aXNJblRvcExheWVyU3VidHJl
ZSgpKSk7CisjZWxzZQogICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCByZW5kZXJlci0+
aW5SZW5kZXJGbG93VGhyZWFkKCkpOworI2VuZGlmCiAgICAgICAgIH0KICNlbmRpZgogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA1YjNhNTgzYjBkMjI5ZThkYmViZWUyMWNk
NjQyZGMyYzc3MGYzNDQyLi43YTk3YzFjMGFlOWUyODZiMGQzNjBjMTY0YTg1YTYzZGVmYjcxNjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xOTEsNiArMTkxLDkgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgLCBtX2NvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisg
ICAgICAgICwgbV9pc0luVG9wTGF5ZXIoZmFsc2UpCisjZW5kaWYKICAgICB7CiAgICAgfQogCkBA
IC0zMjAsNiArMzIzLDEwIEBAIHByb3RlY3RlZDoKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2
b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0luVG9w
TGF5ZXI7IH0KKyAgICB2b2lkIHNldElzSW5Ub3BMYXllcihib29sIHZhbHVlKSB7IG1faXNJblRv
cExheWVyID0gdmFsdWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFRyZWVTY29wZSogbV90
cmVlU2NvcGU7CkBAIC0zMzQsNiArMzQxLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgOiAxOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGJvb2wgbV9pc0luVG9wTGF5ZXIg
OiAxOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIE93blB0
cjxWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4gPiBtX211dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDIxZjFjM2Y4OTlmYjA5M2ZiZmZiODI0NjFhYzFlMGM1YjUzYTgxOWQu
LjY0NzU2MTEwYWNmNDllNmM0NDYxNjc5OTM0YzA2ZDVlNmMyNjA5NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjIwLDYgKzIyMCwyOCBAQCBS
ZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVyKCkKICAgICBy
ZXR1cm4gbmV3UmVuZGVyZXI7CiB9CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitzdGF0
aWMgdm9pZCBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudChFbGVtZW50KiBl
bGVtZW50LCBSZW5kZXJPYmplY3QqJiBwYXJlbnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiYgbmV4
dFJlbmRlcmVyKQoreworICAgIHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnZpZXco
KTsKKyAgICBuZXh0UmVuZGVyZXIgPSAwOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYg
dG9wTGF5ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnRvcExheWVyRWxlbWVudHMo
KTsKKyAgICBzaXplX3QgdG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChl
bGVtZW50KTsKKyAgICBBU1NFUlQodG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3VuZCk7CisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcGFyZW50UmVuZGVyZXItPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgRWxlbWVudCog
Y2hpbGRFbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50
KGNoaWxkLT5ub2RlKCkpIDogMDsKKyAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVs
ZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgICAgICBzaXplX3QgY2hpbGRUb3BMYXll
clBvc2l0aW9uID0gdG9wTGF5ZXJFbGVtZW50cy5maW5kKGNoaWxkRWxlbWVudCk7CisgICAgICAg
ICAgICBBU1NFUlQoY2hpbGRUb3BMYXllclBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAgICAgICAg
ICAgIGlmICh0b3BMYXllclBvc2l0aW9uIDwgY2hpbGRUb3BMYXllclBvc2l0aW9uKSB7CisgICAg
ICAgICAgICAgICAgbmV4dFJlbmRlcmVyID0gY2hpbGQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKIHsKICAgICBOb2RlKiBu
b2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKQEAgLTI0OSw2ICsyNzEsMTIgQEAgdm9pZCBOb2RlUmVu
ZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAgICAvLyBEbyBub3QgY2Fs
bCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkgaGVyZSBpbiB0aGUgZmlyc3QgY2xhdXNlLCBiZWNh
dXNlIGl0IGV4cGVjdHMgdG8gaGF2ZQogICAgIC8vIHRoZSByZW5kZXJlciBhZGRlZCB0byBpdHMg
cGFyZW50IGFscmVhZHkuCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX2NvbnRl
eHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8gbV9jb250ZXh0LnBhcmVudEZsb3dSZW5kZXJlcigp
LT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUpIDogbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpOwor
CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQt
PmlzSW5Ub3BMYXllcigpKQorICAgICAgICBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVy
RWxlbWVudChlbGVtZW50LCBwYXJlbnRSZW5kZXJlciwgbmV4dFJlbmRlcmVyKTsKKyNlbmRpZgor
CiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKCk7CiAKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0Vs
ZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5MGQzNmU4MzY4OTcxZjMwYzVlOWMzNDYu
LjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgzMjkzNzNkNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHZvaWQgSFRN
TERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIGZhbHNlKTsKKyAgICBz
ZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lkIEhUTUxEaWFsb2dFbGVtZW50OjpzaG93
KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxlbWVudDo6c2hvd01vZGFsKEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5B
dHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNldElzSW5Ub3BMYXllcih0cnVlKTsKIH0K
IAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDk1NzlkZDBhZTZjZTNkZDZlNmU4MGYxYzBjN2Y5NWI4OGY3OWU4ZTcu
LmJkNmMzNzZjZDEwZGI2NTBiMDg0MmI1NDg2ZjI0MWFjNTExZTQyMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzU0OSw2ICszNTQ5LDIzIEBAIE5vZGUq
IFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0K
IAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzSW5Ub3BM
YXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKTsKKyAg
ICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUp
LT5pc0luVG9wTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6aXNJblRvcExheWVyU3Vi
dHJlZSgpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIgPSB0aGlz
OyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5p
c0luVG9wTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gQ29tcHV0ZSB0aGUgei1vZmZzZXQgb2YgdGhlIHBv
aW50IGluIHRoZSB0cmFuc2Zvcm1TdGF0ZS4KIC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgcHJvamVj
dGluZyBhIHJheSBub3JtYWwgdG8gdGhlIHBsYW5lIG9mIGFuY2VzdG9yLCBmaW5kaW5nIHdoZXJl
IHRoYXQKIC8vIHJheSBpbnRlcnNlY3RzIHRhcmdldCwgYW5kIGNvbXB1dGluZyB0aGUgeiBkZWx0
YSBiZXR3ZWVuIHRob3NlIHR3byBwb2ludHMuCkBAIC00NjM4LDYgKzQ2NTUsMjEgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICBpZiAobV9uZWdaT3JkZXJMaXN0
KQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9yZGVyTGlzdC0+YmVnaW4oKSwgbV9u
ZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgLy8gQXBwZW5kIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFm
dGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9wIHJl
Z2FyZGxlc3Mgb2Ygei1pbmRleGVzLgorICAgIC8vIFRoZSByZW5kZXJlcnMgb2YgdG9wIGxheWVy
IGVsZW1lbnRzIGFyZSBjaGlsZHJlbiBvZiB0aGUgdmlldywgc29ydGVkIGluIHRvcCBsYXllciBz
dGFja2luZyBvcmRlci4KKyAgICBpZiAoaXNSb290TGF5ZXIoKSkgeworICAgICAgICBSZW5kZXJP
YmplY3QqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CisgICAgICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IHZpZXctPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IGNoaWxk
LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChjaGlsZC0+bm9kZSgpKSA6IDA7
CisgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNJblRvcExh
eWVyKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGNoaWxkKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBtX3Bvc1pPcmRl
ckxpc3QtPmFwcGVuZChsYXllcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisj
ZW5kaWYKKwogICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCkBAIC00NjYyLDYg
KzQ2OTQsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogCiB2
b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywg
VmVjdG9yPFJlbmRlckxheWVyKj4qJiBwb3NCdWZmZXIsIFZlY3RvcjxSZW5kZXJMYXllcio+KiYg
bmVnQnVmZmVyKQogeworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoaXNJblRv
cExheWVyKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgdXBkYXRlRGVzY2VuZGFu
dERlcGVuZGVudEZsYWdzKCk7CiAKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3QgcGFp
bnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQgaW4g
em9yZGVyIGxpc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAx
ODExMDM2NDNkM2ZjZjIwNjczOTc4NTk3OGM5MTlkMmU1NjI2ZWQ3Li5hMWNjMTU3YjhiOGM0NTEx
OTFhZTczYjdlMDMwMWNiNjIwZTMwNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaApAQCAtNjgwLDYgKzY4MCwxMSBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBlbmNsb3Np
bmdFbGVtZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9v
bCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGlzSW5Ub3BMYXllclN1YnRyZWUoKSBj
b25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMoKTsK
ICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4MTNiNGY1MTM4Y2RlNGUx
OTM0MDM3NDI0ZjdmYTkzMzE4YjhmZTIuLmUxMGI4M2Q4YTRiOTcyNjYzY2E0ODA5Y2E4YjdjNzAy
OTliMmU0NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0zMCAgTWF0dCBGYWxrZW5o
YWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZXcg
c3RhY2tpbmcgbGF5ZXIgbmVlZGVkIGJ5IHRoZSBGdWxsc2NyZWVuIEFQSSBhbmQgdGhlIG5ldyA8
ZGlhbG9nPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0cyBmb3IgdG9wIGxheWVyIHN0YWNraW5nIGFuZCByZW5kZXJpbmcuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmlu
Zy1ibG9jay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1p
Yy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVy
LXN0YWNraW5nLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTI5ICBHbGVubiBBZGFtcyAgPGdsZW5u
QHNreW5hdi5jb20+CiAgICAgICAgCiAgICAgICAgIFtDU1NPTV0gRXh0cmFuZW91cyB3aGl0ZXNw
YWNlIGluIENTU0ltcG9ydFJ1bGUuY3NzVGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNjMjFjYjJhY2Mz
MGUzMzlhMTQ5MzZhNDdjYjkyMWZlOWFiZTI1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2Nr
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9y
ZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7Cisg
ICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVp
Z2h0OiA1MDBweDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij4KKyAgICBUaGlzIG1vZGFsIGRp
YWxvZyBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gSXQgaXMg
dGhlIGNoaWxkIG9mIGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYgc2NyZWVuLCBidXQgdGhlIGNv
bnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBpcyB0aGUgaW5pdGlhbCBjb250
YWluaW5nIGJsb2NrLgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNzBweDsgbGVmdDogMHB4OyBoZWlnaHQ6IDI1MHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxk
IGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBu
b3QgYmUgY2xpcHBlZC4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBv
dmVyZmxvdzogaGlkZGVuOyB3aWR0aDogNTAwcHg7IGhlaWdodDogMTUwcHg7IHRvcDogNjAwcHg7
IGxlZnQ6IDUwMHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJh
Y2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hv
dWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQg
YmUgY2xpcHBlZC4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9n
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGJhY2tn
cm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1
bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCis8L2Rpdj4KKzxkaXYgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA2MDBweDsgb3BhY2l0eTogMC4zIj4KKyAgICA8
ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2Vu
dGEiPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5
IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhjYmI2YTViYjA2NDdkOGRlMWZkNjUzNThjMzE1ZWIzN2Y1NTdjNzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5
ZXItY29udGFpbmluZy1ibG9jay5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA2MDBweDsgb3BhY2l0eTog
MC4zIj4KKyAgICA8ZGlhbG9nIGlkPSJ6IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDIwMHB4OyBsZWZ0OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgICAgICBU
aGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0
aCBvcGFjaXR5LgorICAgIDwvZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9ImEiIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJh
Y2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cg
c2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9k
aWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6
IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4OyB0b3A6IDYwMHB4OyBsZWZ0OiA1
MDBweCI+CisgICAgPGRpYWxvZyBpZD0ieSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiA3MHB4OyBsZWZ0OiAwcHg7IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4i
PgorICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMg
YW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgorICAgIDwv
ZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9ImIiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5
YW4iPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5
IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgYmUgY2xpcHBlZC4KKyAgICA8
L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEw
MDBweDsgbGVmdDogMTAwMHB4Ij4KKyAgICA8ZGlhbG9nIGlkPSJ4IiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93Ij4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0
aGUgdG9wIG9mIHRoZSBzY3JlZW4uIEl0IGlzIHRoZSBjaGlsZCBvZiBhbiBlbGVtZW50IHBvc2l0
aW9uZWQgb2ZmIHNjcmVlbiwgYnV0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIGEgdG9wIGxheWVy
IGVsZW1lbnQgaXMgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jay4KKyAgICA8L2RpYWxvZz4K
KzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4Jykuc2hvd01vZGFs
KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneScpLnNob3dNb2RhbCgpOworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3onKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhJykuc2hvdygpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93KCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3Rh
Y2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3OTFmNjYxNzM5NzBkOTM2
OWRlYzYwMjQzNTg4MjAxZDAwMzgwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1l
bnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisucHNldWRvZGlhbG9nIHsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRl
cjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAg
IGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoZSBzdGFja2lu
ZyBvcmRlciBzaG91bGQgYmU6IHllbGxvdywgbWFnZW50YSwgZ3JlZW4sIHBpbmssIGN5YW4gKGNs
b3Nlc3QgdG8gdXNlcikKKworPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBpZD0iYSIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBsZWZ0OiA1MHB4OyB3aWR0aDogMjgwcHg7
IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFs
b2ciIGlkPSJkIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAy
MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1
ZG9kaWFsb2ciIGlkPSJlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDI1MHB4OyBs
ZWZ0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPGRpdiBjbGFzcz0i
cHNldWRvZGlhbG9nIiBpZD0iaCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA4MHB4
OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcGluayI+PC9kaXY+Cis8ZGl2IGNsYXNz
PSJwc2V1ZG9kaWFsb2ciIGlkPSJiIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEw
MHB4OyBsZWZ0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZDdlNjQxOWM5OGE0N2Q3MjNhYzdmY2VhNTlhNGY5NTRhNGMyMTJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IS0tIFRoaXMgdGVz
dHMgdG9wIGxheWVyIGVsZW1lbnRzIHN0YWNraW5nIGFmdGVyIGR5bmFtaWMgY2hhbmdlcyB0byAn
ZGlzcGxheScsIHJlbW92YWwKK2Zyb20gdGhlIERPTSB0cmVlLCBhbmQgY2FsbGluZyBzaG93L2Ns
b3NlLiBOZXN0ZWQgbW9kYWwgZGlhbG9ncyBhcmUgYWxzbyB0ZXN0ZWQuIC0tPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4K
K2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGUgc3RhY2tpbmcgb3JkZXIgc2hvdWxkIGJlOiB5ZWxs
b3csIG1hZ2VudGEsIGdyZWVuLCBwaW5rLCBjeWFuIChjbG9zZXN0IHRvIHVzZXIpCisKKzxkaWFs
b2cgaWQ9ImEiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAyODBweDsgdG9wOiA1
MHB4OyBsZWZ0OiA1MHB4OyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7
IHotaW5kZXg6IDEwMDAiPjwvZGlhbG9nPgorPGRpYWxvZyBpZD0iYiIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5
YW47IHotaW5kZXg6IC0xMDAwIj48L2RpYWxvZz4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAg
PGRpYWxvZyBpZD0iYyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBweDsgbGVm
dDogMTUwcHgiPjwvZGlhbG9nPgorPC9kaXY+Cis8ZGlhbG9nIGlkPSJlIiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDI1MHB4OyBsZWZ0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW4iPgorICAgIDxkaWFsb2cgaWQ9ImQiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMjAwcHg7IGxlZnQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAgICAg
ICAgPGRpYWxvZyBpZD0iZiIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAzMDBweDsg
bGVmdDogMzAwcHgiPgorICAgICAgICAgICAgPGRpYWxvZyBpZD0iZyIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAzNTBweDsgbGVmdDogMzUwcHgiPjwvZGlhbG9nPgorICAgICAgICA8
L2RpYWxvZz4KKyAgICAgICAgPGRpYWxvZyBpZD0iaCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0
ZTsgdG9wOiA4MHB4OyBsZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcGluayI+PC9kaWFs
b2c+CisgICAgPC9kaWFsb2c+Cis8L2RpYWxvZz4KKzxzY3JpcHQ+Cit2YXIgZiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmJyk7CitmLnNob3dNb2RhbCgpOworZy5zaG93TW9kYWwoKTsKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYycpLnNob3dNb2RhbCgpOworZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpOwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2QnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdlJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaCcp
LnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5jbG9zZSgpOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2InKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhJykuc2hvdygpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKS5zdHlsZS5k
aXNwbGF5ID0gJ2Jsb2NrJzsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXIt
c3RhY2tpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5N2Jl
ZTNkY2JmMWI2NmM0NzQ0MDk3YTIxNjRlMTk5MTNmNzY3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmct
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKzxzdHlsZT4KKy5ib3ggewor
ICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworfQorLmNvbnRhaW5lciB7Cisg
ICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YTsKK30KKy50cmFuc2Zvcm1lZCB7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoNDVkZWcpOworICAgIGJhY2tncm91bmQtY29s
b3I6IGN5YW47Cit9CisucHNldWRvZGlhbG9nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRlcjogc29s
aWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIGNvbG9y
OiBibGFjazsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIg
c3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OjMwMDAiPgorICAgIFRo
aXMgd2hpdGUgYm94IGlzIHRoZSB0b3Btb3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIG9u
IHRvcCBvZiBldmVyeXRoaW5nLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGxlZnQ6IDA7
IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFs
b2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAwcHg7IHotaW5kZXg6MjAwMCI+CisgICAg
VGhpcyBncmVlbiBib3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRl
cmVkIGFib3ZlIHRoZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAgIDxkaXYgY2xhc3M9ImNv
bnRhaW5lciBib3giPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1lZCBib3giPkEgdHJh
bnNmb3JtIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozMDBweDsg
ei1pbmRleDogMjsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgc2hvd3Mg
ei1pbmRleCBzdGFja2luZyB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuIFRoZSBjeWFuIGJv
eCBzaG91bGQgYmUgb24gdG9wIG9mIHRoZSBtYWdlbnRhIG9uZS4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVm
dDo1MHB4OyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwv
ZGl2PgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7
IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVpZ2h0OiAyMDBlbTsgYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93OyB6LWluZGV4OjEwMDAiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3Rh
Y2tpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1zdGFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMzhiOTkyZmVkNzY4NzI5MzljNWRkOTA1
MmJkMTQwNjIyODFiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApAQCAtMCwwICsxLDUyIEBA
Cis8IS0tIFRoaXMgdGVzdHMgdGhhdCB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGFi
b3ZlIHotaW5kZXhlZCBlbGVtZW50cworYW5kIHN0YWNrZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIg
YW1vbmdzdCB0aGVtc2VsdmVzLiBBbHNvLCBsYXllciBmZWF0dXJlcyBsaWtlCit0cmFuc2Zvcm1z
IGFuZCB6LWluZGV4IGFyZSB0ZXN0ZWQgaW5zaWRlIGEgdG9wIGxheWVyIGVsZW1lbnQgc3VidHJl
ZS4gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwv
c2NyaXB0PgorPHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0OjE1MHB4OworICAgIHdpZHRoOjE1
MHB4OworfQorLmNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50
YTsKK30KKy50cmFuc2Zvcm1lZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoNDVk
ZWcpOworICAgIGJhY2tncm91bmQtY29sb3I6IGN5YW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8ZGlhbG9nIGlkPSJ6IiBzdHlsZT0iZGlzcGxheTogbm9uZSI+VGhpcyBzaG91bGQg
bm90IGJlIGRpc3BsYXllZC48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9InkiIHN0eWxlPSJwb3NpdGlv
bjogZml4ZWQ7IHRvcDogMTBweDsgei1pbmRleDogLTEwIj4KKyAgICBUaGlzIHdoaXRlIGJveCBp
cyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSBvbiB0b3Agb2YgZXZlcnl0
aGluZy4KKzwvZGlhbG9nPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBw
eDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBsZWZ0OiAwOyByaWdodDogMDsg
aGVpZ2h0OiAyMDBweDsiPgorICAgIDxkaWFsb2cgaWQ9IngiIHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhl
aWdodDogNDAwcHgiPgorICAgICAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEgbW9kYWwgZGlh
bG9nLiBJdCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVsbG93IHJlZ2lv
bnMuCisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBib3giPgorICAgICAgICAgICAgPGRp
diBjbGFzcz0idHJhbnNmb3JtZWQgYm94Ij5BIHRyYW5zZm9ybSB3aXRoaW4gdGhlIGRpYWxvZydz
IHN1YnRyZWUuPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3gi
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozMDBweDsgei1pbmRleDogMjsgYmFja2dy
b3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgICAgICBUaGlzIHNob3dzIHotaW5kZXggc3RhY2tp
bmcgd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLiBUaGUgY3lhbiBib3ggc2hvdWxkIGJlIG9u
IHRvcCBvZiB0aGUgbWFnZW50YSBvbmUuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNs
YXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVmdDo1MHB4
OyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRpYWxvZy48L2Rp
dj4KKyAgICA8L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAwZW07IGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd4Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgneScpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3onKS5z
aG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171781</attachid>
            <date>2012-10-31 23:48:43 -0700</date>
            <delta_ts>2012-11-06 01:44:46 -0800</delta_ts>
            <desc>review comments</desc>
            <filename>bug-84796-20121101154704.patch</filename>
            <type>text/plain</type>
            <size>31837</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThkNmNiNTQ5YTM5MGNj
YTFjYTIxZTJkNjlmNzU2OGM2MGZlNDg2Zi4uYmU4MDQzZjZkMWJhOTIzNWRlZWJhNWJmMjEzZjE0
ODRmOGQ1MTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTEwLTMxICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gVGhlIHN0YWNrIGlzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgRE9NIGJlY2F1c2Ug
cHVzaGluZyBhbmQgcG9wcGluZyBmcm9tIHRoZSB0b3AgbGF5ZXIKKyAgICAgICAgb2NjdXJzIHZp
YSB0aGUgRE9NIGZ1bmN0aW9ucyBzaG93TW9kYWwoKSBhbmQgY2xvc2UoKSBmb3IgZGlhbG9nCisg
ICAgICAgIGVsZW1lbnRzLiBJdCBzZWVtcyBkaWZmaWN1bHQgdG8gc3RvcmUgdGhlIHN0YWNrIGFz
IHBhcnQgb2YgcmVuZGVyaW5nCisgICAgICAgIGJlY2F1c2UsIGZvciBleGFtcGxlLCBhbiBlbGVt
ZW50IHdpdGhvdXQgYSByZW5kZXJlciBjYW4gYmUgcHVzaGVkIG9uCisgICAgICAgIHRoZSB0b3Ag
bGF5ZXIuCisKKyAgICAgICAgRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBnZXQgYSBsYXllci4g
TGF5ZXJzIGluIHRoZSB0b3AgbGF5ZXIgYXJlCisgICAgICAgIGFkZGVkIHRvIHRoZSByb290IGxh
eWVyJ3MgY2hpbGQgbGlzdCBhZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUKKyAgICAgICAg
b3JkZXIgb2YgdGhlIHRvcCBsYXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBw
ZWFycyBhYm92ZQorICAgICAgICBhbGwgb3RoZXIgc3RhY2tpbmcgY29udGV4dHMgYW5kIGluIHRo
ZSBkZXNpcmVkIG9yZGVyLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVy
ZXJzIGFyZSBhZGRlZCBhcyBjaGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBs
YXllciBvcmRlci4gVGhpcyBpcyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQor
ICAgICAgICBjb250YWluaW5nIGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBp
cyB0aGUgaW5pdGlhbAorICAgICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBS
ZW5kZXJMYXllciB0byBrbm93IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2Yg
dGhlIGxheWVycyB3aXRob3V0IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAg
ICAgICBlbGVtZW50cyB0byB0aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1v
ZGFsIGRpYWxvZyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAg
ICAgVGhlIHBsYW4gaXMgdG8gbWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRv
cCBsYXllci4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXllckVs
ZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9wTGF5
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBBZGQgYW4gZXhjZXB0aW9uIHRv
IHRoZSBhc3NlcnQgc2luY2UgdG9wIGxheWVyIGVsZW1lbnRzIGFuZCB0aGVpciBkZXNjZW5kYW50
cyBhcmUgbW92ZWQgZnJvbSB0aGVpcgorICAgICAgICByZWd1bGFyIHBvc2l0aW9uIGluIHRoZSBy
ZW5kZXIgdHJlZS4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChOb2RlUmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXIpOgorICAgICAgICAqIGRv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQp
OiBBZGQgcmVuZGVyZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYXMgY2hpbGRyZW4gb2YgUmVu
ZGVyVmlldywgYW5kCisgICAgICAgIGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAgICAg
ICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxE
aWFsb2dFbGVtZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxlbWVu
dDo6c2hvd01vZGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNJblRvcExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0luVG9wTGF5ZXJTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMpOiBB
ZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKTogQXZvaWQgYWRkaW5n
IGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGR1cmluZyBub3JtYWwgbGF5ZXIgY29sbGVj
dGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRl
ckxheWVyKToKKwogMjAxMi0xMC0zMSAgWm9sdGFuIE55dWwgIDx6b2x0YW4ubnl1bEBpbnRlbC5j
b20+CiAKICAgICAgICAgcGVyc3BlY3RpdmUtb3JpZ2luIHNob3VsZCBpZ25vcmUgdmFsdWVzIHdp
dGggbW9yZSB0aGVuIHR3byBsZW5ndGhzIGFuZCB1c2UgdGhlIGRlZmF1bHQgdmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IDRiOWNhOTJjMzFlMWNlMTQ5MWY3ZDkzODVkZTBjYjVjNTg5NDBi
OGYuLjc0YmE1ZmZiZDViMjFmODdkYmFmYzljZjA3NjQxODkyZDc0M2Q3MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC0yMjMyLDYgKzIyMzIsMTAgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDE2
YW5ub3RhdGVkUmVnaW9uc0V2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MXNldFVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlRWIKICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQorX19aTks3V2ViQ29yZTExUmVuZGVyTGF5ZXIxMmlzSW5Ub3BMYXllckV2Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFu
ZGxlcjE3ZHJhZ1NvdXJjZUVuZGVkQXRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEVOU18xM0Ry
YWdPcGVyYXRpb25FCiBfX1pOSzdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2V2ZW50TWF5U3RhcnRE
cmFnRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggYjQ4NGUxNjllMTI5YjQyNTllZWNiZTYwY2M2YjRjN2UwYWI4YzA0OS4uZGU4
NDkyNDExYjUyM2I3YjU3YzI5MWMzZTBjMmNjOTNjOTU4YjgzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtMTk3OCw2ICsxOTc4LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHkKICAgICAgICAgLy8gVG91Y2ggb3ZlcmZsb3cgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFj
a2luZyBjb250ZXh0LgogICAgICAgICB8fCAoKHN0eWxlLT5vdmVyZmxvd1goKSAhPSBPSElEREVO
IHx8IHN0eWxlLT5vdmVyZmxvd1koKSAhPSBPSElEREVOKSAmJiBzdHlsZS0+dXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZygpKQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAg
ICAgICB8fCAoZSAmJiBlLT5pc0luVG9wTGF5ZXIoKSkKKyNlbmRpZgogICAgICAgICApKQogICAg
ICAgICBzdHlsZS0+c2V0WkluZGV4KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2
NWQ5OWI2MmE5YWQzNjk2OTY3MTNlZjMyNWRjZDZmMDhmODI3OGNhLi5kOTc3MDM0OTIxM2MwMzll
MGZkZjM0YzcyYTU5MGNlMGZiOTQ3MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1
NDAsNiArNTU0MCwyMSBAQCB2b2lkIERvY3VtZW50OjphZGREb2N1bWVudFRvRnVsbFNjcmVlbkNo
YW5nZUV2ZW50UXVldWUoRG9jdW1lbnQqIGRvYykKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERJ
QUxPR19FTEVNRU5UKQordm9pZCBEb2N1bWVudDo6YWRkVG9Ub3BMYXllcihFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIEFTU0VSVCghbV90b3BMYXllckVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQp
KTsKKyAgICBtX3RvcExheWVyRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworfQorCit2b2lkIERv
Y3VtZW50OjpyZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NF
UlQobV90b3BMYXllckVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBzaXplX3QgcG9z
aXRpb24gPSBtX3RvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKKyAgICBtX3RvcExheWVy
RWxlbWVudHMucmVtb3ZlKHBvc2l0aW9uKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRQb2ludGVyTG9jaygpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IGM5YzNjN2M4ZWM0MDYxOWIzYzBjYTU4MDJhN2Q1MzdhNjg1NDky
MDAuLjZkZmM3NzIwYmY1MTI3ZjFiY2MyYWFiMmU2ZTUzY2E4MDIyZTVmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMTU5LDYgKzExNTksMTIgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBh
IExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVudCBpcyBudWxsIG9y
IGVtcHR5LgogICAgIExvY2FsZSYgZ2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlID0gbnVsbEF0b20pOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHZv
aWQgYWRkVG9Ub3BMYXllcihFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVGcm9tVG9wTGF5ZXIo
RWxlbWVudCopOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50
cygpIHsgcmV0dXJuIG1fdG9wTGF5ZXJFbGVtZW50czsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wgaXNI
VE1MKTsKIApAQCAtMTQ1Nyw2ICsxNDYzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBtX3RvcExh
eWVyRWxlbWVudHM7CisjZW5kaWYKKwogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQ7CiAg
ICAgVGltZXI8RG9jdW1lbnQ+IG1fbG9hZEV2ZW50RGVsYXlUaW1lcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDEwYzc5MGNjM2E0NmY5ZDFlN2E5NTNkODc1MjVlYjg3YzE1NDJhMzkuLjVk
Y2YzMDU0ODE4NjRkNTkwZThmMzZhM2ZiY2MwNzMxYTU5YWJiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTk4NCw2ICs5ODQsOSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpbwogCiB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewor
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwor
I2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50KCkpCiAgICAgICAgIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFu
Y2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGZhbHNlKTsKQEAgLTIwMTIsNiArMjAxNSwy
OSBAQCB2b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9y
c0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogfQogI2VuZGlmICAgIAogCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorYm9vbCBFbGVtZW50Ojppc0luVG9wTGF5ZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5pc0luVG9wTGF5
ZXIoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRJc0luVG9wTGF5ZXIoYm9vbCBpblRvcExheWVy
KQoreworICAgIC8vIFRvIGF2b2lkIGFuIGV4dHJhIGNhbGwgdG8gZWxlbWVudFJhcmVEYXRhKCks
IGRvbid0IHVzZSBFbGVtZW50Ojppc0luVG9wTGF5ZXIoKS4KKyAgICBFbGVtZW50UmFyZURhdGEq
IHJhcmVEYXRhID0gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpIDogMDsKKyAgICBp
ZiAoKCFyYXJlRGF0YSAmJiAhaW5Ub3BMYXllcikgfHwgKHJhcmVEYXRhICYmIHJhcmVEYXRhLT5p
c0luVG9wTGF5ZXIoKSA9PSBpblRvcExheWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgh
cmFyZURhdGEpCisgICAgICAgIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Cisg
ICAgcmFyZURhdGEtPnNldElzSW5Ub3BMYXllcihpblRvcExheWVyKTsKKyAgICBpZiAoaW5Ub3BM
YXllcikKKyAgICAgICAgZG9jdW1lbnQoKS0+YWRkVG9Ub3BMYXllcih0aGlzKTsKKyAgICBlbHNl
CisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUZyb21Ub3BMYXllcih0aGlzKTsKKyAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50ZXJM
b2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDE0ODU3MDMzYjg2NTliMTRkOTMwNWNhOGNh
MWFlOGE0NDg4ZjBkNDYuLjJiZWZjYzFmMjNiYjcyYTM5Y2MyMmQwOWMxNzMwNzFjZDZlYWQ4MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDExLDYgKzQxMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgdmlydHVhbCBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGI0YmM4ZTJlOTliM2FmNGJj
MGQxMzE5YzJkNWYwMzJlNDNiYjVmZmYuLmZkMjBkNGNmMjI3NzI5YmI3OTE2ZTE0N2RlYzBkYTM2
ZTQxMzU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTUzLDYgKzUz
LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQ7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6aXNJblRvcExheWVyOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJ
blRvcExheWVyOworI2VuZGlmCiAKICAgICBib29sIGhhc0NhY2hlZEhUTUxDb2xsZWN0aW9ucygp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDU1Mzc1YTZkNWJmZDA0OGMwMGJkNGZm
YmUzZGU5ZjU3OTQwOTQwZWQuLmQxYzA5ZTIwODliOGU3NWE3ZDgzNWQwYTMwMWE1MzUwN2VkYWZl
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExMiw2ICsxMTIsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisj
aWZuZGVmIE5ERUJVRworI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjZW5kaWYKKwogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKICNpbmNsdWRlICJHZXN0dXJlRXZlbnQuaCIKICNlbmRpZgpA
QCAtMTMxOCw5ICsxMzIyLDEzIEBAIHZvaWQgTm9kZTo6ZGV0YWNoKCkKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2
ZXJzZU5leHROb2RlKHRoaXMpKSB7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIC8vIFJlbmRlckZsb3dUaHJlYWQgcmVt
b3ZlcyBzb21lIGVsZW1lbnRzIGZyb20gdGhlIHJlZ3VsYXIgdHJlZQorICAgICAgICAgICAgLy8g
UmVuZGVyRmxvd1RocmVhZCBhbmQgdGhlIHRvcCBsYXllciByZW1vdmUgZWxlbWVudHMgZnJvbSB0
aGUgcmVndWxhciB0cmVlCiAgICAgICAgICAgICAvLyBoaWVyYXJjaHkuIFRoZXkgd2lsbCBiZSBj
bGVhbmVkIHVwIHdoZW4gd2UgY2FsbCBkZXRhY2ggb24gdGhlbS4KKyNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCisgICAgICAgICAgICBBU1NFUlQoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5pblJl
bmRlckZsb3dUaHJlYWQoKSB8fCAocmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCktPmlzSW5Ub3BM
YXllclN1YnRyZWUoKSkpOworI2Vsc2UKICAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIgfHwg
cmVuZGVyZXItPmluUmVuZGVyRmxvd1RocmVhZCgpKTsKKyNlbmRpZgogICAgICAgICB9CiAjZW5k
aWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNWIzYTU4M2IwZDIyOWU4
ZGJlYmVlMjFjZDY0MmRjMmM3NzBmMzQ0Mi4uN2E5N2MxYzBhZTllMjg2YjBkMzYwYzE2NGE4NWE2
M2RlZmI3MTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTkxLDYgKzE5MSw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICwgbV9jb250
YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgICAgICAsIG1faXNJblRvcExheWVyKGZhbHNlKQorI2VuZGlmCiAgICAgewog
ICAgIH0KIApAQCAtMzIwLDYgKzMyMywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBjb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgdmFsdWUpIHsg
bV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KICNlbmRpZgorI2lmIEVOQUJM
RShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1faXNJblRvcExheWVyOyB9CisgICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCB2YWx1ZSkg
eyBtX2lzSW5Ub3BMYXllciA9IHZhbHVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBUcmVl
U2NvcGUqIG1fdHJlZVNjb3BlOwpAQCAtMzM0LDYgKzM0MSw5IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
IDogMTsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIG1faXNJ
blRvcExheWVyIDogMTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykK
ICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+
ID4gbV9tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMWYxYzNmODk5ZmIwOTNmYmZmYjgyNDYxYWMxZTBj
NWI1M2E4MTlkLi42NDc1NjExMGFjZjQ5ZTZjNDQ2MTY3OTkzNGMwNmQ1ZTZjMjYwOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIyMCw2ICsy
MjAsMjggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJl
cigpCiAgICAgcmV0dXJuIG5ld1JlbmRlcmVyOwogfQogCisjaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQorc3RhdGljIHZvaWQgYWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgUmVuZGVyT2JqZWN0KiYgcGFyZW50UmVuZGVyZXIsIFJlbmRlck9i
amVjdComIG5leHRSZW5kZXJlcikKK3sKKyAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVudFJlbmRl
cmVyLT52aWV3KCk7CisgICAgbmV4dFJlbmRlcmVyID0gMDsKKyAgICBWZWN0b3I8UmVmUHRyPEVs
ZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVudHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT50b3BMYXll
ckVsZW1lbnRzKCk7CisgICAgc2l6ZV90IHRvcExheWVyUG9zaXRpb24gPSB0b3BMYXllckVsZW1l
bnRzLmZpbmQoZWxlbWVudCk7CisgICAgQVNTRVJUKHRvcExheWVyUG9zaXRpb24gIT0gbm90Rm91
bmQpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHBhcmVudFJlbmRlcmVyLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
IEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/
IHRvRWxlbWVudChjaGlsZC0+bm9kZSgpKSA6IDA7CisgICAgICAgIGlmIChjaGlsZEVsZW1lbnQg
JiYgY2hpbGRFbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICAgICAgc2l6ZV90IGNo
aWxkVG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChjaGlsZEVsZW1lbnQp
OworICAgICAgICAgICAgQVNTRVJUKGNoaWxkVG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3VuZCk7
CisgICAgICAgICAgICBpZiAodG9wTGF5ZXJQb3NpdGlvbiA8IGNoaWxkVG9wTGF5ZXJQb3NpdGlv
bikgeworICAgICAgICAgICAgICAgIG5leHRSZW5kZXJlciA9IGNoaWxkOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisK
IHZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiB7CiAg
ICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7CkBAIC0yNDksNiArMjcxLDEyIEBAIHZv
aWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAgICAgLy8g
RG8gbm90IGNhbGwgbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUgaW4gdGhlIGZpcnN0IGNs
YXVzZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUKICAgICAvLyB0aGUgcmVuZGVyZXIgYWRk
ZWQgdG8gaXRzIHBhcmVudCBhbHJlYWR5LgogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVy
ID0gbV9jb250ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSA/IG1fY29udGV4dC5wYXJlbnRGbG93
UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9kZShub2RlKSA6IG1fY29udGV4dC5uZXh0UmVu
ZGVyZXIoKTsKKworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9pbnRG
b3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFyZW50UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7
CisjZW5kaWYKKwogICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJl
cigpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEaWFsb2dFbGVtZW50LmNwcAppbmRleCA3ZDRkNjQ1MWJlM2E5OWY2OTBkMzZlODM2ODk3MWYz
MGM1ZTljMzQ2Li4yOTUwZmJhNmIyZTVlY2Y1Y2ZhOTJmOWVlODdiM2M4MzI5MzczZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcApAQCAtNTMsNiArNTMsNyBA
QCB2b2lkIEhUTUxEaWFsb2dFbGVtZW50OjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRCb29sZWFuQXR0cmlidXRlKG9wZW5BdHRyLCBmYWxz
ZSk7CisgICAgc2V0SXNJblRvcExheWVyKGZhbHNlKTsKIH0KIAogdm9pZCBIVE1MRGlhbG9nRWxl
bWVudDo6c2hvdygpCkBAIC02OSw2ICs3MCw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OnNo
b3dNb2RhbChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBz
ZXRCb29sZWFuQXR0cmlidXRlKG9wZW5BdHRyLCB0cnVlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIo
dHJ1ZSk7CiB9CiAKIGJvb2wgSFRNTERpYWxvZ0VsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5ZTg0NWQ4NTM5NzJkM2MxZjM2YmQyOGE5ODUxNjcw
YzJkNzdlZmUwLi45OGEzMmM5MGI3YmZlYzJmNjhkMmU5MTVmN2Q2ZjYzYzFhNTk5ZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM1NTMsNiArMzU1Mywy
MyBAQCBOb2RlKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIFJlbmRlckxheWVy
Ojppc0luVG9wTGF5ZXIoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlcigpLT5u
b2RlKCk7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxl
bWVudChub2RlKS0+aXNJblRvcExheWVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzSW5U
b3BMYXllclN1YnRyZWUoKSBjb25zdAoreworICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aXNJblRvcExheWVyKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIC8vIENvbXB1dGUgdGhlIHotb2Zmc2V0
IG9mIHRoZSBwb2ludCBpbiB0aGUgdHJhbnNmb3JtU3RhdGUuCiAvLyBUaGlzIGlzIGVmZmVjdGl2
ZWx5IHByb2plY3RpbmcgYSByYXkgbm9ybWFsIHRvIHRoZSBwbGFuZSBvZiBhbmNlc3RvciwgZmlu
ZGluZyB3aGVyZSB0aGF0CiAvLyByYXkgaW50ZXJzZWN0cyB0YXJnZXQsIGFuZCBjb21wdXRpbmcg
dGhlIHogZGVsdGEgYmV0d2VlbiB0aG9zZSB0d28gcG9pbnRzLgpAQCAtNDY0Miw2ICs0NjU5LDIx
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiAgICAgaWYgKG1fbmVn
Wk9yZGVyTGlzdCkKICAgICAgICAgc3RkOjpzdGFibGVfc29ydChtX25lZ1pPcmRlckxpc3QtPmJl
Z2luKCksIG1fbmVnWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwogCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorICAgIC8vIEFwcGVuZCBsYXllcnMgZm9yIHRvcCBsYXllciBl
bGVtZW50cyBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbiwgdG8gZW5zdXJlIHRoZXkgYXJl
IG9uIHRvcCByZWdhcmRsZXNzIG9mIHotaW5kZXhlcy4KKyAgICAvLyBUaGUgcmVuZGVyZXJzIG9m
IHRvcCBsYXllciBlbGVtZW50cyBhcmUgY2hpbGRyZW4gb2YgdGhlIHZpZXcsIHNvcnRlZCBpbiB0
b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgaWYgKGlzUm9vdExheWVyKCkpIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOworICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogY2hpbGQgPSB2aWV3LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1l
bnQgPSBjaGlsZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5v
ZGUoKSkgOiAwOworICAgICAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQt
PmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChjaGlsZCktPmxheWVyKCk7CisgICAgICAgICAgICAgICAg
bV9wb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorI2VuZGlmCisKICAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxzZTsKIH0KIApA
QCAtNDY2Niw2ICs0Njk4LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dM
aXN0KCkKIAogdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRk
ZW5MYXllcnMsIFZlY3RvcjxSZW5kZXJMYXllcio+KiYgcG9zQnVmZmVyLCBWZWN0b3I8UmVuZGVy
TGF5ZXIqPiomIG5lZ0J1ZmZlcikKIHsKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAg
aWYgKGlzSW5Ub3BMYXllcigpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHVwZGF0
ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwogCiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFy
ZSBqdXN0IHBhaW50ZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBn
ZXQgcHV0IGluIHpvcmRlciBsaXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKaW5kZXggZmVkMjQxOGY0MzM2NDBmYzJkYWQ0ZmE4NmY0ODk3NDllOWJlNzI3NS4uNjc4NDE0
ZTViNWI1Yjc3NjA4MmM1MzIxZDE5ZjYyZTgxN2QzNzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKQEAgLTY4Miw2ICs2ODIsMTEgQEAgcHVibGljOgogCiAgICAgTm9k
ZSogZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQorICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7CisgICAgYm9vbCBpc0luVG9wTGF5ZXJT
dWJ0cmVlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVpPcmRl
ckxpc3RzKCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNTYyMTk2
MGIzZGE4NjViNzM2ZGFkYTA2ZTg5YTIzMjI4MzI0NTk1Li4xOGU5ODQ4MTZkYzY2ZTlmMGFjZTlj
MzVhMWViMWRkMmQ3MzUxNzAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMzEgIE1h
dHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVu
dCB0aGUgbmV3IHN0YWNraW5nIGxheWVyIG5lZWRlZCBieSB0aGUgRnVsbHNjcmVlbiBBUEkgYW5k
IHRoZSBuZXcgPGRpYWxvZz4gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIHRvcCBsYXllciBzdGFja2luZyBhbmQgcmVu
ZGVyaW5nLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVy
LWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNr
aW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50
L3RvcC1sYXllci1zdGFja2luZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0zMSAgWm9sdGFuIE55
dWwgIDx6b2x0YW4ubnl1bEBpbnRlbC5jb20+CiAKICAgICAgICAgcGVyc3BlY3RpdmUtb3JpZ2lu
IHNob3VsZCBpZ25vcmUgdmFsdWVzIHdpdGggbW9yZSB0aGVuIHR3byBsZW5ndGhzIGFuZCB1c2Ug
dGhlIGRlZmF1bHQgdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5p
bmctYmxvY2stZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2MyMWNiMmFjYzMwZTMzOWExNDkz
NmE0N2NiOTIxZmU5YWJlMjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKzwvc2NyaXB0
PgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlk
OworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjog
YmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9k
aWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDUwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3Vs
ZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLiBJdCBpcyB0aGUgY2hpbGQg
b2YgYW4gZWxlbWVudCBwb3NpdGlvbmVkIG9mZiBzY3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBi
bG9jayBvZiBhIHRvcCBsYXllciBlbGVtZW50IGlzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxv
Y2suCis8L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOiA3MHB4OyBsZWZ0OiAwcHg7IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZl
Y3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlw
cGVkLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBo
aWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0OiAxNTBweDsgdG9wOiA2MDBweDsgbGVmdDogNTAw
cHgiPgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1j
b2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZm
ZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBiZSBjbGlwcGVk
LgorICAgIDwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xv
cjogbWFnZW50YSI+CisgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQg
YnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDYwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAgIDxkaXYgY2xhc3M9
InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdo
dDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAg
ICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2Vz
dG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFs
b2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNi
YjZhNWJiMDY0N2Q4ZGUxZmQ2NTM1OGMzMTVlYjM3ZjU1N2M3MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWlu
aW5nLWJsb2NrLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9n
RWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBz
dHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDYwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAg
IDxkaWFsb2cgaWQ9InoiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxl
ZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMgbW9kYWwg
ZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHku
CisgICAgPC9kaWFsb2c+CisgICAgPGRpYWxvZyBpZD0iYSIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1j
b2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUg
YWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2RpYWxvZz4KKzwv
ZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBvdmVyZmxvdzogaGlkZGVuOyB3
aWR0aDogNTAwcHg7IGhlaWdodDogMTUwcHg7IHRvcDogNjAwcHg7IGxlZnQ6IDUwMHB4Ij4KKyAg
ICA8ZGlhbG9nIGlkPSJ5IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDcwcHg7IGxl
ZnQ6IDBweDsgaGVpZ2h0OiAyNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAg
IFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3
aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgbm90IGJlIGNsaXBwZWQuCisgICAgPC9kaWFsb2c+Cisg
ICAgPGRpYWxvZyBpZD0iYiIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhl
aWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAg
ICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2Vz
dG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBiZSBjbGlwcGVkLgorICAgIDwvZGlhbG9nPgor
PC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwMHB4OyBsZWZ0
OiAxMDAwcHgiPgorICAgIDxkaWFsb2cgaWQ9IngiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMHB4OyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPgorICAg
ICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2Yg
dGhlIHNjcmVlbi4gSXQgaXMgdGhlIGNoaWxkIG9mIGFuIGVsZW1lbnQgcG9zaXRpb25lZCBvZmYg
c2NyZWVuLCBidXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5ZXIgZWxlbWVudCBp
cyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrLgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8
c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gnKS5zaG93TW9kYWwoKTsKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd5Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgneicpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKS5zaG93
KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnNob3coKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5h
bWljLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5MWY2NjE3Mzk3MGQ5MzY5ZGVjNjAyNDM1
ODgyMDFkMDAzODA5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQo
dHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDog
MTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBs
ZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsK
KyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJs
YWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhlIHN0YWNraW5nIG9yZGVyIHNo
b3VsZCBiZTogeWVsbG93LCBtYWdlbnRhLCBncmVlbiwgcGluaywgY3lhbiAoY2xvc2VzdCB0byB1
c2VyKQorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIGlkPSJhIiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDUwcHg7IGxlZnQ6IDUwcHg7IHdpZHRoOiAyODBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImQi
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDIwMHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIg
aWQ9ImUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDI1MHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFs
b2ciIGlkPSJoIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDE1
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rIj48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2Rp
YWxvZyIgaWQ9ImIiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6
IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1zdGFja2luZy1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJk
N2U2NDE5Yzk4YTQ3ZDcyM2FjN2ZjZWE1OWE0Zjk1NGE0YzIxMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tp
bmctZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhLS0gVGhpcyB0ZXN0cyB0b3AgbGF5
ZXIgZWxlbWVudHMgc3RhY2tpbmcgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzIHRvICdkaXNwbGF5Jywg
cmVtb3ZhbAorZnJvbSB0aGUgRE9NIHRyZWUsIGFuZCBjYWxsaW5nIHNob3cvY2xvc2UuIE5lc3Rl
ZCBtb2RhbCBkaWFsb2dzIGFyZSBhbHNvIHRlc3RlZC4gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRE
aWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsK
KyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KK1RoZSBzdGFja2luZyBvcmRlciBzaG91bGQgYmU6IHllbGxvdywgbWFnZW50
YSwgZ3JlZW4sIHBpbmssIGN5YW4gKGNsb3Nlc3QgdG8gdXNlcikKKworPGRpYWxvZyBpZD0iYSIg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDI4MHB4OyB0b3A6IDUwcHg7IGxlZnQ6
IDUwcHg7IGRpc3BsYXk6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgei1pbmRleDog
MTAwMCI+PC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJiIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwMHB4OyBsZWZ0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsgei1pbmRl
eDogLTEwMDAiPjwvZGlhbG9nPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGlhbG9nIGlk
PSJjIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxNTBweCI+
PC9kaWFsb2c+Cis8L2Rpdj4KKzxkaWFsb2cgaWQ9ImUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDI1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+Cisg
ICAgPGRpYWxvZyBpZD0iZCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsg
bGVmdDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgICAgICA8ZGlhbG9n
IGlkPSJmIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDMwMHB4OyBsZWZ0OiAzMDBw
eCI+CisgICAgICAgICAgICA8ZGlhbG9nIGlkPSJnIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDM1MHB4OyBsZWZ0OiAzNTBweCI+PC9kaWFsb2c+CisgICAgICAgIDwvZGlhbG9nPgor
ICAgICAgICA8ZGlhbG9nIGlkPSJoIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDgw
cHg7IGxlZnQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rIj48L2RpYWxvZz4KKyAgICA8
L2RpYWxvZz4KKzwvZGlhbG9nPgorPHNjcmlwdD4KK3ZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2YnKTsKK2Yuc2hvd01vZGFsKCk7CitnLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2InKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
Jykuc2hvd01vZGFsKCk7CitmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZik7Citkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZCcpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2UnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoJykuc2hvd01vZGFs
KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLmNsb3NlKCk7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYicpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2En
KS5zaG93KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYScpLnN0eWxlLmRpc3BsYXkgPSAn
YmxvY2snOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3YmVlM2RjYmYxYjY2
YzQ3NDQwOTdhMjE2NGUxOTkxM2Y3NjczNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPgorPHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0
OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7Cit9CisuY29udGFpbmVyIHsKKyAgICAtd2Via2l0
LXBlcnNwZWN0aXZlOiA1MDBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhOworfQorLnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0
LXRyYW5zZm9ybTogcm90YXRlWSg0NWRlZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsK
K30KKy5wc2V1ZG9kaWFsb2cgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAw
OyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBw
YWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOwor
fQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9z
aXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IHotaW5kZXg6MzAwMCI+CisgICAgVGhpcyB3aGl0ZSBi
b3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgb24gdG9wIG9mIGV2
ZXJ5dGhpbmcuCis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAw
cHg7IHotaW5kZXg6IDM7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgbGVmdDogMDsgcmlnaHQ6IDA7
IGhlaWdodDogMjAwcHg7Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsg
d2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBweDsgei1pbmRleDoyMDAwIj4KKyAgICBUaGlzIGdyZWVu
IGJveCBpcyBhbHNvIGEgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUg
dGhlIHJlZCBhbmQgeWVsbG93IHJlZ2lvbnMuCisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJv
eCI+CisgICAgICAgIDxkaXYgY2xhc3M9InRyYW5zZm9ybWVkIGJveCI+QSB0cmFuc2Zvcm0gd2l0
aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAy
OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBzaG93cyB6LWluZGV4IHN0
YWNraW5nIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS4gVGhlIGN5YW4gYm94IHNob3VsZCBi
ZSBvbiB0b3Agb2YgdGhlIG1hZ2VudGEgb25lLgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHot
aW5kZXg6IDE7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiA5MHB4OyBsZWZ0OiAzMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbiI+VGhpcyBpcyBwYXJ0IG9mIHRoZSBncmVlbiBkaWFsb2cuPC9kaXY+Cis8L2Rp
dj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMHB4
OyByaWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IHot
aW5kZXg6MTAwMCI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNr
aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIzOGI5OTJmZWQ3Njg3MjkzOWM1ZGQ5MDUyYmQxNDA2MjI4
MWIxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhLS0gVGhp
cyB0ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUgcmVuZGVyZWQgYWJvdmUgei1pbmRl
eGVkIGVsZW1lbnRzCithbmQgc3RhY2tlZCBpbiB0aGUgY29ycmVjdCBvcmRlciBhbW9uZ3N0IHRo
ZW1zZWx2ZXMuIEFsc28sIGxheWVyIGZlYXR1cmVzIGxpa2UKK3RyYW5zZm9ybXMgYW5kIHotaW5k
ZXggYXJlIHRlc3RlZCBpbnNpZGUgYSB0b3AgbGF5ZXIgZWxlbWVudCBzdWJ0cmVlLiAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8
c3R5bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6MTUwcHg7CisgICAgd2lkdGg6MTUwcHg7Cit9Cisu
Y29udGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1MDBweDsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhOworfQorLnRy
YW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSg0NWRlZyk7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aWFsb2cgaWQ9InoiIHN0eWxlPSJkaXNwbGF5OiBub25lIj5UaGlzIHNob3VsZCBub3QgYmUgZGlz
cGxheWVkLjwvZGlhbG9nPgorPGRpYWxvZyBpZD0ieSIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsg
dG9wOiAxMHB4OyB6LWluZGV4OiAtMTAiPgorICAgIFRoaXMgd2hpdGUgYm94IGlzIHRoZSB0b3Bt
b3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIG9uIHRvcCBvZiBldmVyeXRoaW5nLgorPC9k
aWFsb2c+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyB6LWluZGV4
OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIw
MHB4OyI+CisgICAgPGRpYWxvZyBpZD0ieCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBw
eCI+CisgICAgICAgIFRoaXMgZ3JlZW4gYm94IGlzIGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNo
b3VsZCBiZSByZW5kZXJlZCBhYm92ZSB0aGUgcmVkIGFuZCB5ZWxsb3cgcmVnaW9ucy4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJveCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
cmFuc2Zvcm1lZCBib3giPkEgdHJhbnNmb3JtIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNvbG9y
OiBjeWFuIj4KKyAgICAgICAgICAgIFRoaXMgc2hvd3Mgei1pbmRleCBzdGFja2luZyB3aXRoaW4g
dGhlIGRpYWxvZydzIHN1YnRyZWUuIFRoZSBjeWFuIGJveCBzaG91bGQgYmUgb24gdG9wIG9mIHRo
ZSBtYWdlbnRhIG9uZS4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5kZXg6
IDE7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwvZGl2PgorICAgIDwv
ZGlhbG9nPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAw
cHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVpZ2h0OiAyMDBlbTsgYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OyB6LWluZGV4OjEwMDAiPgorPC9kaXY+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3gnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5
Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneicpLnNob3dNb2RhbCgp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172521</attachid>
            <date>2012-11-06 01:44:52 -0800</date>
            <delta_ts>2012-11-08 03:46:09 -0800</delta_ts>
            <desc>more review comments</desc>
            <filename>bug-84796-20121106184304.patch</filename>
            <type>text/plain</type>
            <size>32033</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE5OTA0MTgwYjk5NWU5
MWQ4N2ViMTJlOWIyMDA5NGQ1NjBhMTIwNi4uODhkMzQwMmZmMjYzODg3M2Q0ZDFmZmNhNDY3YWY5
ZTFmNGU2ZjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTExLTA2ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gVGhlIEZ1bGxzY3JlZW4KKyAgICAgICAgc3BlY2lmaWNhdGlvbiBtYW5kYXRlcyB0
aGF0IHdlIHRyYWNrIHRoZSBvcmRlcmluZyBvZiB0aGUgRE9NIG5vZGVzIGluCisgICAgICAgIHRo
ZSB0b3AgbGF5ZXIsIG5vdCB0aGUgcmVuZGVyZXJzLiBUaGF0IG1ha2VzIGl0IGhhcmQgdG8gaW1w
bGVtZW50IG9uCisgICAgICAgIHRoZSByZW5kZXJpbmcgc2lkZSBvbmx5LgorCisgICAgICAgIEVs
ZW1lbnRzIGluIHRoZSB0b3AgbGF5ZXIgZ2V0IGEgbGF5ZXIuIExheWVycyBpbiB0aGUgdG9wIGxh
eWVyIGFyZQorICAgICAgICBhZGRlZCB0byB0aGUgcm9vdCBsYXllcidzIGNoaWxkIGxpc3QgYWZ0
ZXIgbm9ybWFsIGxheWVycyBhbmQgaW4gdGhlCisgICAgICAgIG9yZGVyIG9mIHRoZSB0b3AgbGF5
ZXIgc3RhY2suIFRoaXMgd2F5LCB0aGUgdG9wIGxheWVyIGFwcGVhcnMgYWJvdmUKKyAgICAgICAg
YWxsIG90aGVyIHN0YWNraW5nIGNvbnRleHRzIGFuZCBpbiB0aGUgZGVzaXJlZCBvcmRlci4KKwor
ICAgICAgICBJbiBhZGRpdGlvbiwgdG9wIGxheWVyIHJlbmRlcmVycyBhcmUgYWRkZWQgYXMgY2hp
bGRyZW4gb2YgUmVuZGVyVmlldworICAgICAgICBpbiB0b3AgbGF5ZXIgb3JkZXIuIFRoaXMgaXMg
dG8gc2F0aXNmeSByZXF1aXJlbWVudHMgc3VjaCBhcyB0aGUKKyAgICAgICAgY29udGFpbmluZyBi
bG9jayBvZiBhbiBlbGVtZW50IGluIHRoZSB0b3AgbGF5ZXIgaXMgdGhlIGluaXRpYWwKKyAgICAg
ICAgY29udGFpbmluZyBibG9jay4gSXQgYWxzbyBhbGxvd3MgUmVuZGVyTGF5ZXIgdG8ga25vdyB0
aGUgcHJvcGVyCisgICAgICAgIHN0YWNraW5nIG9yZGVyIG9mIHRoZSBsYXllcnMgd2l0aG91dCBn
b2luZyBkaXJlY3RseSBmcm9tIHRoZSB0b3AgbGF5ZXIKKyAgICAgICAgZWxlbWVudHMgdG8gdGhl
aXIgbGF5ZXJzLgorCisgICAgICAgIFNvIGZhciwgb25seSBtb2RhbCBkaWFsb2cgZWxlbWVudHMg
Y2FuIGJlIGFkZGVkIHRvIHRoZSB0b3AgbGF5ZXIuCisgICAgICAgIFRoZSBwbGFuIGlzIHRvIG1h
a2UgdGhlIEZ1bGxzY3JlZW4gQVBJIGFsc28gdXNlIHRoZSB0b3AgbGF5ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJs
b2NrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1zdGFja2luZy1keW5hbWljLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6IEVsZW1lbnRzIGluIHRoZSB0
b3AgbGF5ZXIgaGF2ZSBhIHN0YWNraW5nIGNvbnRleHQuCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFk
ZFRvVG9wTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUZyb21Ub3BM
YXllcik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dG9wTGF5ZXJFbGVtZW50cyk6IEFkZCB0aGUgdG9w
IGxheWVyIGVsZW1lbnQgc3RhY2sgdG8gRG9jdW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0luVG9wTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNJblRvcExheWVyKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVs
ZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGV0YWNoKTogQWRkIGFuIGV4Y2VwdGlvbiB0byB0aGUgYXNzZXJ0IHNpbmNlIHRv
cCBsYXllciBlbGVtZW50cyBhbmQgdGhlaXIgZGVzY2VuZGFudHMgYXJlIG1vdmVkIGZyb20gdGhl
aXIKKyAgICAgICAgcmVndWxhciBwb3NpdGlvbiBpbiB0aGUgcmVuZGVyIHRyZWUuCisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpO
b2RlUmFyZURhdGEpOgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6c2V0SXNJblRvcExheWVyKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RJbnNl
cnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKTogQWRkIHJlbmRlcmVycyBmb3Ig
dG9wIGxheWVyIGVsZW1lbnRzIGFzIGNoaWxkcmVuIG9mIFJlbmRlclZpZXcsIGFuZAorICAgICAg
ICBpbiB0b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgICAgICogaHRtbC9IVE1MRGlhbG9n
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxlbWVudDo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OnNob3dNb2RhbCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6aXNJblRvcExheWVyU3VidHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKTogQWRkIHRoZSB0b3AgbGF5ZXIgc3Rh
Y2sgYWZ0ZXIgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y29sbGVjdExheWVycyk6IEF2b2lkIGFkZGluZyBsYXllcnMgZm9yIHRvcCBsYXll
ciBlbGVtZW50cyBkdXJpbmcgbm9ybWFsIGxheWVyIGNvbGxlY3Rpb24uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisKIDIwMTItMTEt
MDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGxheWVyIGJvcmRlcnMgdG8gY2xlYW5pbmcgYXBwZWFyIGFuZCBkaXNhcHBlYXIgb24gc3dpdGNo
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY2ZDE4NmQ0ZTA2NWYwMzExODk5ZmQ3NjNiY2Qw
NTM3ZmU0NDRmYWYuLjEwYmQ0ODc2NTE1NjVkOTZjMzUxNjMwMzliY2Q3OWQyMzA5NmE0YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yMjI5LDYgKzIyMjksMTAgQEAgX19aTks3V2ViQ29yZThE
b2N1bWVudDE2YW5ub3RhdGVkUmVnaW9uc0V2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MXNldFVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlRWIKICNlbmRpZgogCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorX19aTks3V2ViQ29yZTExUmVuZGVyTGF5ZXIxMmlzSW5Ub3BM
YXllckV2CisjZW5kaWYKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBfX1pON1dlYkNvcmUx
MkV2ZW50SGFuZGxlcjE3ZHJhZ1NvdXJjZUVuZGVkQXRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVu
dEVOU18xM0RyYWdPcGVyYXRpb25FCiBfX1pOSzdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2V2ZW50
TWF5U3RhcnREcmFnRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggN2NjZGZmZmQ3MDY0NWI2MWYxNmM2YzcxNGY0Y2MyZTA3NDFm
MGNlNy4uNWU5NTIyOTM0OGMxMWVmZDkxZjUzNWMxMjkwM2NlNWI3NTFlZmZlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTk3OCw2ICsxOTc4LDkgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHkKICAgICAgICAgLy8gVG91Y2ggb3ZlcmZsb3cgc2Nyb2xsaW5nIGNyZWF0
ZXMgYSBzdGFja2luZyBjb250ZXh0LgogICAgICAgICB8fCAoKHN0eWxlLT5vdmVyZmxvd1goKSAh
PSBPSElEREVOIHx8IHN0eWxlLT5vdmVyZmxvd1koKSAhPSBPSElEREVOKSAmJiBzdHlsZS0+dXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZygpKQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQorICAgICAgICB8fCAoZSAmJiBlLT5pc0luVG9wTGF5ZXIoKSkKKyNlbmRpZgogICAgICAg
ICApKQogICAgICAgICBzdHlsZS0+c2V0WkluZGV4KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA2Mzg4NTk0MDFlMGUwM2NkMGRmYzMyZWM0NDJkZjNlNzI0MTI3YjQ5Li4yZmYzYmY3
OGFlZWRkZDk5NTkwYjdmMjU3NThhMWYwNTA4Nzc4NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTU1MzQsNiArNTUzNCwyMSBAQCB2b2lkIERvY3VtZW50OjphZGREb2N1bWVudFRvRnVs
bFNjcmVlbkNoYW5nZUV2ZW50UXVldWUoRG9jdW1lbnQqIGRvYykKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQordm9pZCBEb2N1bWVudDo6YWRkVG9Ub3BMYXllcihFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVCghbV90b3BMYXllckVsZW1lbnRzLmNvbnRhaW5z
KGVsZW1lbnQpKTsKKyAgICBtX3RvcExheWVyRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworfQor
Cit2b2lkIERvY3VtZW50OjpyZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBzaXplX3QgcG9zaXRpb24gPSBtX3RvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsK
KyAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOworICAgIG1fdG9wTGF5ZXJFbGVtZW50
cy5yZW1vdmUocG9zaXRpb24pOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQogdm9pZCBEb2N1bWVudDo6d2Via2l0RXhpdFBvaW50ZXJMb2NrKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggYWE1ZDNkODQxYjIyMzg1NjMyNGUyZThhZTU0NGU3MjAyMjdiNzE3OS4uYTRk
YjkwNzNkM2QwNTYyZDgyNWZiMzY4MWJkOWU2MWYxNTY5NWQ3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTExNTAsNiArMTE1MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIGEgTG9jYWxl
IGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHku
CiAgICAgTG9jYWxlJiBnZXRDYWNoZWRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUg
PSBudWxsQXRvbSk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgdm9pZCBhZGRU
b1RvcExheWVyKEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZUZyb21Ub3BMYXllcihFbGVtZW50
Kik7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV90b3BMYXllckVsZW1lbnRzOyB9CisjZW5kaWYKKwogcHJvdGVj
dGVkOgogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9v
bCBpc0hUTUwpOwogCkBAIC0xNDQ2LDYgKzE0NTIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IG1f
dG9wTGF5ZXJFbGVtZW50czsKKyNlbmRpZgorCiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3Vu
dDsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9sb2FkRXZlbnREZWxheVRpbWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNGQ5MzgzMGVkMWEzMDAzYjg2MjJlMmVlZWQ1MTBlNjE0OWViMjdi
My4uNWU2NGM0YzNlZmMzM2FhNjIzZDRkYzhkNjRkMjkxNjhkYWNmNWUxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMTA2Myw2ICsxMDYzLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW8K
IAogdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKIHsKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgc2V0SXNJblRvcExheWVyKGZh
bHNlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAoY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudCgpKQogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7CkBAIC0yMTAwLDYg
KzIxMDMsMjkgQEAgdm9pZCBFbGVtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25B
bmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhib28KIH0KICNlbmRpZiAgICAKIAorI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgRWxlbWVudDo6aXNJblRvcExheWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+aXNJ
blRvcExheWVyKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0SXNJblRvcExheWVyKGJvb2wgaW5U
b3BMYXllcikKK3sKKyAgICAvLyBUbyBhdm9pZCBhbiBleHRyYSBjYWxsIHRvIGVsZW1lbnRSYXJl
RGF0YSgpLCBkb24ndCB1c2UgRWxlbWVudDo6aXNJblRvcExheWVyKCkuCisgICAgRWxlbWVudFJh
cmVEYXRhKiByYXJlRGF0YSA9IGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKSA6IDA7
CisgICAgaWYgKCghcmFyZURhdGEgJiYgIWluVG9wTGF5ZXIpIHx8IChyYXJlRGF0YSAmJiByYXJl
RGF0YS0+aXNJblRvcExheWVyKCkgPT0gaW5Ub3BMYXllcikpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIXJhcmVEYXRhKQorICAgICAgICByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOworICAgIHJhcmVEYXRhLT5zZXRJc0luVG9wTGF5ZXIoaW5Ub3BMYXllcik7CisgICAgaWYg
KGluVG9wTGF5ZXIpCisgICAgICAgIGRvY3VtZW50KCktPmFkZFRvVG9wTGF5ZXIodGhpcyk7Cisg
ICAgZWxzZQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGcm9tVG9wTGF5ZXIodGhpcyk7Cisg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CisjZW5kaWYK
KwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RQ
b2ludGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2NzdiMzQ3NTQyOTRmZTE2NjYw
OWVlNmZlNWI3MzM2NDJiNDU0NzE5Li40YmVlZWJmMDhjNmI4ZGI1YWJmMjQ0MzQxODQ5YzQwYzc3
ZDQzODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQxNCw2ICs0MTQsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wpOworI2VuZGlmCisKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA0YjE5Y2Q0MmIz
NDlkMjFiYjA1MDk0YzY5M2VkNTdhY2RiMzRmZTYxLi41NWI5MzY2MGNhZjM5YzNhOGEyY2UxMzcz
NTRjMDY0NjM0MjgwMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01
Myw2ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50OwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudDsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB1
c2luZyBOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcjsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6
OnNldElzSW5Ub3BMYXllcjsKKyNlbmRpZgogCiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVj
dGlvbnMoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwOWViOTY1Y2UzYWJjNTVj
NGE4ZjkzNmYwZTRlZWY4M2I4YTlhNDM4Li40Y2IxYjhkZTRkOGUxNzg5NjA3MDU1OWFmNGZkNWI5
MDkyNWM3ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTIsNiArMTEyLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlmCisK
ICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiR2VzdHVyZUV2ZW50LmgiCiAj
ZW5kaWYKQEAgLTEzMTEsOSArMTMxNSwxMyBAQCB2b2lkIE5vZGU6OmRldGFjaCgpCiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9k
ZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAvLyBSZW5kZXJGbG93VGhy
ZWFkIHJlbW92ZXMgc29tZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1bGFyIHRyZWUKKyAgICAgICAg
ICAgIC8vIFJlbmRlckZsb3dUaHJlYWQgYW5kIHRoZSB0b3AgbGF5ZXIgcmVtb3ZlIGVsZW1lbnRz
IGZyb20gdGhlIHJlZ3VsYXIgdHJlZQogICAgICAgICAgICAgLy8gaGllcmFyY2h5LiBUaGV5IHdp
bGwgYmUgY2xlYW5lZCB1cCB3aGVuIHdlIGNhbGwgZGV0YWNoIG9uIHRoZW0uCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCByZW5kZXJl
ci0+aW5SZW5kZXJGbG93VGhyZWFkKCkgfHwgKHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5p
c0luVG9wTGF5ZXJTdWJ0cmVlKCkpKTsKKyNlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIXJlbmRl
cmVyIHx8IHJlbmRlcmVyLT5pblJlbmRlckZsb3dUaHJlYWQoKSk7CisjZW5kaWYKICAgICAgICAg
fQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmY4
YThiMDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkuLmIwMjUwZjYwNDMxNGI3NTI0OTk5MGMw
ZjY1ZDI0YmQ5ZWQ1YTk5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE5Myw2
ICsxOTMsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAs
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKKyAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKKyNlbmRpZgog
ICAgIHsKICAgICB9CiAKQEAgLTMxMSw2ICszMTQsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZh
bHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5Ub3BMYXllcjsgfQorICAgIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wg
dmFsdWUpIHsgbV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAg
ICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKQEAgLTMyNSw2ICszMzIsOSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCA6IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9v
bCBtX2lzSW5Ub3BMYXllciA6IDE7CisjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbj4gPiA+IG1fbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjFmMWMzZjg5OWZiMDkzZmJmZmI4MjQ2
MWFjMWUwYzViNTNhODE5ZC4uODVhNTFhZTJmNjk3ODI0NGMzMjBiODQ3M2E0ZTJjYjk3NGRlMDM3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0y
MjAsNiArMjIwLDI1IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRl
UmVuZGVyZXIoKQogICAgIHJldHVybiBuZXdSZW5kZXJlcjsKIH0KIAorI2lmIEVOQUJMRShESUFM
T0dfRUxFTUVOVCkKK3N0YXRpYyB2b2lkIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBS
ZW5kZXJPYmplY3QqJiBuZXh0UmVuZGVyZXIpCit7CisgICAgcGFyZW50UmVuZGVyZXIgPSBwYXJl
bnRSZW5kZXJlci0+dmlldygpOworICAgIG5leHRSZW5kZXJlciA9IDA7CisgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+dG9wTGF5ZXJFbGVtZW50cygpOworICAgIHNpemVfdCB0b3BMYXllclBvc2l0aW9uID0g
dG9wTGF5ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgIEFTU0VSVCh0b3BMYXllclBvc2l0
aW9uICE9IG5vdEZvdW5kKTsKKyAgICAvLyBGaW5kIHRoZSBuZXh0IHRvcCBsYXllciByZW5kZXJl
ciB0aGF0J3Mgc3RhY2tlZCBhYm92ZSB0aGlzIGVsZW1lbnQuIE5vdGUgdGhhdCB0aGUgaW1tZWRp
YXRlIG5leHQgZWxlbWVudCBpbiB0aGUgdG9wIGxheWVyCisgICAgLy8gc3RhY2sgbWlnaHQgbm90
IGhhdmUgYSByZW5kZXJlciAoZHVlIHRvIGRpc3BsYXk6IG5vbmUsIG9yIHBvc3NpYmx5IGl0IGlz
IG5vdCBhdHRhY2hlZCB5ZXQpLgorICAgIGZvciAoc2l6ZV90IGkgPSB0b3BMYXllclBvc2l0aW9u
ICsgMTsgaSA8IHRvcExheWVyRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKChu
ZXh0UmVuZGVyZXIgPSB0b3BMYXllckVsZW1lbnRzW2ldLT5yZW5kZXJlcigpKSkgeworICAgICAg
ICAgICAgQVNTRVJUKG5leHRSZW5kZXJlci0+cGFyZW50KCkgPT0gcGFyZW50UmVuZGVyZXIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKIHsKICAgICBOb2Rl
KiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKQEAgLTI0OSw2ICsyNjgsMTIgQEAgdm9pZCBOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAgICAvLyBEbyBub3Qg
Y2FsbCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkgaGVyZSBpbiB0aGUgZmlyc3QgY2xhdXNlLCBi
ZWNhdXNlIGl0IGV4cGVjdHMgdG8gaGF2ZQogICAgIC8vIHRoZSByZW5kZXJlciBhZGRlZCB0byBp
dHMgcGFyZW50IGFscmVhZHkuCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX2Nv
bnRleHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8gbV9jb250ZXh0LnBhcmVudEZsb3dSZW5kZXJl
cigpLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUpIDogbV9jb250ZXh0Lm5leHRSZW5kZXJlcigp
OworCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlmIChlbGVtZW50ICYmIGVsZW1l
bnQtPmlzSW5Ub3BMYXllcigpKQorICAgICAgICBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExh
eWVyRWxlbWVudChlbGVtZW50LCBwYXJlbnRSZW5kZXJlciwgbmV4dFJlbmRlcmVyKTsKKyNlbmRp
ZgorCiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKCk7CiAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxv
Z0VsZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5MGQzNmU4MzY4OTcxZjMwYzVlOWMz
NDYuLjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgzMjkzNzNkNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHZvaWQg
SFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIGZhbHNlKTsKKyAg
ICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lkIEhUTUxEaWFsb2dFbGVtZW50Ojpz
aG93KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxlbWVudDo6c2hvd01vZGFs
KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xl
YW5BdHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNldElzSW5Ub3BMYXllcih0cnVlKTsK
IH0KIAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDM5OTdiZGUzYTUyYzMxZDc4ZGE3MzNmMzE5YjdiY2NmMWNkYjVl
ZjkuLjUwMGExYWRhYTgwNDVhNDk5NGNhZjE3OGE2NzZlYjQzZmM4ZmJiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzU1Niw2ICszNTU2LDIzIEBAIE5v
ZGUqIFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzSW5U
b3BMYXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKTsK
KyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5v
ZGUpLT5pc0luVG9wTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6aXNJblRvcExheWVy
U3VidHJlZSgpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIgPSB0
aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGxheWVy
LT5pc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gQ29tcHV0ZSB0aGUgei1vZmZzZXQgb2YgdGhl
IHBvaW50IGluIHRoZSB0cmFuc2Zvcm1TdGF0ZS4KIC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgcHJv
amVjdGluZyBhIHJheSBub3JtYWwgdG8gdGhlIHBsYW5lIG9mIGFuY2VzdG9yLCBmaW5kaW5nIHdo
ZXJlIHRoYXQKIC8vIHJheSBpbnRlcnNlY3RzIHRhcmdldCwgYW5kIGNvbXB1dGluZyB0aGUgeiBk
ZWx0YSBiZXR3ZWVuIHRob3NlIHR3byBwb2ludHMuCkBAIC00NjQ1LDYgKzQ2NjIsMjEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICBpZiAobV9uZWdaT3JkZXJM
aXN0KQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9yZGVyTGlzdC0+YmVnaW4oKSwg
bV9uZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKKyNpZiBFTkFCTEUoRElB
TE9HX0VMRU1FTlQpCisgICAgLy8gQXBwZW5kIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRz
IGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9w
IHJlZ2FyZGxlc3Mgb2Ygei1pbmRleGVzLgorICAgIC8vIFRoZSByZW5kZXJlcnMgb2YgdG9wIGxh
eWVyIGVsZW1lbnRzIGFyZSBjaGlsZHJlbiBvZiB0aGUgdmlldywgc29ydGVkIGluIHRvcCBsYXll
ciBzdGFja2luZyBvcmRlci4KKyAgICBpZiAoaXNSb290TGF5ZXIoKSkgeworICAgICAgICBSZW5k
ZXJPYmplY3QqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CisgICAgICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IHZpZXctPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IGNo
aWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChjaGlsZC0+bm9kZSgpKSA6
IDA7CisgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNJblRv
cExheWVyKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KGNoaWxkKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBtX3Bvc1pP
cmRlckxpc3QtPmFwcGVuZChsYXllcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKKwogICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCkBAIC00NjY5
LDYgKzQ3MDEsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQog
CiB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVy
cywgVmVjdG9yPFJlbmRlckxheWVyKj4qJiBwb3NCdWZmZXIsIFZlY3RvcjxSZW5kZXJMYXllcio+
KiYgbmVnQnVmZmVyKQogeworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoaXNJ
blRvcExheWVyKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgdXBkYXRlRGVzY2Vu
ZGFudERlcGVuZGVudEZsYWdzKCk7CiAKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3Qg
cGFpbnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQg
aW4gem9yZGVyIGxpc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCA3ZmU0NDhhZmMzMmI2NjdjNTM3NTAzNjhhYWI3ZDBkOTBiYTQ1NTgwLi45OTMyZWRiMDE4MmJj
ZTg1ODlhOWNjN2NiMTI3NWYzMjg2NzJkMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNjg2LDYgKzY4NiwxMSBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBlbmNs
b3NpbmdFbGVtZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAg
Ym9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGlzSW5Ub3BMYXllclN1YnRyZWUo
KSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMo
KTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhODA1ZDJkYjZiOGI1
OThhMjY1ZWM4OTIwYTc4MDE1M2FkMWM0MjIuLjNmZGM0N2JiNDJhYzlmMWNhMTFjNDZmZGRkNTBh
NmQ5NmY1ZmMwYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0wNiAgTWF0dCBGYWxr
ZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBu
ZXcgc3RhY2tpbmcgbGF5ZXIgbmVlZGVkIGJ5IHRoZSBGdWxsc2NyZWVuIEFQSSBhbmQgdGhlIG5l
dyA8ZGlhbG9nPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgdG9wIGxheWVyIHN0YWNraW5nIGFuZCByZW5kZXJpbmcu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFp
bmluZy1ibG9jay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHlu
YW1pYy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLXN0YWNraW5nLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBTdGVwaGVuIFdoaXRlICA8
c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFyayBzZXZl
cmFsIGNvbXBvc2l0aW5nIHRlc3RzIGFzIG9ubHkgZmFpbGluZyBJbWFnZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5p
bmctYmxvY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzUzY2U0NmZhMTEzNGI5MDE1YTI0Y2Q3NzJmZmUwZGQwZmYwZDNjNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1j
b250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46
IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dy
b3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDBweDsgaGVpZ2h0OiA1MDBweDsgd2lkdGg6IDkwJTsgYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93Ij4KKyAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgcG9zaXRpb25lZCBhdCB0
aGUgdG9wIG9mIHRoZSBwYWdlIGFuZCB3aXRoIGEgd2lkdGggb2YgOTAlIG9mIHRoZSBwYWdlLiBJ
dCBpcyB0aGUKKyAgICBjaGlsZCBvZiBhbiBuYXJyb3cgZWxlbWVudCBwb3NpdGlvbmVkIG9mZiBz
Y3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBibG9jayBvZiBhIHRvcCBsYXllciBlbGVtZW50IGlz
IHRoZSBpbml0aWFsCisgICAgY29udGFpbmluZyBibG9jaywgc28gaXRzIHBvc2l0aW9uIGFuZCBw
ZXJjZW50IGxlbmd0aHMgYXJlIHJlbGF0aXZlIHRvIHRoYXQuCis8L2Rpdj4KKzxkaXYgY2xhc3M9
InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA3MHB4OyBsZWZ0
OiAwcHg7IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBU
aGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0
aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgorPC9kaXY+Cis8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVp
Z2h0OiAxNTBweDsgdG9wOiA2MDBweDsgbGVmdDogNTAwcHgiPgorICAgIDxkaXYgY2xhc3M9InBz
ZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDog
MTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRo
aXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdp
dGggb3ZlcmZsb3cuIEl0IHNob3VsZCBiZSBjbGlwcGVkLgorICAgIDwvZGl2PgorPC9kaXY+Cis8
ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MjAwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgVGhpcyBt
b2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3Bh
Y2l0eS4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDYwMHB4
OyBvcGFjaXR5OiAwLjMiPgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsg
YmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxv
ZyBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8
L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250
YWluaW5nLWJsb2NrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjNGM1NGRkYzU3ODRiNzRiNGFjYjk1NTkx
YTg3NTM1MzI1MTI4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwKQEAgLTAsMCAr
MSw0MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDYwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAgIDxkaWFsb2cgaWQ9Im9wYXF1ZURpYWxv
ZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxk
IGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2RpYWxv
Zz4KKyAgICA8ZGlhbG9nIGlkPSJ0cmFuc2x1Y2VudERpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQg
YmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2RpYWxvZz4K
KzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBvdmVyZmxvdzogaGlkZGVu
OyB3aWR0aDogNTAwcHg7IGhlaWdodDogMTUwcHg7IHRvcDogNjAwcHg7IGxlZnQ6IDUwMHB4Ij4K
KyAgICA8ZGlhbG9nIGlkPSJ1bmNsaXBwZWREaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogNzBweDsgbGVmdDogMHB4OyBoZWlnaHQ6IDI1MHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiBjeWFuIj4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQg
YnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3VsZCBub3QgYmUgY2xpcHBlZC4K
KyAgICA8L2RpYWxvZz4KKyAgICA8ZGlhbG9nIGlkPSJjbGlwcGVkRGlhbG9nIiBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNo
b3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxk
IGJlIGNsaXBwZWQuCisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6IDEwMDBweDsgd2lkdGg6IDIwcHg7Ij4KKyAg
ICA8ZGlhbG9nIGlkPSJib3R0b21EaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMHB4OyBoZWlnaHQ6IDUwMHB4OyB3aWR0aDogOTAlOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3ciPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBwb3NpdGlvbmVkIGF0IHRoZSB0
b3Agb2YgdGhlIHBhZ2UgYW5kIHdpdGggYSB3aWR0aCBvZiA5MCUgb2YgdGhlIHBhZ2UuIEl0IGlz
IHRoZQorICAgIGNoaWxkIG9mIGFuIG5hcnJvdyBlbGVtZW50IHBvc2l0aW9uZWQgb2ZmIHNjcmVl
biwgYnV0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIGEgdG9wIGxheWVyIGVsZW1lbnQgaXMgdGhl
IGluaXRpYWwKKyAgICBjb250YWluaW5nIGJsb2NrLCBzbyBpdHMgcG9zaXRpb24gYW5kIHBlcmNl
bnQgbGVuZ3RocyBhcmUgcmVsYXRpdmUgdG8gdGhhdC4KKyAgICA8L2RpYWxvZz4KKzwvZGl2Pgor
PHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3R0b21EaWFsb2cnKS5zaG93TW9k
YWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmNsaXBwZWREaWFsb2cnKS5zaG93TW9k
YWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcGFxdWVEaWFsb2cnKS5zaG93TW9kYWwo
KTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVkRGlhbG9nJykuc2hvdygpOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zbHVjZW50RGlhbG9nJykuc2hvdygpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNr
aW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkxZjY2MTczOTcwZDkzNjlk
ZWM2MDI0MzU4ODIwMWQwMDM4MDk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50
RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7CisgICAg
aGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6
IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBj
b2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGUgc3RhY2tpbmcg
b3JkZXIgc2hvdWxkIGJlOiB5ZWxsb3csIG1hZ2VudGEsIGdyZWVuLCBwaW5rLCBjeWFuIChjbG9z
ZXN0IHRvIHVzZXIpCisKKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgaWQ9ImEiIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgbGVmdDogNTBweDsgd2lkdGg6IDI4MHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9n
IiBpZD0iZCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMjAw
cHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRv
ZGlhbG9nIiBpZD0iZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyNTBweDsgbGVm
dDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4KKzxkaXYgY2xhc3M9InBz
ZXVkb2RpYWxvZyIgaWQ9ImgiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogODBweDsg
bGVmdDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IHBpbmsiPjwvZGl2PgorPGRpdiBjbGFzcz0i
cHNldWRvZGlhbG9nIiBpZD0iYiIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBw
eDsgbGVmdDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmQ3ZTY0MTljOThhNDdkNzIzYWM3ZmNlYTU5YTRmOTU0YTRjMjEyYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1zdGFja2luZy1keW5hbWljLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCEtLSBUaGlzIHRlc3Rz
IHRvcCBsYXllciBlbGVtZW50cyBzdGFja2luZyBhZnRlciBkeW5hbWljIGNoYW5nZXMgdG8gJ2Rp
c3BsYXknLCByZW1vdmFsCitmcm9tIHRoZSBET00gdHJlZSwgYW5kIGNhbGxpbmcgc2hvdy9jbG9z
ZS4gTmVzdGVkIG1vZGFsIGRpYWxvZ3MgYXJlIGFsc28gdGVzdGVkLiAtLT4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+Citk
aWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorVGhlIHN0YWNraW5nIG9yZGVyIHNob3VsZCBiZTogeWVsbG93
LCBtYWdlbnRhLCBncmVlbiwgcGluaywgY3lhbiAoY2xvc2VzdCB0byB1c2VyKQorCis8ZGlhbG9n
IGlkPSJhIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMjgwcHg7IHRvcDogNTBw
eDsgbGVmdDogNTBweDsgZGlzcGxheTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB6
LWluZGV4OiAxMDAwIj48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9ImIiIHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFu
OyB6LWluZGV4OiAtMTAwMCI+PC9kaWFsb2c+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxk
aWFsb2cgaWQ9ImMiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6
IDE1MHB4Ij48L2RpYWxvZz4KKzwvZGl2PgorPGRpYWxvZyBpZD0iZSIgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAyNTBweDsgbGVmdDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuIj4KKyAgICA8ZGlhbG9nIGlkPSJkIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDIwMHB4OyBsZWZ0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAg
IDxkaWFsb2cgaWQ9ImYiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMzAwcHg7IGxl
ZnQ6IDMwMHB4Ij4KKyAgICAgICAgICAgIDxkaWFsb2cgaWQ9ImciIHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMzUwcHg7IGxlZnQ6IDM1MHB4Ij48L2RpYWxvZz4KKyAgICAgICAgPC9k
aWFsb2c+CisgICAgICAgIDxkaWFsb2cgaWQ9ImgiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogODBweDsgbGVmdDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IHBpbmsiPjwvZGlhbG9n
PgorICAgIDwvZGlhbG9nPgorPC9kaWFsb2c+Cis8c2NyaXB0PgordmFyIGYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZicpOworZi5zaG93TW9kYWwoKTsKK2cuc2hvd01vZGFsKCk7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2MnKS5zaG93TW9kYWwoKTsKK2YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKTsKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZScpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2gnKS5z
aG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJykuY2xvc2UoKTsKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdiJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYScpLnNob3coKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhJykuc3R5bGUuZGlz
cGxheSA9ICdibG9jayc7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0
YWNraW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTdiZWUz
ZGNiZjFiNjZjNDc0NDA5N2EyMTY0ZTE5OTEzZjc2NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+Cis8c3R5bGU+CisuYm94IHsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKy5jb250YWluZXIgeworICAg
IC13ZWJraXQtcGVyc3BlY3RpdmU6IDUwMHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OworICAgIGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGE7Cit9CisudHJhbnNmb3JtZWQgeworICAg
IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDQ1ZGVnKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBjeWFuOworfQorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlk
OworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjog
YmxhY2s7Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0
eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsgei1pbmRleDozMDAwIj4KKyAgICBUaGlz
IHdoaXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSBvbiB0
b3Agb2YgZXZlcnl0aGluZy4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBsZWZ0OiAwOyBy
aWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9n
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyB3aWR0aDogNzUlOyBoZWlnaHQ6IDQwMHB4OyB6LWluZGV4OjIwMDAiPgorICAgIFRo
aXMgZ3JlZW4gYm94IGlzIGFsc28gYSBtb2RhbCBkaWFsb2cuIEl0IHNob3VsZCBiZSByZW5kZXJl
ZCBhYm92ZSB0aGUgcmVkIGFuZCB5ZWxsb3cgcmVnaW9ucy4KKyAgICA8ZGl2IGNsYXNzPSJjb250
YWluZXIgYm94Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3JtZWQgYm94Ij5BIHRyYW5z
Zm9ybSB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6MzAwcHg7IHot
aW5kZXg6IDI7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIHNob3dzIHot
aW5kZXggc3RhY2tpbmcgd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLiBUaGUgY3lhbiBib3gg
c2hvdWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFnZW50YSBvbmUuCisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6MzUwcHg7IGxlZnQ6
NTBweDsgei1pbmRleDogMTsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9kaXY+CisgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRpYWxvZy48L2Rp
dj4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBs
ZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAwZW07IGJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsgei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNr
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5
ZXItc3RhY2tpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmVlYTU2ZTc1M2FkZGQ3MWM2OTc0MmNkMzI3
ODA4NWM0ZDVjMDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwKQEAgLTAsMCArMSw1MiBAQAor
PCEtLSBUaGlzIHRlc3RzIHRoYXQgdG9wIGxheWVyIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBhYm92
ZSB6LWluZGV4ZWQgZWxlbWVudHMKK2FuZCBzdGFja2VkIGluIHRoZSBjb3JyZWN0IG9yZGVyIGFt
b25nc3QgdGhlbXNlbHZlcy4gQWxzbywgbGF5ZXIgZmVhdHVyZXMgbGlrZQordHJhbnNmb3JtcyBh
bmQgei1pbmRleCBhcmUgdGVzdGVkIGluc2lkZSBhIHRvcCBsYXllciBlbGVtZW50IHN1YnRyZWUu
IC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3Nj
cmlwdD4KKzxzdHlsZT4KKy5ib3ggeworICAgIGhlaWdodDoxNTBweDsKKyAgICB3aWR0aDoxNTBw
eDsKK30KKy5jb250YWluZXIgeworICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDUwMHB4OworICAg
IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGE7
Cit9CisudHJhbnNmb3JtZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDQ1ZGVn
KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpYWxvZyBpZD0iaGlkZGVuRGlhbG9nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29s
b3I6IHJlZCI+VGhpcyBzaG91bGQgbm90IGJlIGRpc3BsYXllZC48L2RpYWxvZz4KKzxkaWFsb2cg
aWQ9InRvcERpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4
OiAtMTA7Ij4KKyAgICBUaGlzIHdoaXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cu
IEl0IHNob3VsZCBiZSBvbiB0b3Agb2YgZXZlcnl0aGluZy4KKzwvZGlhbG9nPgorPGRpdiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyBsZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPgorICAgIDxkaWFs
b2cgaWQ9ImJvdHRvbURpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBweDsiPgor
ICAgICAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQg
YmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVsbG93IHJlZ2lvbnMuCisgICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRhaW5lciBib3giPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNm
b3JtZWQgYm94Ij5BIHRyYW5zZm9ybSB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDozMDBweDsgei1pbmRleDogMjsgYmFja2dyb3VuZC1jb2xvcjogY3lh
biI+CisgICAgICAgICAgICBUaGlzIHNob3dzIHotaW5kZXggc3RhY2tpbmcgd2l0aGluIHRoZSBk
aWFsb2cncyBzdWJ0cmVlLiBUaGUgY3lhbiBib3ggc2hvdWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFn
ZW50YSBvbmUuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVmdDo1MHB4OyB6LWluZGV4OiAxOyBi
YWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMwcHg7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuIj5UaGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRpYWxvZy48L2Rpdj4KKyAgICA8L2RpYWxv
Zz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBs
ZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAwZW07IGJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsgei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3R0b21EaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0b3BEaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdo
aWRkZW5EaWFsb2cnKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172999</attachid>
            <date>2012-11-08 03:46:13 -0800</date>
            <delta_ts>2012-11-15 23:31:10 -0800</delta_ts>
            <desc>more review comments</desc>
            <filename>bug-84796-20121108204422.patch</filename>
            <type>text/plain</type>
            <size>38069</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg0NTZkN2JjYjExODJj
MTNiZWU3MTI2NzVjYjZlZjIyZGE3NDYzNC4uNjYyNjZmYWMzMjZhZjI2YWIxMzdkZTk4MjY3ZGQ4
MTE4Mzc5ODliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTA4ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gVGhlIEZ1bGxzY3JlZW4KKyAgICAgICAgc3BlY2lmaWNhdGlvbiBtYW5kYXRlcyB0
aGF0IHdlIHRyYWNrIHRoZSBvcmRlcmluZyBvZiB0aGUgRE9NIG5vZGVzIGluCisgICAgICAgIHRo
ZSB0b3AgbGF5ZXIsIG5vdCB0aGUgcmVuZGVyZXJzLiBUaGF0IG1ha2VzIGl0IGhhcmQgdG8gaW1w
bGVtZW50IG9uCisgICAgICAgIHRoZSByZW5kZXJpbmcgc2lkZSBvbmx5LgorCisgICAgICAgIEVs
ZW1lbnRzIGluIHRoZSB0b3AgbGF5ZXIgZ2V0IGEgbGF5ZXIuIExheWVycyBpbiB0aGUgdG9wIGxh
eWVyIGFyZQorICAgICAgICBhZGRlZCB0byB0aGUgcm9vdCBsYXllcidzIGNoaWxkIGxpc3QgYWZ0
ZXIgbm9ybWFsIGxheWVycyBhbmQgaW4gdGhlCisgICAgICAgIG9yZGVyIG9mIHRoZSB0b3AgbGF5
ZXIgc3RhY2suIFRoaXMgd2F5LCB0aGUgdG9wIGxheWVyIGFwcGVhcnMgYWJvdmUKKyAgICAgICAg
YWxsIG90aGVyIHN0YWNraW5nIGNvbnRleHRzIGFuZCBpbiB0aGUgZGVzaXJlZCBvcmRlci4KKwor
ICAgICAgICBJbiBhZGRpdGlvbiwgdG9wIGxheWVyIHJlbmRlcmVycyBhcmUgYWRkZWQgYXMgY2hp
bGRyZW4gb2YgUmVuZGVyVmlldworICAgICAgICBpbiB0b3AgbGF5ZXIgb3JkZXIuIFRoaXMgaXMg
dG8gc2F0aXNmeSByZXF1aXJlbWVudHMgc3VjaCBhcyB0aGUKKyAgICAgICAgY29udGFpbmluZyBi
bG9jayBvZiBhbiBlbGVtZW50IGluIHRoZSB0b3AgbGF5ZXIgaXMgdGhlIGluaXRpYWwKKyAgICAg
ICAgY29udGFpbmluZyBibG9jay4gSXQgYWxzbyBhbGxvd3MgUmVuZGVyTGF5ZXIgdG8ga25vdyB0
aGUgcHJvcGVyCisgICAgICAgIHN0YWNraW5nIG9yZGVyIG9mIHRoZSBsYXllcnMgd2l0aG91dCBn
b2luZyBkaXJlY3RseSBmcm9tIHRoZSB0b3AgbGF5ZXIKKyAgICAgICAgZWxlbWVudHMgdG8gdGhl
aXIgbGF5ZXJzLgorCisgICAgICAgIFNvIGZhciwgb25seSBtb2RhbCBkaWFsb2cgZWxlbWVudHMg
Y2FuIGJlIGFkZGVkIHRvIHRoZSB0b3AgbGF5ZXIuCisgICAgICAgIFRoZSBwbGFuIGlzIHRvIG1h
a2UgdGhlIEZ1bGxzY3JlZW4gQVBJIGFsc28gdXNlIHRoZSB0b3AgbGF5ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJs
b2NrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1kaXNwbGF5LW5vbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0
eWxlKTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXll
ckVsZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4K
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9w
TGF5ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRS
YXJlRGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBBZGQgYW4gZXhjZXB0aW9u
IHRvIHRoZSBhc3NlcnQgc2luY2UgdG9wIGxheWVyIGVsZW1lbnRzIGFuZCB0aGVpciBkZXNjZW5k
YW50cyBhcmUgbW92ZWQgZnJvbSB0aGVpcgorICAgICAgICByZWd1bGFyIHBvc2l0aW9uIGluIHRo
ZSByZW5kZXIgdHJlZS4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChOb2RlUmFyZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXIpOgorICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVk
ZWQpOiBBZGQgcmVuZGVyZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYXMgY2hpbGRyZW4gb2Yg
UmVuZGVyVmlldywgYW5kCisgICAgICAgIGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAg
ICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEaWFsb2dFbGVtZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxl
bWVudDo6c2hvd01vZGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNJblRv
cExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0luVG9wTGF5ZXJTdWJ0
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMp
OiBBZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKTogQXZvaWQgYWRk
aW5nIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGR1cmluZyBub3JtYWwgbGF5ZXIgY29s
bGVjdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJl
bmRlckxheWVyKToKKwogMjAxMi0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtWOF0gSW50cnVzaXZlRE9NV3JhcHBlck1hcCBpcyBubyBsb25nZXIgbmVl
ZGVkIGFuZCBjYW4gYmUgZGVsZXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlM2IxZDM1MTIy
YmE4YTc5YTZmYzY4MzgyZGEwNjVjNzFiMTBmYzYyLi41ZTUyNzU5ZjUyMzlkZjkzNTcwNzZkNDA3
NWI5YzZkNjQ0YTI0Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjIyNCw2ICsyMjI0LDEw
IEBAIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmFubm90YXRlZFJlZ2lvbnNFdgogX19aTjdXZWJD
b3JlOFNldHRpbmdzNDFzZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZUVi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK19fWk5LN1dlYkNvcmUxMVJl
bmRlckxheWVyMTJpc0luVG9wTGF5ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJLTlNf
MThQbGF0Zm9ybU1vdXNlRXZlbnRFTlNfMTNEcmFnT3BlcmF0aW9uRQogX19aTks3V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMTdldmVudE1heVN0YXJ0RHJhZ0VSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50
RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDdjY2RmZmZkNzA2NDViNjFm
MTZjNmM3MTRmNGNjMmUwNzQxZjBjZTcuLjVlOTUyMjkzNDhjMTFlZmQ5MWY1MzVjMTI5MDNjZTVi
NzUxZWZmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5NzgsNiAr
MTk3OCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5CiAgICAgICAgIC8vIFRvdWNoIG92ZXJm
bG93IHNjcm9sbGluZyBjcmVhdGVzIGEgc3RhY2tpbmcgY29udGV4dC4KICAgICAgICAgfHwgKChz
dHlsZS0+b3ZlcmZsb3dYKCkgIT0gT0hJRERFTiB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgIT0gT0hJ
RERFTikgJiYgc3R5bGUtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgorI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAgICAgfHwgKGUgJiYgZS0+aXNJblRvcExheWVy
KCkpCisjZW5kaWYKICAgICAgICAgKSkKICAgICAgICAgc3R5bGUtPnNldFpJbmRleCgwKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzFmZGJhZWQ0ODk4ZDJlMGNkMTU5ZWFjODZiNTg3
YTVmNjhlOWIyOC4uMzA3MDg1MDhmMzkxOThjNWY3MWFjYTBkZDE4NGEyMjJjOGEzYzQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTQwLDYgKzU1NDAsMjEgQEAgdm9pZCBEb2N1bWVu
dDo6YWRkRG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFuZ2VFdmVudFF1ZXVlKERvY3VtZW50KiBkb2Mp
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK3ZvaWQgRG9jdW1lbnQ6
OmFkZFRvVG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1fdG9wTGF5
ZXJFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV90b3BMYXllckVsZW1lbnRzLmFw
cGVuZChlbGVtZW50KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKEVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgc2l6ZV90IHBvc2l0aW9uID0gbV90b3BMYXllckVsZW1l
bnRzLmZpbmQoZWxlbWVudCk7CisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAg
ICBtX3RvcExheWVyRWxlbWVudHMucmVtb3ZlKHBvc2l0aW9uKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRQb2ludGVyTG9j
aygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDJlNGUwNzNiZjY0NmMwZGYwY2E3ZWViMjE3
YTBjOGNkZjRmZjVhMTcuLmI5NTVlZWFlMTM3ZmJlZGI0NWEzZDk0MTQzYWM1ZDczNmNjYmFjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTY4LDYgKzExNjgsMTIgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiBhIExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVu
dCBpcyBudWxsIG9yIGVtcHR5LgogICAgIExvY2FsZSYgZ2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlID0gbnVsbEF0b20pOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQorICAgIHZvaWQgYWRkVG9Ub3BMYXllcihFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVG
cm9tVG9wTGF5ZXIoRWxlbWVudCopOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4g
PiYgdG9wTGF5ZXJFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGF5ZXJFbGVtZW50czsg
fQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwm
LCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKTsKIApAQCAtMTQ2OCw2ICsxNDc0LDEwIEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJT
dHlsZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIFZlY3RvcjxS
ZWZQdHI8RWxlbWVudD4gPiBtX3RvcExheWVyRWxlbWVudHM7CisjZW5kaWYKKwogICAgIGludCBt
X2xvYWRFdmVudERlbGF5Q291bnQ7CiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fbG9hZEV2ZW50RGVs
YXlUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDE3OTNlMjhjYTE3OGMyOTRmMzNm
ZjhjODdlZmY2Mzc5OGM2YmQ5M2YuLmRhZTYwZTNjNTk4MzI2YTdjNWM0ODdiMzZmYWNiYWQ4YWYw
OTBmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwNjUsNiArMTA2NSw5IEBAIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqIGluc2VydGlvCiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAg
IHNldElzSW5Ub3BMYXllcihmYWxzZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgc2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMo
ZmFsc2UpOwpAQCAtMjA5NSw2ICsyMDk4LDM0IEBAIHZvaWQgRWxlbWVudDo6c2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vCiB9
CiAjZW5kaWYgICAgCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIEVsZW1lbnQ6
OmlzSW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxl
bWVudFJhcmVEYXRhKCktPmlzSW5Ub3BMYXllcigpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElz
SW5Ub3BMYXllcihib29sIGluVG9wTGF5ZXIpCit7CisgICAgLy8gVG8gYXZvaWQgYW4gZXh0cmEg
Y2FsbCB0byBlbGVtZW50UmFyZURhdGEoKSwgZG9uJ3QgdXNlIEVsZW1lbnQ6OmlzSW5Ub3BMYXll
cigpLgorICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBoYXNSYXJlRGF0YSgpID8gZWxl
bWVudFJhcmVEYXRhKCkgOiAwOworICAgIGlmIChyYXJlRGF0YSkgeworICAgICAgICBpZiAocmFy
ZURhdGEtPmlzSW5Ub3BMYXllcigpID09IGluVG9wTGF5ZXIpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFpblRvcExheWVyKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOworICAgIH0K
KyAgICByYXJlRGF0YS0+c2V0SXNJblRvcExheWVyKGluVG9wTGF5ZXIpOworCisgICAgaWYgKGlu
VG9wTGF5ZXIpCisgICAgICAgIGRvY3VtZW50KCktPmFkZFRvVG9wTGF5ZXIodGhpcyk7CisgICAg
ZWxzZQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGcm9tVG9wTGF5ZXIodGhpcyk7CisgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CisjZW5kaWYKKwog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RQb2lu
dGVyTG9jaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmODc0ZTRiMzg1Y2E3OWQ5ODA1ZmEz
ODM5OTg1YmRkYzk2ZmZkYzJhLi5lNmMwYjMwNjhmNmQ5NGQ5ZjE5NTA3ZGMzMGIyNzdlYzhhZjE3
YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQxMyw2ICs0MTMsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERJ
QUxPR19FTEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBhZjEzNWYwOWJjMzYz
NTkwYzcyZTA0ZWJmOTI4ZjVkM2VjMDgyMWFmLi4yMzM4NGE5Y2Q2OGQ2NTI2MWE0Y2QyNTY2ZjE2
NmQ4OTBiYTkyZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01Myw2
ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50OwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudDsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB1c2lu
ZyBOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcjsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNl
dElzSW5Ub3BMYXllcjsKKyNlbmRpZgogCiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVjdGlv
bnMoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyZGNjYTI2YWM4NTQ0NjhkYTk3
NmQxNzljNmQ0MTBmMmE4NDczY2JkLi44ZmNkYzQwMGI3N2FiM2JkZjFiODhlYjZkZTZiMTQ0YmVh
N2VlNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTIsNiArMTEyLDEwIEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlmCisKICNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiR2VzdHVyZUV2ZW50LmgiCiAjZW5k
aWYKQEAgLTEzMTEsOSArMTMxNSwxMyBAQCB2b2lkIE5vZGU6OmRldGFjaCgpCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAvLyBSZW5kZXJGbG93VGhyZWFk
IHJlbW92ZXMgc29tZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1bGFyIHRyZWUKKyAgICAgICAgICAg
IC8vIFJlbmRlckZsb3dUaHJlYWQgYW5kIHRoZSB0b3AgbGF5ZXIgcmVtb3ZlIGVsZW1lbnRzIGZy
b20gdGhlIHJlZ3VsYXIgdHJlZQogICAgICAgICAgICAgLy8gaGllcmFyY2h5LiBUaGV5IHdpbGwg
YmUgY2xlYW5lZCB1cCB3aGVuIHdlIGNhbGwgZGV0YWNoIG9uIHRoZW0uCisjaWYgRU5BQkxFKERJ
QUxPR19FTEVNRU5UKQorICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCByZW5kZXJlci0+
aW5SZW5kZXJGbG93VGhyZWFkKCkgfHwgKHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5pc0lu
VG9wTGF5ZXJTdWJ0cmVlKCkpKTsKKyNlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIXJlbmRlcmVy
IHx8IHJlbmRlcmVyLT5pblJlbmRlckZsb3dUaHJlYWQoKSk7CisjZW5kaWYKICAgICAgICAgfQog
I2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmY4YThi
MDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkuLmIwMjUwZjYwNDMxNGI3NTI0OTk5MGMwZjY1
ZDI0YmQ5ZWQ1YTk5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE5Myw2ICsx
OTMsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAsIG1f
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShESUFM
T0dfRUxFTUVOVCkKKyAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKKyNlbmRpZgogICAg
IHsKICAgICB9CiAKQEAgLTMxMSw2ICszMTQsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgY29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVl
KSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyNpZiBF
TkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5Ub3BMYXllcjsgfQorICAgIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wgdmFs
dWUpIHsgbV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
VHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKQEAgLTMyNSw2ICszMzIsOSBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudCA6IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBt
X2lzSW5Ub3BMYXllciA6IDE7CisjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpCiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bj4gPiA+IG1fbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjFmMWMzZjg5OWZiMDkzZmJmZmI4MjQ2MWFj
MWUwYzViNTNhODE5ZC4uYjkxYzhiZmYyYWMyZWVhODkyNGU5MmI4MzM5YTIzYTRiODZlYmQzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMjAs
NiArMjIwLDI2IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVu
ZGVyZXIoKQogICAgIHJldHVybiBuZXdSZW5kZXJlcjsKIH0KIAorI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKK3N0YXRpYyB2b2lkIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBSZW5k
ZXJPYmplY3QqJiBuZXh0UmVuZGVyZXIpCit7CisgICAgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnRS
ZW5kZXJlci0+dmlldygpOworICAgIG5leHRSZW5kZXJlciA9IDA7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS0+dG9wTGF5ZXJFbGVtZW50cygpOworICAgIHNpemVfdCB0b3BMYXllclBvc2l0aW9uID0gdG9w
TGF5ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgIEFTU0VSVCh0b3BMYXllclBvc2l0aW9u
ICE9IG5vdEZvdW5kKTsKKyAgICAvLyBGaW5kIHRoZSBuZXh0IHRvcCBsYXllciByZW5kZXJlciB0
aGF0J3Mgc3RhY2tlZCBhYm92ZSB0aGlzIGVsZW1lbnQuIE5vdGUgdGhhdCB0aGUgaW1tZWRpYXRl
IG5leHQgZWxlbWVudCBpbiB0aGUgdG9wIGxheWVyCisgICAgLy8gc3RhY2sgbWlnaHQgbm90IGhh
dmUgYSByZW5kZXJlciAoZHVlIHRvIGRpc3BsYXk6IG5vbmUsIG9yIHBvc3NpYmx5IGl0IGlzIG5v
dCBhdHRhY2hlZCB5ZXQpLgorICAgIGZvciAoc2l6ZV90IGkgPSB0b3BMYXllclBvc2l0aW9uICsg
MTsgaSA8IHRvcExheWVyRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbmV4dFJlbmRl
cmVyID0gdG9wTGF5ZXJFbGVtZW50c1tpXS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKG5leHRS
ZW5kZXJlcikgeworICAgICAgICAgICAgQVNTRVJUKG5leHRSZW5kZXJlci0+cGFyZW50KCkgPT0g
cGFyZW50UmVuZGVyZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9
CisjZW5kaWYKKwogdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVl
ZGVkKCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKQEAgLTI0OSw2ICsy
NjksMTIgQEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KCkKICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkgaGVyZSBpbiB0
aGUgZmlyc3QgY2xhdXNlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8gaGF2ZQogICAgIC8vIHRoZSBy
ZW5kZXJlciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCiAgICAgUmVuZGVyT2JqZWN0KiBu
ZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8gbV9jb250ZXh0
LnBhcmVudEZsb3dSZW5kZXJlcigpLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUpIDogbV9jb250
ZXh0Lm5leHRSZW5kZXJlcigpOworCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlm
IChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKQorICAgICAgICBhZGp1c3RJbnNl
cnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudChlbGVtZW50LCBwYXJlbnRSZW5kZXJlciwgbmV4
dFJlbmRlcmVyKTsKKyNlbmRpZgorCiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNy
ZWF0ZVJlbmRlcmVyKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5MGQz
NmU4MzY4OTcxZjMwYzVlOWMzNDYuLjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgzMjkz
NzNkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBAIC01
Myw2ICs1Myw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3Bl
bkF0dHIsIGZhbHNlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lkIEhU
TUxEaWFsb2dFbGVtZW50OjpzaG93KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlhbG9n
RWxlbWVudDo6c2hvd01vZGFsKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNldElz
SW5Ub3BMYXllcih0cnVlKTsKIH0KIAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGZjZDUyZmQxNTYwMDAyOTQyOWZm
MjdlMGYzYjgzYjJkOWI3ZjYyY2EuLjU0NDRmNDQxN2Y2OWNlMjJmNWY0MDBhMGY2YmIxOTQwZDYz
ZTE2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzU3
Myw2ICszNTczLDIzIEBAIE5vZGUqIFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29u
c3QKICAgICByZXR1cm4gMDsKIH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wg
UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHJl
bmRlcmVyKCktPm5vZGUoKTsKKyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2Rl
KCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc0luVG9wTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJM
YXllcjo6aXNJblRvcExheWVyU3VidHJlZSgpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsK
KyAgICAgICAgaWYgKGxheWVyLT5pc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gQ29tcHV0ZSB0
aGUgei1vZmZzZXQgb2YgdGhlIHBvaW50IGluIHRoZSB0cmFuc2Zvcm1TdGF0ZS4KIC8vIFRoaXMg
aXMgZWZmZWN0aXZlbHkgcHJvamVjdGluZyBhIHJheSBub3JtYWwgdG8gdGhlIHBsYW5lIG9mIGFu
Y2VzdG9yLCBmaW5kaW5nIHdoZXJlIHRoYXQKIC8vIHJheSBpbnRlcnNlY3RzIHRhcmdldCwgYW5k
IGNvbXB1dGluZyB0aGUgeiBkZWx0YSBiZXR3ZWVuIHRob3NlIHR3byBwb2ludHMuCkBAIC00NjYy
LDYgKzQ2NzksMjEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAg
ICBpZiAobV9uZWdaT3JkZXJMaXN0KQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9y
ZGVyTGlzdC0+YmVnaW4oKSwgbV9uZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7
CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgLy8gQXBwZW5kIGxheWVycyBmb3Ig
dG9wIGxheWVyIGVsZW1lbnRzIGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1
cmUgdGhleSBhcmUgb24gdG9wIHJlZ2FyZGxlc3Mgb2Ygei1pbmRleGVzLgorICAgIC8vIFRoZSBy
ZW5kZXJlcnMgb2YgdG9wIGxheWVyIGVsZW1lbnRzIGFyZSBjaGlsZHJlbiBvZiB0aGUgdmlldywg
c29ydGVkIGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAgICBpZiAoaXNSb290TGF5ZXIo
KSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7Cisg
ICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHZpZXctPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQq
IGNoaWxkRWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVu
dChjaGlsZC0+bm9kZSgpKSA6IDA7CisgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNo
aWxkRWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY2hpbGQpLT5sYXllcigpOworICAg
ICAgICAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbV96T3JkZXJMaXN0c0RpcnR5ID0g
ZmFsc2U7CiB9CiAKQEAgLTQ2ODYsNiArNDcxOCwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVOb3JtYWxGbG93TGlzdCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9v
bCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiomIHBvc0J1ZmZlciwg
VmVjdG9yPFJlbmRlckxheWVyKj4qJiBuZWdCdWZmZXIpCiB7CisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgIGlmIChpc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlm
CisKICAgICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAogICAgIC8vIE92ZXJm
bG93IGxheWVycyBhcmUganVzdCBwYWludGVkIGJ5IHRoZWlyIGVuY2xvc2luZyBsYXllcnMsIHNv
IHRoZXkgZG9uJ3QgZ2V0IHB1dCBpbiB6b3JkZXIgbGlzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCmluZGV4IDdmZTQ0OGFmYzMyYjY2N2M1Mzc1MDM2OGFhYjdkMGQ5MGJh
NDU1ODAuLjk5MzJlZGIwMTgyYmNlODU4OWE5Y2M3Y2IxMjc1ZjMyODY3MmQxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02ODYsNiArNjg2LDExIEBAIHB1Ymxp
YzoKIAogICAgIE5vZGUqIGVuY2xvc2luZ0VsZW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0OworICAgIGJvb2wg
aXNJblRvcExheWVyU3VidHJlZSgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZGI2ZjY4OGQ0MzM3Y2NmZTY1YTE0MmVlYTlhZjY1NDkxMTYyYWFiYS4uMjQ5Y2JjNzli
MmM0NmI2NjQzODQ1MGZiY2M0MzQ0MWM3ZWQ1MmJkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTExLTA4ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxz
Y3JlZW4gQVBJIGFuZCB0aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciB0b3AgbGF5ZXIgc3Rh
Y2tpbmcgYW5kIHJlbmRlcmluZy4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJs
b2NrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3Rv
cC1sYXllci1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRpc3BsYXktbm9uZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItbmVzdGlu
Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItbmVzdGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXIt
c3RhY2tpbmctZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTExLTA3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9ucyBmb3Igc3ZnL3RleHQvdGV4dC1yZXNjYWxlLnN2
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDAwN2M1OThiODhiZDAxMzY1NmFlNmI1ODhiYTlkM2IxMjc0ZDJm
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKzwvc2NyaXB0
PgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlk
OworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjog
YmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgdGVzdHMgdGhh
dCBhIHRvcCBsYXllciBlbGVtZW50J3MgY29udGFpbmluZyBibG9jayBpcyBpbiB0aGUgaW5pdGlh
bCBjb250YWluaW5nIGJsb2NrIGFuZCB0aGF0IGl0IGlzIHVuYWZmZWN0ZWQgYnkKK2FuY2VzdG9y
IGVsZW1lbnRzIHdpdGggb3ZlcmZsb3cgb3Igb3BhY2l0eS4gIERpYWxvZyBlbGVtZW50cyBhcmUg
dXNlZCB0byBkZW1vbnN0cmF0ZSB0aGVzZSBwcm9wZXJ0aWVzLiBBIGRpYWxvZyBvcGVuZWQKK3dp
dGggc2hvd01vZGFsKCkgaXMgaW4gdGhlIHRvcCBsYXllcjsgb25lIG9wZW5lZCB3aXRoIGRpYWxv
Zy5zaG93KCkgaXMgbm90LgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGhlaWdodDogMjUwcHg7IHdpZHRoOiA5MCU7IGJh
Y2tncm91bmQtY29sb3I6IHllbGxvdyI+CisgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJl
IG9uc2NyZWVuIHdpdGggYSB3aWR0aCBvZiA5MCUgb2YgdGhlIHBhZ2UuIEl0IGlzIHRoZSBjaGls
ZCBvZiBhbiBuYXJyb3cgZWxlbWVudAorICAgIHBvc2l0aW9uZWQgb2ZmIHNjcmVlbiwgYnV0IHRo
ZSBjb250YWluaW5nIGJsb2NrIG9mIGEgdG9wIGxheWVyIGVsZW1lbnQgaXMgdGhlIGluaXRpYWwg
Y29udGFpbmluZyBibG9jaywgc28gaXRzCisgICAgcG9zaXRpb24gYW5kIHBlcmNlbnQgbGVuZ3Ro
cyBhcmUgcmVsYXRpdmUgdG8gdGhhdC4KKzwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9n
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGhlaWdo
dDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgIFRoaXMgbW9kYWwgZGlhbG9n
IHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBz
aG91bGQgbm90IGJlIGNsaXBwZWQuCis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4OyB0b3A6
IDQwMHB4OyBsZWZ0OiAzMDBweCI+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlh
bG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQg
c2hvdWxkIGJlIGNsaXBwZWQuCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVk
b2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyNTBweDsgbGVmdDogMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorPC9kaXY+Cis8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDAwcHg7IG9wYWNpdHk6IDAuMyI+
CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiBtYWdlbnRhIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZl
Y3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGl2PgorPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZThlOWQ2MTlkMDg4YTgzY2MzY2IxZDZjMjA5NzhkZjJiN2VlMDg5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorVGhpcyB0ZXN0cyB0aGF0IGEgdG9wIGxh
eWVyIGVsZW1lbnQncyBjb250YWluaW5nIGJsb2NrIGlzIGluIHRoZSBpbml0aWFsIGNvbnRhaW5p
bmcgYmxvY2sgYW5kIHRoYXQgaXQgaXMgdW5hZmZlY3RlZCBieQorYW5jZXN0b3IgZWxlbWVudHMg
d2l0aCBvdmVyZmxvdyBvciBvcGFjaXR5LiAgRGlhbG9nIGVsZW1lbnRzIGFyZSB1c2VkIHRvIGRl
bW9uc3RyYXRlIHRoZXNlIHByb3BlcnRpZXMuIEEgZGlhbG9nIG9wZW5lZAord2l0aCBzaG93TW9k
YWwoKSBpcyBpbiB0aGUgdG9wIGxheWVyOyBvbmUgb3BlbmVkIHdpdGggZGlhbG9nLnNob3coKSBp
cyBub3QuCisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0MDBweDsgb3Bh
Y2l0eTogMC4zIj4KKyAgICA8ZGlhbG9nIGlkPSJvcGFxdWVEaWFsb2ciIHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YSI+CisgICAgICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5
IGl0cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9kaWFsb2c+CisgICAgPGRpYWxvZyBp
ZD0idHJhbnNsdWNlbnREaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4
OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEi
PgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0
cyBhbmNlc3RvciB3aXRoIG9wYWNpdHkuCisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBo
ZWlnaHQ6IDE1MHB4OyB0b3A6IDQwMHB4OyBsZWZ0OiAzMDBweCI+CisgICAgPGRpYWxvZyBpZD0i
dW5jbGlwcGVkRGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBs
ZWZ0OiAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAg
ICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Ig
d2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgorICAgIDwvZGlhbG9nPgor
ICAgIDxkaWFsb2cgaWQ9ImNsaXBwZWREaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6
IGN5YW4iPgorICAgICAgICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVk
IGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgYmUgY2xpcHBlZC4KKyAg
ICA8L2RpYWxvZz4KKzwvZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDEwMDBweDsgbGVmdDogMTAwMHB4OyB3aWR0aDogMjBweDsiPgorICAgIDxkaWFsb2cgaWQ9ImJv
dHRvbURpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgaGVpZ2h0
OiAyNTBweDsgd2lkdGg6IDkwJTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij4KKyAgICAgICAg
VGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIG9uc2NyZWVuIHdpdGggYSB3aWR0aCBvZiA5MCUg
b2YgdGhlIHBhZ2UuIEl0IGlzIHRoZSBjaGlsZCBvZiBhbiBuYXJyb3cgZWxlbWVudAorICAgICAg
ICBwb3NpdGlvbmVkIG9mZiBzY3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBibG9jayBvZiBhIHRv
cCBsYXllciBlbGVtZW50IGlzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2ssIHNvIGl0cwor
ICAgICAgICBwb3NpdGlvbiBhbmQgcGVyY2VudCBsZW5ndGhzIGFyZSByZWxhdGl2ZSB0byB0aGF0
LgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JvdHRvbURpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3VuY2xpcHBlZERpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J29wYXF1ZURpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ns
aXBwZWREaWFsb2cnKS5zaG93KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNsdWNl
bnREaWFsb2cnKS5zaG93KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1kaXNw
bGF5LW5vbmUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YzNmMzE3NDc1YjNhNjdiOTE3NDAwZDI1ZTMyN2MxZTRlNmNjNjgxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRpc3Bs
YXktbm9uZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDogMTUw
cHg7CisgICAgd2lkdGg6IDE1MHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0
OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAg
ICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNr
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IGEgdG9wIGxh
eWVyIGVsZW1lbnQgaXMgbm90IHJlbmRlcmVkIGlmIGl0LCBvciBhbiBhbmNlc3RvciwgaGFzIGRp
c3BsYXk6IG5vbmUuCitJdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBzdGFj
a2VkIG9uIHRvcCBvZiBhIGJsdWUgcmVjdGFuZ2xlLCBhbmQgc2VlIG5vIHJlZCByZWN0YW5nbGVz
LgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDUwcHg7IGJhY2tncm91
bmQtY29sb3I6IGJsdWUiPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0i
dG9wOiAxMDBweDsgbGVmdDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRpc3BsYXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRpc3BsYXktbm9uZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE0Mzk4YTllOWJkMDFhMGVjY2Y2Y2I1YzNlMzMxNTE2YzRmOTM1ODEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5
ZXItZGlzcGxheS1ub25lLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0Pgor
PHN0eWxlPgorZGlhbG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsK
K30KKworLmhpZGRlbiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHRvcDogMjAw
cHg7Cit9CisKKyNib3R0b21EaWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cisg
ICAgdG9wOiA1MHB4OworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0b3BEaWFsb2cgeworICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIHRvcDogMTAwcHg7CisgICAgbGVmdDogNTBw
eDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBhIHRvcCBs
YXllciBlbGVtZW50IGlzIG5vdCByZW5kZXJlZCBpZiBpdCwgb3IgYW4gYW5jZXN0b3IsIGhhcyBk
aXNwbGF5OiBub25lLgorSXQgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgc3Rh
Y2tlZCBvbiB0b3Agb2YgYSBibHVlIHJlY3RhbmdsZSwgYW5kIHNlZSBubyByZWQgcmVjdGFuZ2xl
cy4KKworPGRpYWxvZyBpZD0iaGlkZGVuRGlhbG9nIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0iZGlz
cGxheTogbm9uZTsiPjwvZGlhbG9nPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2Pgor
ICAgICAgICA8ZGlhbG9nIGlkPSJkaXNwbGF5Tm9uZUNoaWxkMSIgY2xhc3M9ImhpZGRlbiI+PC9k
aWFsb2c+CisgICAgICAgIDxkaWFsb2cgaWQ9ImRpc3BsYXlOb25lQ2hpbGQyIiBjbGFzcz0iaGlk
ZGVuIj48L2RpYWxvZz4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpYWxvZyBpZD0iYm90dG9tRGlh
bG9nIj48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9InRvcERpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0
PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpYWxvZycpLnNob3dNb2RhbCgpOwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpc3BsYXlOb25lQ2hpbGQxJykuc2hvd01vZGFsKCk7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5Tm9uZUNoaWxkMicpLnNob3dN
b2RhbCgpOworCisvLyBUZXN0IHRoYXQgc3RhY2tpbmcgd29ya3MgZXZlbiBpZiBhbiBlbGVtZW50
IGlzIGFkZGVkIHRvIHRoZSB0b3AgbGF5ZXIgd2hlbiBpdCBoYXMgbm8gcmVuZGVyZXIuCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndG9wRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0aW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNmQ5MmZjOGE5OWE2YTUzODBlYzNmMDczY2VmY2FjMTA0
NDNmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cg
eworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAg
Ym9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7
CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0
ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUgc3RhY2tlZCBjb3JyZWN0bHkgZXZlbiBp
ZiBuZXN0ZWQgaW4gdGhlIERPTSB0cmVlLgorVGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgbm8g
cmVkIHJlY3RhbmdsZXMgYW5kIHNlZSAzIHJlY3RhbmdsZXMgc3RhY2tlZCBpbiB0aGUgZm9sbG93
aW5nIG9yZGVyIChmcm9tIGJvdHRvbSB0byB0b3ApOiB5ZWxsb3csIGJsdWUsIGdyZWVuLgorCis8
ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiB5ZWxsb3ciPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9w
OiAxNTBweDsgbGVmdDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZSI+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDIwMHB4OyBsZWZ0OiAxMDBweDsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLW5lc3Rp
bmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1uZXN0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ5ZDAzYWJhZDBhYzJkNTZkZTMxMjA2YzNiNTkw
ZDQxYmM5M2IyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0aW5nLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVl
KTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAg
IHdpZHRoOiAxNTBweDsKK30KKworI2JvdHRvbURpYWxvZyB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OworICAgIHRvcDogMTAwcHg7CisgICAgei1pbmRleDogMTAwMDsKK30KKworI21p
ZGRsZURpYWxvZyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB0b3A6IDE1MHB4
OworICAgIGxlZnQ6IDUwcHg7CisgICAgei1pbmRleDogLTUwMDsKK30KKworI3RvcERpYWxvZyB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgdG9wOiAyMDBweDsKKyAgICBsZWZ0
OiAxMDBweDsKKyAgICB6LWluZGV4OiAtMTAwMDsKK30KKworaGlkZGVuIHsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CisgICAgdG9wOiAyNTBweDsKKyAgICBsZWZ0OiAwcHg7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIHRoYXQgdG9wIGxheWVyIGVsZW1lbnRz
IGFyZSBzdGFja2VkIGNvcnJlY3RseSBldmVuIGlmIG5lc3RlZCBpbiB0aGUgRE9NIHRyZWUuCitU
aGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBubyByZWQgcmVjdGFuZ2xlcyBhbmQgc2VlIDMgcmVj
dGFuZ2xlcyBzdGFja2VkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXIgKGZyb20gYm90dG9tIHRvIHRv
cCk6IHllbGxvdywgYmx1ZSwgZ3JlZW4uCisKKzxkaWFsb2cgaWQ9InRvcERpYWxvZyI+CisgICAg
PGRpYWxvZyBpZD0ibWlkZGxlRGlhbG9nIj4KKyAgICAgICAgPGRpYWxvZyBpZD0iYm90dG9tRGlh
bG9nIj4KKyAgICAgICAgICAgIDxkaWFsb2cgaWQ9ImhpZGRlbkRpYWxvZyIgY2xhc3M9ImhpZGRl
biI+CisgICAgICAgICAgICAgICAgPGRpYWxvZyBpZD0iaGlkZGVuRGlhbG9nQ2hpbGQiIGNsYXNz
PSJoaWRkZW4iPjwvZGlhbG9nPgorICAgICAgICAgICAgPC9kaWFsb2c+CisgICAgICAgIDwvZGlh
bG9nPgorICAgIDwvZGlhbG9nPgorPC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2hpZGRlbkRpYWxvZ0NoaWxkJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaGlkZGVuRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbWlkZGxlRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndG9wRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlk
ZGVuRGlhbG9nJykuY2xvc2UoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0
YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWQ5ZWNhOWRjODUwMmI1NmJiZDdjMWU1NTcyMDdhNTM5NDM3MDVmMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLnBzZXVkb2RpYWxvZyB7Cisg
ICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3Jk
ZXI6IHNvbGlkOworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAg
ICBjb2xvcjogYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3Rz
IHRvcCBsYXllciBlbGVtZW50IHN0YWNraW5nIG9yZGVyIGFmdGVyIGR5bmFtaWNhbGx5IGNhbGxp
bmcgc2hvdy9jbG9zZSBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBET00gdHJlZS4KK1RoZSB0ZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIHN0YWNrZWQgb24gdG9wIG9mIGEgYmx1
ZSByZWN0YW5nbGUsIGFuZCBzZWUgbm8gcmVkIHJlY3RhbmdsZXMuCisKKzxkaXYgY2xhc3M9InBz
ZXVkb2RpYWxvZyIgc3R5bGU9InRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZSI+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDEwMHB4OyBsZWZ0OiA1
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5
ZXItc3RhY2tpbmctZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzM0
MDdkMWU0NTJkYTc5N2RhZmYyMjAzMzViNGMwM2ExNDI3ZjYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5n
LWR5bmFtaWMuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CitkaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworfQorCisu
aGlkZGVuIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgdG9wOiAyMDBweDsKK30K
KworI2JvdHRvbURpYWxvZyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB0b3A6
IDUwcHg7Cit9CisKKyN0b3BEaWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwor
ICAgIHRvcDogMTAwcHg7CisgICAgbGVmdDogNTBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KK1RoaXMgdGVzdHMgdG9wIGxheWVyIGVsZW1lbnQgc3RhY2tpbmcgb3JkZXIgYWZ0ZXIg
ZHluYW1pY2FsbHkgY2FsbGluZyBzaG93L2Nsb3NlIGFuZCByZW1vdmFsIGZyb20gdGhlIERPTSB0
cmVlLgorVGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgc3RhY2tl
ZCBvbiB0b3Agb2YgYSBibHVlIHJlY3RhbmdsZSwgYW5kIHNlZSBubyByZWQgcmVjdGFuZ2xlcy4K
KworPGRpYWxvZyBpZD0idG9wRGlhbG9nIj48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9ImJvdHRvbURp
YWxvZyI+PC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJyZW1vdmVkRGlhbG9nIiBjbGFzcz0iaGlkZGVu
Ij4KKyAgICA8ZGlhbG9nIGlkPSJyZW1vdmVkRGlhbG9nQ2hpbGQiIGNsYXNzPSJoaWRkZW4iPjwv
ZGlhbG9nPgorPC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rv
cERpYWxvZycpLnNob3dNb2RhbCgpOwordmFyIHJlbW92ZWREaWFsb2cgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVtb3ZlZERpYWxvZycpOworcmVtb3ZlZERpYWxvZy5zaG93TW9kYWwoKTsK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3R0b21EaWFsb2cnKS5zaG93TW9kYWwoKTsKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZW1vdmVkRGlhbG9nQ2hpbGQnKS5zaG93TW9kYWwoKTsK
K3JlbW92ZWREaWFsb2cucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyZW1vdmVkRGlhbG9nKTsKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3BEaWFsb2cnKS5jbG9zZSgpOworZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RvcERpYWxvZycpLnNob3dNb2RhbCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0NDlhYzRmNGNjNmI2ZDIxNmIwY2RiZjE4NWVhMTgwZWQ2MjM0MmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3At
bGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPHN0eWxlPgorLmJveCB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3
aWR0aDogMTUwcHg7Cit9CisuY29udGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1
MDBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBtYWdlbnRhOworfQorLnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90
YXRlWSg0NWRlZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKy5wc2V1ZG9kaWFs
b2cgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAg
ICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07Cisg
ICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzxi
b2R5PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0
b3A6IDEwcHg7IHotaW5kZXg6MzAwMCI+CisgICAgVGhpcyB3aGl0ZSBib3ggaXMgdGhlIHRvcG1v
c3QgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgb24gdG9wIG9mIGV2ZXJ5dGhpbmcuCis8L2Rp
dj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7
IGJhY2tncm91bmQtY29sb3I6IHJlZDsgbGVmdDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7
Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDc1JTsgaGVp
Z2h0OiA0MDBweDsgei1pbmRleDoyMDAwIj4KKyAgICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEg
bW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgcmVuZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVs
bG93IHJlZ2lvbnMuCisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGJveCI+CisgICAgICAgIDxk
aXYgY2xhc3M9InRyYW5zZm9ybWVkIGJveCI+QSB0cmFuc2Zvcm0gd2l0aGluIHRoZSBkaWFsb2cn
cyBzdWJ0cmVlLjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjMwMHB4OyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kLWNv
bG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBzaG93cyB6LWluZGV4IHN0YWNraW5nIHdpdGhpbiB0
aGUgZGlhbG9nJ3Mgc3VidHJlZS4gVGhlIGN5YW4gYm94IHNob3VsZCBiZSBvbiB0b3Agb2YgdGhl
IG1hZ2VudGEgb25lLgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjM1MHB4OyBsZWZ0OjUwcHg7IHotaW5kZXg6IDE7IGJhY2tn
cm91bmQtY29sb3I6IG1hZ2VudGEiPjwvZGl2PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBm
aXhlZDsgdG9wOiA5MHB4OyBsZWZ0OiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+VGhp
cyBpcyBwYXJ0IG9mIHRoZSBncmVlbiBkaWFsb2cuPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBo
ZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IHotaW5kZXg6MTAwMCI+Cis8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTg3NmM5MmQ1YmViYTk5OWRjODAyODc4NWU4MjQxNWUwOTBmYjUyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1zdGFja2luZy5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBU
aGlzIHRlc3RzIHRoYXQgdG9wIGxheWVyIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBhYm92ZSB6LWlu
ZGV4ZWQgZWxlbWVudHMKK2FuZCBzdGFja2VkIGluIHRoZSBjb3JyZWN0IG9yZGVyIGFtb25nc3Qg
dGhlbXNlbHZlcy4gQWxzbywgbGF5ZXIgZmVhdHVyZXMgbGlrZQordHJhbnNmb3JtcyBhbmQgei1p
bmRleCBhcmUgdGVzdGVkIGluc2lkZSBhIHRvcCBsYXllciBlbGVtZW50IHN1YnRyZWUuIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4K
KzxzdHlsZT4KKy5ib3ggeworICAgIGhlaWdodDoxNTBweDsKKyAgICB3aWR0aDoxNTBweDsKK30K
Ky5jb250YWluZXIgeworICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDUwMHB4OworICAgIGJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOworICAgIGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGE7Cit9Cisu
dHJhbnNmb3JtZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDQ1ZGVnKTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpYWxvZyBpZD0iaGlkZGVuRGlhbG9nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29sb3I6IHJl
ZCI+VGhpcyBzaG91bGQgbm90IGJlIGRpc3BsYXllZC48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9InRv
cERpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OiAtMTA7
Ij4KKyAgICBUaGlzIHdoaXRlIGJveCBpcyB0aGUgdG9wbW9zdCBtb2RhbCBkaWFsb2cuIEl0IHNo
b3VsZCBiZSBvbiB0b3Agb2YgZXZlcnl0aGluZy4KKzwvZGlhbG9nPgorPGRpdiBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgei1pbmRleDogMzsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyBsZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAyMDBweDsiPgorICAgIDxkaWFsb2cgaWQ9
ImJvdHRvbURpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDc1JTsgaGVpZ2h0OiA0MDBweDsiPgorICAgICAg
ICBUaGlzIGdyZWVuIGJveCBpcyBhbHNvIGEgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQgYmUgcmVu
ZGVyZWQgYWJvdmUgdGhlIHJlZCBhbmQgeWVsbG93IHJlZ2lvbnMuCisgICAgICAgIDxkaXYgY2xh
c3M9ImNvbnRhaW5lciBib3giPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmb3JtZWQg
Ym94Ij5BIHRyYW5zZm9ybSB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuPC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDozMDBweDsgei1pbmRleDogMjsgYmFja2dyb3VuZC1jb2xvcjogY3lhbiI+Cisg
ICAgICAgICAgICBUaGlzIHNob3dzIHotaW5kZXggc3RhY2tpbmcgd2l0aGluIHRoZSBkaWFsb2cn
cyBzdWJ0cmVlLiBUaGUgY3lhbiBib3ggc2hvdWxkIGJlIG9uIHRvcCBvZiB0aGUgbWFnZW50YSBv
bmUuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVmdDo1MHB4OyB6LWluZGV4OiAxOyBiYWNrZ3Jv
dW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IGZpeGVkOyB0b3A6IDkwcHg7IGxlZnQ6IDMwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj5U
aGlzIGlzIHBhcnQgb2YgdGhlIGdyZWVuIGRpYWxvZy48L2Rpdj4KKyAgICA8L2RpYWxvZz4KKzwv
ZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAw
cHg7IHJpZ2h0OiAwcHg7IGhlaWdodDogMjAwZW07IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsg
ei1pbmRleDoxMDAwIj4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdib3R0b21EaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
b3BEaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRkZW5E
aWFsb2cnKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174612</attachid>
            <date>2012-11-15 23:31:14 -0800</date>
            <delta_ts>2021-07-06 03:30:13 -0700</delta_ts>
            <desc>sync</desc>
            <filename>bug-84796-20121116162910.patch</filename>
            <type>text/plain</type>
            <size>38064</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVkMzVlZmQ1MWRmZTdj
OWU3NGE0OGNmMWVhYWIzNTFlZTc0M2Q2ZC4uY2MxN2Q2MzYwMTM2MDFlY2EzNjhiNTQzYTkzNTBm
YTVkZDFiYzc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTE1ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBE
b2N1bWVudC4gVGhlIEZ1bGxzY3JlZW4KKyAgICAgICAgc3BlY2lmaWNhdGlvbiBtYW5kYXRlcyB0
aGF0IHdlIHRyYWNrIHRoZSBvcmRlcmluZyBvZiB0aGUgRE9NIG5vZGVzIGluCisgICAgICAgIHRo
ZSB0b3AgbGF5ZXIsIG5vdCB0aGUgcmVuZGVyZXJzLiBUaGF0IG1ha2VzIGl0IGhhcmQgdG8gaW1w
bGVtZW50IG9uCisgICAgICAgIHRoZSByZW5kZXJpbmcgc2lkZSBvbmx5LgorCisgICAgICAgIEVs
ZW1lbnRzIGluIHRoZSB0b3AgbGF5ZXIgZ2V0IGEgbGF5ZXIuIExheWVycyBpbiB0aGUgdG9wIGxh
eWVyIGFyZQorICAgICAgICBhZGRlZCB0byB0aGUgcm9vdCBsYXllcidzIGNoaWxkIGxpc3QgYWZ0
ZXIgbm9ybWFsIGxheWVycyBhbmQgaW4gdGhlCisgICAgICAgIG9yZGVyIG9mIHRoZSB0b3AgbGF5
ZXIgc3RhY2suIFRoaXMgd2F5LCB0aGUgdG9wIGxheWVyIGFwcGVhcnMgYWJvdmUKKyAgICAgICAg
YWxsIG90aGVyIHN0YWNraW5nIGNvbnRleHRzIGFuZCBpbiB0aGUgZGVzaXJlZCBvcmRlci4KKwor
ICAgICAgICBJbiBhZGRpdGlvbiwgdG9wIGxheWVyIHJlbmRlcmVycyBhcmUgYWRkZWQgYXMgY2hp
bGRyZW4gb2YgUmVuZGVyVmlldworICAgICAgICBpbiB0b3AgbGF5ZXIgb3JkZXIuIFRoaXMgaXMg
dG8gc2F0aXNmeSByZXF1aXJlbWVudHMgc3VjaCBhcyB0aGUKKyAgICAgICAgY29udGFpbmluZyBi
bG9jayBvZiBhbiBlbGVtZW50IGluIHRoZSB0b3AgbGF5ZXIgaXMgdGhlIGluaXRpYWwKKyAgICAg
ICAgY29udGFpbmluZyBibG9jay4gSXQgYWxzbyBhbGxvd3MgUmVuZGVyTGF5ZXIgdG8ga25vdyB0
aGUgcHJvcGVyCisgICAgICAgIHN0YWNraW5nIG9yZGVyIG9mIHRoZSBsYXllcnMgd2l0aG91dCBn
b2luZyBkaXJlY3RseSBmcm9tIHRoZSB0b3AgbGF5ZXIKKyAgICAgICAgZWxlbWVudHMgdG8gdGhl
aXIgbGF5ZXJzLgorCisgICAgICAgIFNvIGZhciwgb25seSBtb2RhbCBkaWFsb2cgZWxlbWVudHMg
Y2FuIGJlIGFkZGVkIHRvIHRoZSB0b3AgbGF5ZXIuCisgICAgICAgIFRoZSBwbGFuIGlzIHRvIG1h
a2UgdGhlIEZ1bGxzY3JlZW4gQVBJIGFsc28gdXNlIHRoZSB0b3AgbGF5ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJs
b2NrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1kaXNwbGF5LW5vbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0
eWxlKTogRWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBoYXZlIGEgc3RhY2tpbmcgY29udGV4dC4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BMYXll
ckVsZW1lbnRzKTogQWRkIHRoZSB0b3AgbGF5ZXIgZWxlbWVudCBzdGFjayB0byBEb2N1bWVudC4K
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmlzSW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0luVG9w
TGF5ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRS
YXJlRGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBBZGQgYW4gZXhjZXB0aW9u
IHRvIHRoZSBhc3NlcnQgc2luY2UgdG9wIGxheWVyIGVsZW1lbnRzIGFuZCB0aGVpciBkZXNjZW5k
YW50cyBhcmUgbW92ZWQgZnJvbSB0aGVpcgorICAgICAgICByZWd1bGFyIHBvc2l0aW9uIGluIHRo
ZSByZW5kZXIgdHJlZS4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChOb2RlUmFyZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXIpOgorICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVk
ZWQpOiBBZGQgcmVuZGVyZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYXMgY2hpbGRyZW4gb2Yg
UmVuZGVyVmlldywgYW5kCisgICAgICAgIGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAg
ICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEaWFsb2dFbGVtZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGlhbG9nRWxl
bWVudDo6c2hvd01vZGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNJblRv
cExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0luVG9wTGF5ZXJTdWJ0
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMp
OiBBZGQgdGhlIHRvcCBsYXllciBzdGFjayBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKTogQXZvaWQgYWRk
aW5nIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGR1cmluZyBub3JtYWwgbGF5ZXIgY29s
bGVjdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJl
bmRlckxheWVyKToKKwogMjAxMi0xMS0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDY0OSBh
bmQgcjEzNDY2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmFjNmFhYTMyOGI3YWU2MGVhOGVk
ZWFlZGQzMGQ1ODZiODFjYTcxYy4uMjYxMzg0MjlhZWI2YzgxZDM4NDhlMDI5YWQxZjIwYTMwY2Yx
NWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIyNTIsNiArMjI1MiwxMCBAQCBfX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTZhbm5vdGF0ZWRSZWdpb25zRXYKIF9fWk43V2ViQ29yZThTZXR0aW5n
czQxc2V0VXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGVFYgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjEy
aXNJblRvcExheWVyRXYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIF9fWk43
V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdkcmFnU291cmNlRW5kZWRBdEVSS05TXzE4UGxhdGZvcm1N
b3VzZUV2ZW50RU5TXzEzRHJhZ09wZXJhdGlvbkUKIF9fWk5LN1dlYkNvcmUxMkV2ZW50SGFuZGxl
cjE3ZXZlbnRNYXlTdGFydERyYWdFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBjZWIyZWI4MTI1NTZlZGNiZDNhNDg1ZTU0NWRj
MmY2NDBmZWU0MmJlLi4zOGE4ZmFlZDcwZjYxZWNiZjQ1YWQwZGRlYmMzZmMzMDM5N2UyNmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTc4LDYgKzE5NzgsOSBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eQogICAgICAgICAvLyBUb3VjaCBvdmVyZmxvdyBzY3JvbGxp
bmcgY3JlYXRlcyBhIHN0YWNraW5nIGNvbnRleHQuCiAgICAgICAgIHx8ICgoc3R5bGUtPm92ZXJm
bG93WCgpICE9IE9ISURERU4gfHwgc3R5bGUtPm92ZXJmbG93WSgpICE9IE9ISURERU4pICYmIHN0
eWxlLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoRElB
TE9HX0VMRU1FTlQpCisgICAgICAgIHx8IChlICYmIGUtPmlzSW5Ub3BMYXllcigpKQorI2VuZGlm
CiAgICAgICAgICkpCiAgICAgICAgIHN0eWxlLT5zZXRaSW5kZXgoMCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDdlYzNkNTcxMjJlMjYxMDMzNDA4YzM0MDRlMmM3NzI5NzFhMDA0YzAu
LmU0NjhhMGU1YzE5NGZhYTZhMjczMWQxMjFjMjgyOTEzY2NjODVkMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNTQ5OSw2ICs1NDk5LDIxIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZERvY3Vt
ZW50VG9GdWxsU2NyZWVuQ2hhbmdlRXZlbnRRdWV1ZShEb2N1bWVudCogZG9jKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCit2b2lkIERvY3VtZW50OjphZGRUb1RvcExh
eWVyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKCFtX3RvcExheWVyRWxlbWVudHMu
Y29udGFpbnMoZWxlbWVudCkpOworICAgIG1fdG9wTGF5ZXJFbGVtZW50cy5hcHBlbmQoZWxlbWVu
dCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUZyb21Ub3BMYXllcihFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIHNpemVfdCBwb3NpdGlvbiA9IG1fdG9wTGF5ZXJFbGVtZW50cy5maW5kKGVs
ZW1lbnQpOworICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CisgICAgbV90b3BMYXll
ckVsZW1lbnRzLnJlbW92ZShwb3NpdGlvbik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0UG9pbnRlckxvY2soKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA5MmEzMmNiYjMzYzA2MDRjYTIwMjRmMTYzZTkzZGVjMWUxMzYz
ZDk5Li4wYzEyZmE0ODIyOGI4YjIxYjk0NmE1NDM3NzZkMzI3N2JjMTEyMzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTE2OCw2ICsxMTY4LDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4g
YSBMb2NhbGUgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbCBv
ciBlbXB0eS4KICAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSA9IG51bGxBdG9tKTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB2
b2lkIGFkZFRvVG9wTGF5ZXIoRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlRnJvbVRvcExheWVy
KEVsZW1lbnQqKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVy
RWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX3RvcExheWVyRWxlbWVudHM7IH0KKyNlbmRpZgor
CiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hI
VE1MLCBib29sIGlzSFRNTCk7CiAKQEAgLTE0NjgsNiArMTQ3NCwxMCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1l
bnQ+ID4gbV90b3BMYXllckVsZW1lbnRzOworI2VuZGlmCisKICAgICBpbnQgbV9sb2FkRXZlbnRE
ZWxheUNvdW50OwogICAgIFRpbWVyPERvY3VtZW50PiBtX2xvYWRFdmVudERlbGF5VGltZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwNjYwMzE2NDk5MGQ0NTNjMjMxYTlkY2QyZjU1MWNk
Yzg3NmI2NzQzLi44MjA4OTVlNDdkZWQzMDM2YTJlYmQ1YmIzNDU0MGM3OWIxZGRmNDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDY0LDYgKzEwNjQsOSBAQCBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBp
bnNlcnRpbwogCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogeworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBzZXRJc0luVG9w
TGF5ZXIoZmFsc2UpOworI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlm
IChjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkpCiAgICAgICAgIHNldENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGZhbHNlKTsKQEAg
LTIwOTAsNiArMjA5MywzNCBAQCB2b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogfQogI2VuZGlmICAg
IAogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorYm9vbCBFbGVtZW50Ojppc0luVG9wTGF5
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0
YSgpLT5pc0luVG9wTGF5ZXIoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRJc0luVG9wTGF5ZXIo
Ym9vbCBpblRvcExheWVyKQoreworICAgIC8vIFRvIGF2b2lkIGFuIGV4dHJhIGNhbGwgdG8gZWxl
bWVudFJhcmVEYXRhKCksIGRvbid0IHVzZSBFbGVtZW50Ojppc0luVG9wTGF5ZXIoKS4KKyAgICBF
bGVtZW50UmFyZURhdGEqIHJhcmVEYXRhID0gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0
YSgpIDogMDsKKyAgICBpZiAocmFyZURhdGEpIHsKKyAgICAgICAgaWYgKHJhcmVEYXRhLT5pc0lu
VG9wTGF5ZXIoKSA9PSBpblRvcExheWVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmICghaW5Ub3BMYXllcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKKyAgICB9CisgICAgcmFyZURh
dGEtPnNldElzSW5Ub3BMYXllcihpblRvcExheWVyKTsKKworICAgIGlmIChpblRvcExheWVyKQor
ICAgICAgICBkb2N1bWVudCgpLT5hZGRUb1RvcExheWVyKHRoaXMpOworICAgIGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQoKS0+cmVtb3ZlRnJvbVRvcExheWVyKHRoaXMpOworICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogdm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZjg3NGU0YjM4NWNhNzlkOTgwNWZhMzgzOTk4NWJkZGM5
NmZmZGMyYS4uZTZjMGIzMDY4ZjZkOTRkOWYxOTUwN2RjMzBiMjc3ZWM4YWYxN2M0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC00MTMsNiArNDEzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldElzSW5Ub3BMYXllcihib29sKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggYWYxMzVmMDliYzM2MzU5MGM3MmUwNGVi
ZjkyOGY1ZDNlYzA4MjFhZi4uMjMzODRhOWNkNjhkNjUyNjFhNGNkMjU2NmYxNjZkODkwYmE5MmY1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNTMsNiArNTMsMTAgQEAg
cHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgdXNpbmcgTm9kZVJhcmVE
YXRhOjppc0luVG9wTGF5ZXI7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5
ZXI7CisjZW5kaWYKIAogICAgIGJvb2wgaGFzQ2FjaGVkSFRNTENvbGxlY3Rpb25zKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYmQ4ODdlOTRjYjBkYzA5MDJhY2U1ZjAzZDJkMDhh
Zjg3MjhjY2E4ZC4uNGZmNjk5MDVlYWUwMDFlZjFlMjc2NWI3NTU5MTE0NTJhZTA1ZGJmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMTEyLDYgKzExMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZm5kZWYg
TkRFQlVHCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQogI2luY2x1ZGUgIkdlc3R1cmVFdmVudC5oIgogI2VuZGlmCkBAIC0xMzA2
LDkgKzEzMTAsMTMgQEAgdm9pZCBOb2RlOjpkZXRhY2goKQogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dE5vZGUodGhpcykpIHsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgLy8gUmVuZGVyRmxvd1RocmVhZCByZW1vdmVzIHNv
bWUgZWxlbWVudHMgZnJvbSB0aGUgcmVndWxhciB0cmVlCisgICAgICAgICAgICAvLyBSZW5kZXJG
bG93VGhyZWFkIGFuZCB0aGUgdG9wIGxheWVyIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1
bGFyIHRyZWUKICAgICAgICAgICAgIC8vIGhpZXJhcmNoeS4gVGhleSB3aWxsIGJlIGNsZWFuZWQg
dXAgd2hlbiB3ZSBjYWxsIGRldGFjaCBvbiB0aGVtLgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKKyAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmluUmVuZGVyRmxv
d1RocmVhZCgpIHx8IChyZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKS0+aXNJblRvcExheWVyU3Vi
dHJlZSgpKSk7CisjZWxzZQogICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCByZW5kZXJl
ci0+aW5SZW5kZXJGbG93VGhyZWFkKCkpOworI2VuZGlmCiAgICAgICAgIH0KICNlbmRpZgogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBjNTZkMDZmOGE4YjA4NjdkYWNkOGNj
ZDNmNzk2ZDcxODY0YzU2Mjc5Li5iMDI1MGY2MDQzMTRiNzUyNDk5OTBjMGY2NWQyNGJkOWVkNWE5
OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgLCBtX2NvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQp
CisgICAgICAgICwgbV9pc0luVG9wTGF5ZXIoZmFsc2UpCisjZW5kaWYKICAgICB7CiAgICAgfQog
CkBAIC0zMTEsNiArMzE0LDEwIEBAIHByb3RlY3RlZDoKICAgICBib29sIGNvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAg
ICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQorICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
VG9wTGF5ZXI7IH0KKyAgICB2b2lkIHNldElzSW5Ub3BMYXllcihib29sIHZhbHVlKSB7IG1faXNJ
blRvcExheWVyID0gdmFsdWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFRyZWVTY29wZSog
bV90cmVlU2NvcGU7CkBAIC0zMjUsNiArMzMyLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgOiAxOwog
I2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGJvb2wgbV9pc0luVG9wTGF5
ZXIgOiAxOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIE93
blB0cjxWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4gPiBtX211
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDIxZjFjM2Y4OTlmYjA5M2ZiZmZiODI0NjFhYzFlMGM1YjUzYTgx
OWQuLmI5MWM4YmZmMmFjMmVlYTg5MjRlOTJiODMzOWEyM2E0Yjg2ZWJkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjIwLDYgKzIyMCwyNiBA
QCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVyKCkKICAg
ICByZXR1cm4gbmV3UmVuZGVyZXI7CiB9CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitz
dGF0aWMgdm9pZCBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudChFbGVtZW50
KiBlbGVtZW50LCBSZW5kZXJPYmplY3QqJiBwYXJlbnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiYg
bmV4dFJlbmRlcmVyKQoreworICAgIHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnZp
ZXcoKTsKKyAgICBuZXh0UmVuZGVyZXIgPSAwOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnRvcExheWVy
RWxlbWVudHMoKTsKKyAgICBzaXplX3QgdG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVu
dHMuZmluZChlbGVtZW50KTsKKyAgICBBU1NFUlQodG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3Vu
ZCk7CisgICAgLy8gRmluZCB0aGUgbmV4dCB0b3AgbGF5ZXIgcmVuZGVyZXIgdGhhdCdzIHN0YWNr
ZWQgYWJvdmUgdGhpcyBlbGVtZW50LiBOb3RlIHRoYXQgdGhlIGltbWVkaWF0ZSBuZXh0IGVsZW1l
bnQgaW4gdGhlIHRvcCBsYXllcgorICAgIC8vIHN0YWNrIG1pZ2h0IG5vdCBoYXZlIGEgcmVuZGVy
ZXIgKGR1ZSB0byBkaXNwbGF5OiBub25lLCBvciBwb3NzaWJseSBpdCBpcyBub3QgYXR0YWNoZWQg
eWV0KS4KKyAgICBmb3IgKHNpemVfdCBpID0gdG9wTGF5ZXJQb3NpdGlvbiArIDE7IGkgPCB0b3BM
YXllckVsZW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIG5leHRSZW5kZXJlciA9IHRvcExh
eWVyRWxlbWVudHNbaV0tPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChuZXh0UmVuZGVyZXIpIHsK
KyAgICAgICAgICAgIEFTU0VSVChuZXh0UmVuZGVyZXItPnBhcmVudCgpID09IHBhcmVudFJlbmRl
cmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisK
IHZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiB7CiAg
ICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7CkBAIC0yNDksNiArMjY5LDEyIEBAIHZv
aWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAgICAgLy8g
RG8gbm90IGNhbGwgbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUgaW4gdGhlIGZpcnN0IGNs
YXVzZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUKICAgICAvLyB0aGUgcmVuZGVyZXIgYWRk
ZWQgdG8gaXRzIHBhcmVudCBhbHJlYWR5LgogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVy
ID0gbV9jb250ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSA/IG1fY29udGV4dC5wYXJlbnRGbG93
UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9kZShub2RlKSA6IG1fY29udGV4dC5uZXh0UmVu
ZGVyZXIoKTsKKworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9pbnRG
b3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFyZW50UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7
CisjZW5kaWYKKwogICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJl
cigpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEaWFsb2dFbGVtZW50LmNwcAppbmRleCA3ZDRkNjQ1MWJlM2E5OWY2OTBkMzZlODM2ODk3MWYz
MGM1ZTljMzQ2Li4yOTUwZmJhNmIyZTVlY2Y1Y2ZhOTJmOWVlODdiM2M4MzI5MzczZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcApAQCAtNTMsNiArNTMsNyBA
QCB2b2lkIEhUTUxEaWFsb2dFbGVtZW50OjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRCb29sZWFuQXR0cmlidXRlKG9wZW5BdHRyLCBmYWxz
ZSk7CisgICAgc2V0SXNJblRvcExheWVyKGZhbHNlKTsKIH0KIAogdm9pZCBIVE1MRGlhbG9nRWxl
bWVudDo6c2hvdygpCkBAIC02OSw2ICs3MCw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OnNo
b3dNb2RhbChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBz
ZXRCb29sZWFuQXR0cmlidXRlKG9wZW5BdHRyLCB0cnVlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIo
dHJ1ZSk7CiB9CiAKIGJvb2wgSFRNTERpYWxvZ0VsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAwMmJkZTdhNjc3NWU2Yjk3OTA1NTBhYTZmYmFjZTJl
ZjhjNDg4NmQ0Li40ZDdhNDBkYjA2ZTBkOTAwNTY3MzBmMGFkNTA2MWU1Nzk3ZTIyNjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2MjEsNiArMzYyMSwy
MyBAQCBOb2RlKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIFJlbmRlckxheWVy
Ojppc0luVG9wTGF5ZXIoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlcigpLT5u
b2RlKCk7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxl
bWVudChub2RlKS0+aXNJblRvcExheWVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzSW5U
b3BMYXllclN1YnRyZWUoKSBjb25zdAoreworICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aXNJblRvcExheWVyKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIC8vIENvbXB1dGUgdGhlIHotb2Zmc2V0
IG9mIHRoZSBwb2ludCBpbiB0aGUgdHJhbnNmb3JtU3RhdGUuCiAvLyBUaGlzIGlzIGVmZmVjdGl2
ZWx5IHByb2plY3RpbmcgYSByYXkgbm9ybWFsIHRvIHRoZSBwbGFuZSBvZiBhbmNlc3RvciwgZmlu
ZGluZyB3aGVyZSB0aGF0CiAvLyByYXkgaW50ZXJzZWN0cyB0YXJnZXQsIGFuZCBjb21wdXRpbmcg
dGhlIHogZGVsdGEgYmV0d2VlbiB0aG9zZSB0d28gcG9pbnRzLgpAQCAtNDcyMyw2ICs0NzQwLDIx
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiAgICAgaWYgKG1fbmVn
Wk9yZGVyTGlzdCkKICAgICAgICAgc3RkOjpzdGFibGVfc29ydChtX25lZ1pPcmRlckxpc3QtPmJl
Z2luKCksIG1fbmVnWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwogCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorICAgIC8vIEFwcGVuZCBsYXllcnMgZm9yIHRvcCBsYXllciBl
bGVtZW50cyBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbiwgdG8gZW5zdXJlIHRoZXkgYXJl
IG9uIHRvcCByZWdhcmRsZXNzIG9mIHotaW5kZXhlcy4KKyAgICAvLyBUaGUgcmVuZGVyZXJzIG9m
IHRvcCBsYXllciBlbGVtZW50cyBhcmUgY2hpbGRyZW4gb2YgdGhlIHZpZXcsIHNvcnRlZCBpbiB0
b3AgbGF5ZXIgc3RhY2tpbmcgb3JkZXIuCisgICAgaWYgKGlzUm9vdExheWVyKCkpIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOworICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogY2hpbGQgPSB2aWV3LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1l
bnQgPSBjaGlsZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5v
ZGUoKSkgOiAwOworICAgICAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQt
PmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
dG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGNoaWxkKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAg
ICBtX3Bvc1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKwogICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9IGZhbHNlOwogfQog
CkBAIC00NzQ3LDYgKzQ3NzksMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxv
d0xpc3QoKQogCiB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhp
ZGRlbkxheWVycywgVmVjdG9yPFJlbmRlckxheWVyKj4qJiBwb3NCdWZmZXIsIFZlY3RvcjxSZW5k
ZXJMYXllcio+KiYgbmVnQnVmZmVyKQogeworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAg
ICBpZiAoaXNJblRvcExheWVyKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgdXBk
YXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CiAKICAgICAvLyBPdmVyZmxvdyBsYXllcnMg
YXJlIGp1c3QgcGFpbnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0
IGdldCBwdXQgaW4gem9yZGVyIGxpc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAppbmRleCA2YTZhZjQ5OWFhM2JhZmM4YWNiZmI4YzM2OGVmZjhjMjM0YTE2OGJjLi42Yzhh
OGIxZmE2YmUxYzE5ZDZmODdmZDQ1ZGM3YjhkMmMwNGVkNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjkxLDYgKzY5MSwxMSBAQCBwdWJsaWM6CiAKICAgICBO
b2RlKiBlbmNsb3NpbmdFbGVtZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1F
TlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGlzSW5Ub3BMYXll
clN1YnRyZWUoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlWk9y
ZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk2NmM5
ODYwOWFlNzRkYWQyZGFiYmUxOGVmZjc3OGUyMjI5MWY1ZmUuLjViZmNkOTkxMmRlMjg3NjQ3Y2Fh
ZWRlOTY2ZTE2YTc5YWI0OWI2MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0xNSAg
TWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBuZXcgc3RhY2tpbmcgbGF5ZXIgbmVlZGVkIGJ5IHRoZSBGdWxsc2NyZWVuIEFQSSBh
bmQgdGhlIG5ldyA8ZGlhbG9nPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgdG9wIGxheWVyIHN0YWNraW5nIGFuZCBy
ZW5kZXJpbmcuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5
ZXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItZGlz
cGxheS1ub25lLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmctZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLW5lc3RpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0Vs
ZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5
bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sOiBBZGRlZC4KKwog
MjAxMi0xMS0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDY0OSBhbmQgcjEzNDY2NS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQwMDdjNTk4Yjg4YmQwMTM2NTZhZTZiNTg4YmE5ZDNiMTI3NGQyZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90
b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cis8L3NjcmlwdD4KKzxz
dHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0
OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAg
ICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNr
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+CitUaGlzIHRlc3RzIHRoYXQgYSB0
b3AgbGF5ZXIgZWxlbWVudCdzIGNvbnRhaW5pbmcgYmxvY2sgaXMgaW4gdGhlIGluaXRpYWwgY29u
dGFpbmluZyBibG9jayBhbmQgdGhhdCBpdCBpcyB1bmFmZmVjdGVkIGJ5CithbmNlc3RvciBlbGVt
ZW50cyB3aXRoIG92ZXJmbG93IG9yIG9wYWNpdHkuICBEaWFsb2cgZWxlbWVudHMgYXJlIHVzZWQg
dG8gZGVtb25zdHJhdGUgdGhlc2UgcHJvcGVydGllcy4gQSBkaWFsb2cgb3BlbmVkCit3aXRoIHNo
b3dNb2RhbCgpIGlzIGluIHRoZSB0b3AgbGF5ZXI7IG9uZSBvcGVuZWQgd2l0aCBkaWFsb2cuc2hv
dygpIGlzIG5vdC4KKworPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDEwMHB4OyBoZWlnaHQ6IDI1MHB4OyB3aWR0aDogOTAlOyBiYWNrZ3Jv
dW5kLWNvbG9yOiB5ZWxsb3ciPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBvbnNj
cmVlbiB3aXRoIGEgd2lkdGggb2YgOTAlIG9mIHRoZSBwYWdlLiBJdCBpcyB0aGUgY2hpbGQgb2Yg
YW4gbmFycm93IGVsZW1lbnQKKyAgICBwb3NpdGlvbmVkIG9mZiBzY3JlZW4sIGJ1dCB0aGUgY29u
dGFpbmluZyBibG9jayBvZiBhIHRvcCBsYXllciBlbGVtZW50IGlzIHRoZSBpbml0aWFsIGNvbnRh
aW5pbmcgYmxvY2ssIHNvIGl0cworICAgIHBvc2l0aW9uIGFuZCBwZXJjZW50IGxlbmd0aHMgYXJl
IHJlbGF0aXZlIHRvIHRoYXQuCis8L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDogMHB4OyBoZWlnaHQ6IDEw
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxk
IG5vdCBiZSBjbGlwcGVkLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0OiAxNTBweDsgdG9wOiA0MDBw
eDsgbGVmdDogMzAwcHgiPgorICAgIDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsg
YmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBz
aG91bGQgYmUgYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3ZlcmZsb3cuIEl0IHNob3Vs
ZCBiZSBjbGlwcGVkLgorICAgIDwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFs
b2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjUwcHg7IGxlZnQ6IDBweDsgYmFj
a2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJl
IHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKzwvZGl2PgorPGRpdiBz
dHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQwMHB4OyBvcGFjaXR5OiAwLjMiPgorICAg
IDxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YSI+CisgICAgICAgIFRoaXMgbm9uLW1vZGFsIGRpYWxvZyBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkgaXRzIGFuY2VzdG9yIHdpdGggb3BhY2l0eS4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0Vs
ZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWU4ZTlkNjE5ZDA4OGE4M2NjM2NiMWQ2YzIwOTc4ZGYyYjdlZTA4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1s
YXllci1jb250YWluaW5nLWJsb2NrLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgdGVzdHMgdGhhdCBhIHRvcCBsYXllciBl
bGVtZW50J3MgY29udGFpbmluZyBibG9jayBpcyBpbiB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJs
b2NrIGFuZCB0aGF0IGl0IGlzIHVuYWZmZWN0ZWQgYnkKK2FuY2VzdG9yIGVsZW1lbnRzIHdpdGgg
b3ZlcmZsb3cgb3Igb3BhY2l0eS4gIERpYWxvZyBlbGVtZW50cyBhcmUgdXNlZCB0byBkZW1vbnN0
cmF0ZSB0aGVzZSBwcm9wZXJ0aWVzLiBBIGRpYWxvZyBvcGVuZWQKK3dpdGggc2hvd01vZGFsKCkg
aXMgaW4gdGhlIHRvcCBsYXllcjsgb25lIG9wZW5lZCB3aXRoIGRpYWxvZy5zaG93KCkgaXMgbm90
LgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDAwcHg7IG9wYWNpdHk6
IDAuMyI+CisgICAgPGRpYWxvZyBpZD0ib3BhcXVlRGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDI1MHB4OyBsZWZ0OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEi
PgorICAgICAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMg
YW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9InRy
YW5zbHVjZW50RGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVp
Z2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAg
ICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5j
ZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGlhbG9nPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiA1MDBweDsgaGVpZ2h0
OiAxNTBweDsgdG9wOiA0MDBweDsgbGVmdDogMzAwcHgiPgorICAgIDxkaWFsb2cgaWQ9InVuY2xp
cHBlZERpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyMDBweDsgbGVmdDog
MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhp
cyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgYnkgaXRzIGFuY2VzdG9yIHdpdGgg
b3ZlcmZsb3cuIEl0IHNob3VsZCBub3QgYmUgY2xpcHBlZC4KKyAgICA8L2RpYWxvZz4KKyAgICA8
ZGlhbG9nIGlkPSJjbGlwcGVkRGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjeWFu
Ij4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBp
dHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIGJlIGNsaXBwZWQuCisgICAgPC9k
aWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAw
cHg7IGxlZnQ6IDEwMDBweDsgd2lkdGg6IDIwcHg7Ij4KKyAgICA8ZGlhbG9nIGlkPSJib3R0b21E
aWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGhlaWdodDogMjUw
cHg7IHdpZHRoOiA5MCU7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyI+CisgICAgICAgIFRoaXMg
bW9kYWwgZGlhbG9nIHNob3VsZCBiZSBvbnNjcmVlbiB3aXRoIGEgd2lkdGggb2YgOTAlIG9mIHRo
ZSBwYWdlLiBJdCBpcyB0aGUgY2hpbGQgb2YgYW4gbmFycm93IGVsZW1lbnQKKyAgICAgICAgcG9z
aXRpb25lZCBvZmYgc2NyZWVuLCBidXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgYSB0b3AgbGF5
ZXIgZWxlbWVudCBpcyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrLCBzbyBpdHMKKyAgICAg
ICAgcG9zaXRpb24gYW5kIHBlcmNlbnQgbGVuZ3RocyBhcmUgcmVsYXRpdmUgdG8gdGhhdC4KKyAg
ICA8L2RpYWxvZz4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
b3R0b21EaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmNs
aXBwZWREaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcGFx
dWVEaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVk
RGlhbG9nJykuc2hvdygpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zbHVjZW50RGlh
bG9nJykuc2hvdygpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItZGlzcGxheS1u
b25lLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVu
dC90b3AtbGF5ZXItZGlzcGxheS1ub25lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMzZjMx
NzQ3NWIzYTY3YjkxNzQwMGQyNWUzMjdjMWU0ZTZjYzY4MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5v
bmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c3R5bGU+CisucHNldWRvZGlhbG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4Owor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMDsg
cmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRlcjogc29saWQ7CisgICAgcGFk
ZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIGNvbG9yOiBibGFjazsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBhIHRvcCBsYXllciBl
bGVtZW50IGlzIG5vdCByZW5kZXJlZCBpZiBpdCwgb3IgYW4gYW5jZXN0b3IsIGhhcyBkaXNwbGF5
OiBub25lLgorSXQgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgc3RhY2tlZCBv
biB0b3Agb2YgYSBibHVlIHJlY3RhbmdsZSwgYW5kIHNlZSBubyByZWQgcmVjdGFuZ2xlcy4KKwor
PGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiA1MHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InRvcDog
MTAwcHg7IGxlZnQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5vbmUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNDM5OGE5ZTliZDAxYTBlY2NmNmNiNWMzZTMzMTUxNmM0ZjkzNTgxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRp
c3BsYXktbm9uZS5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHls
ZT4KK2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0aDogMTUwcHg7Cit9CisK
Ky5oaWRkZW4geworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB0b3A6IDIwMHB4Owor
fQorCisjYm90dG9tRGlhbG9nIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIHRv
cDogNTBweDsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9wRGlhbG9nIHsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB0b3A6IDEwMHB4OworICAgIGxlZnQ6IDUwcHg7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIHRoYXQgYSB0b3AgbGF5ZXIg
ZWxlbWVudCBpcyBub3QgcmVuZGVyZWQgaWYgaXQsIG9yIGFuIGFuY2VzdG9yLCBoYXMgZGlzcGxh
eTogbm9uZS4KK0l0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIHN0YWNrZWQg
b24gdG9wIG9mIGEgYmx1ZSByZWN0YW5nbGUsIGFuZCBzZWUgbm8gcmVkIHJlY3RhbmdsZXMuCisK
KzxkaWFsb2cgaWQ9ImhpZGRlbkRpYWxvZyIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9ImRpc3BsYXk6
IG5vbmU7Ij48L2RpYWxvZz4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdj4KKyAgICAg
ICAgPGRpYWxvZyBpZD0iZGlzcGxheU5vbmVDaGlsZDEiIGNsYXNzPSJoaWRkZW4iPjwvZGlhbG9n
PgorICAgICAgICA8ZGlhbG9nIGlkPSJkaXNwbGF5Tm9uZUNoaWxkMiIgY2xhc3M9ImhpZGRlbiI+
PC9kaWFsb2c+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaWFsb2cgaWQ9ImJvdHRvbURpYWxvZyI+
PC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJ0b3BEaWFsb2ciPjwvZGlhbG9nPgorPHNjcmlwdD4KK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRkZW5EaWFsb2cnKS5zaG93TW9kYWwoKTsKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5Tm9uZUNoaWxkMScpLnNob3dNb2RhbCgpOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzcGxheU5vbmVDaGlsZDInKS5zaG93TW9kYWwo
KTsKKworLy8gVGVzdCB0aGF0IHN0YWNraW5nIHdvcmtzIGV2ZW4gaWYgYW4gZWxlbWVudCBpcyBh
ZGRlZCB0byB0aGUgdG9wIGxheWVyIHdoZW4gaXQgaGFzIG5vIHJlbmRlcmVyLgorZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JvdHRvbURpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RvcERpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JvdHRvbURpYWxvZycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmctZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YjZkOTJmYzhhOTlhNmE1MzgwZWMzZjA3M2NlZmNhYzEwNDQzZmZm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvdG9wLWxheWVyLW5lc3RpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisucHNldWRvZGlhbG9nIHsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRl
cjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAg
IGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMg
dGhhdCB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIHN0YWNrZWQgY29ycmVjdGx5IGV2ZW4gaWYgbmVz
dGVkIGluIHRoZSBET00gdHJlZS4KK1RoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIG5vIHJlZCBy
ZWN0YW5nbGVzIGFuZCBzZWUgMyByZWN0YW5nbGVzIHN0YWNrZWQgaW4gdGhlIGZvbGxvd2luZyBv
cmRlciAoZnJvbSBib3R0b20gdG8gdG9wKTogeWVsbG93LCBibHVlLCBncmVlbi4KKworPGRpdiBj
bGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InRvcDogMTUw
cHg7IGxlZnQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWUiPjwvZGl2PgorPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiAyMDBweDsgbGVmdDogMTAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0aW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItbmVz
dGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OWQwM2FiYWQwYWMyZDU2ZGUzMTIwNmMzYjU5MGQ0MWJj
OTNiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8
L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICB3aWR0
aDogMTUwcHg7Cit9CisKKyNib3R0b21EaWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsKKyAgICB0b3A6IDEwMHB4OworICAgIHotaW5kZXg6IDEwMDA7Cit9CisKKyNtaWRkbGVE
aWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgdG9wOiAxNTBweDsKKyAg
ICBsZWZ0OiA1MHB4OworICAgIHotaW5kZXg6IC01MDA7Cit9CisKKyN0b3BEaWFsb2cgeworICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIHRvcDogMjAwcHg7CisgICAgbGVmdDogMTAw
cHg7CisgICAgei1pbmRleDogLTEwMDA7Cit9CisKK2hpZGRlbiB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmVkOworICAgIHRvcDogMjUwcHg7CisgICAgbGVmdDogMHB4OworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUg
c3RhY2tlZCBjb3JyZWN0bHkgZXZlbiBpZiBuZXN0ZWQgaW4gdGhlIERPTSB0cmVlLgorVGhlIHRl
c3QgcGFzc2VzIGlmIHlvdSBzZWUgbm8gcmVkIHJlY3RhbmdsZXMgYW5kIHNlZSAzIHJlY3Rhbmds
ZXMgc3RhY2tlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyIChmcm9tIGJvdHRvbSB0byB0b3ApOiB5
ZWxsb3csIGJsdWUsIGdyZWVuLgorCis8ZGlhbG9nIGlkPSJ0b3BEaWFsb2ciPgorICAgIDxkaWFs
b2cgaWQ9Im1pZGRsZURpYWxvZyI+CisgICAgICAgIDxkaWFsb2cgaWQ9ImJvdHRvbURpYWxvZyI+
CisgICAgICAgICAgICA8ZGlhbG9nIGlkPSJoaWRkZW5EaWFsb2ciIGNsYXNzPSJoaWRkZW4iPgor
ICAgICAgICAgICAgICAgIDxkaWFsb2cgaWQ9ImhpZGRlbkRpYWxvZ0NoaWxkIiBjbGFzcz0iaGlk
ZGVuIj48L2RpYWxvZz4KKyAgICAgICAgICAgIDwvZGlhbG9nPgorICAgICAgICA8L2RpYWxvZz4K
KyAgICA8L2RpYWxvZz4KKzwvZGlhbG9nPgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdoaWRkZW5EaWFsb2dDaGlsZCcpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2hpZGRlbkRpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JvdHRvbURpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J21pZGRsZURpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rv
cERpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRp
YWxvZycpLmNsb3NlKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2lu
Zy1keW5hbWljLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlkOWVjYTlkYzg1MDJiNTZiYmQ3YzFlNTU3MjA3YTUzOTQzNzA1ZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXIt
c3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhl
aWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBz
b2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29s
b3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0b3Ag
bGF5ZXIgZWxlbWVudCBzdGFja2luZyBvcmRlciBhZnRlciBkeW5hbWljYWxseSBjYWxsaW5nIHNo
b3cvY2xvc2UgYW5kIHJlbW92YWwgZnJvbSB0aGUgRE9NIHRyZWUuCitUaGUgdGVzdCBwYXNzZXMg
aWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBzdGFja2VkIG9uIHRvcCBvZiBhIGJsdWUgcmVj
dGFuZ2xlLCBhbmQgc2VlIG5vIHJlZCByZWN0YW5nbGVzLgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9k
aWFsb2ciIHN0eWxlPSJ0b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWUiPjwvZGl2Pgor
PGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiAxMDBweDsgbGVmdDogNTBweDsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0
YWNraW5nLWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMzNDA3ZDFl
NDUyZGE3OTdkYWZmMjIwMzM1YjRjMDNhMTQyN2Y2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5h
bWljLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlh
bG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKworLmhpZGRl
biB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHRvcDogMjAwcHg7Cit9CisKKyNi
b3R0b21EaWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgdG9wOiA1MHB4
OworfQorCisjdG9wRGlhbG9nIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB0
b3A6IDEwMHB4OworICAgIGxlZnQ6IDUwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3RzIHRvcCBsYXllciBlbGVtZW50IHN0YWNraW5nIG9yZGVyIGFmdGVyIGR5bmFt
aWNhbGx5IGNhbGxpbmcgc2hvdy9jbG9zZSBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBET00gdHJlZS4K
K1RoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIHN0YWNrZWQgb24g
dG9wIG9mIGEgYmx1ZSByZWN0YW5nbGUsIGFuZCBzZWUgbm8gcmVkIHJlY3RhbmdsZXMuCisKKzxk
aWFsb2cgaWQ9InRvcERpYWxvZyI+PC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJib3R0b21EaWFsb2ci
PjwvZGlhbG9nPgorPGRpYWxvZyBpZD0icmVtb3ZlZERpYWxvZyIgY2xhc3M9ImhpZGRlbiI+Cisg
ICAgPGRpYWxvZyBpZD0icmVtb3ZlZERpYWxvZ0NoaWxkIiBjbGFzcz0iaGlkZGVuIj48L2RpYWxv
Zz4KKzwvZGlhbG9nPgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3BEaWFs
b2cnKS5zaG93TW9kYWwoKTsKK3ZhciByZW1vdmVkRGlhbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlbW92ZWREaWFsb2cnKTsKK3JlbW92ZWREaWFsb2cuc2hvd01vZGFsKCk7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlZERpYWxvZ0NoaWxkJykuc2hvd01vZGFsKCk7CityZW1v
dmVkRGlhbG9nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocmVtb3ZlZERpYWxvZyk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndG9wRGlhbG9nJykuY2xvc2UoKTsKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0b3BEaWFsb2cnKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDQ5YWM0ZjRjYzZiNmQyMTZiMGNkYmYxODVlYTE4MGVkNjIzNDJmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVy
LXN0YWNraW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxzdHlsZT4KKy5ib3ggeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6
IDE1MHB4OworfQorLmNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNTAwcHg7
CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFja2dyb3VuZC1jb2xvcjogbWFn
ZW50YTsKK30KKy50cmFuc2Zvcm1lZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVko
NDVkZWcpOworICAgIGJhY2tncm91bmQtY29sb3I6IGN5YW47Cit9CisucHNldWRvZGlhbG9nIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMDsgcmlnaHQ6IDA7CisgICAgbWFy
Z2luOiBhdXRvOworICAgIGJvcmRlcjogc29saWQ7CisgICAgcGFkZGluZzogMWVtOworICAgIGJh
Y2tncm91bmQ6IHdoaXRlOworICAgIGNvbG9yOiBibGFjazsKK30KKzwvc3R5bGU+Cis8Ym9keT4K
KzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAx
MHB4OyB6LWluZGV4OjMwMDAiPgorICAgIFRoaXMgd2hpdGUgYm94IGlzIHRoZSB0b3Btb3N0IG1v
ZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIG9uIHRvcCBvZiBldmVyeXRoaW5nLgorPC9kaXY+Cis8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyB6LWluZGV4OiAzOyBiYWNr
Z3JvdW5kLWNvbG9yOiByZWQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDIwMHB4OyI+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDog
NDAwcHg7IHotaW5kZXg6MjAwMCI+CisgICAgVGhpcyBncmVlbiBib3ggaXMgYWxzbyBhIG1vZGFs
IGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFib3ZlIHRoZSByZWQgYW5kIHllbGxvdyBy
ZWdpb25zLgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBib3giPgorICAgICAgICA8ZGl2IGNs
YXNzPSJ0cmFuc2Zvcm1lZCBib3giPkEgdHJhbnNmb3JtIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3Vi
dHJlZS48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDozMDBweDsgei1pbmRleDogMjsgYmFja2dyb3VuZC1jb2xvcjog
Y3lhbiI+CisgICAgICAgIFRoaXMgc2hvd3Mgei1pbmRleCBzdGFja2luZyB3aXRoaW4gdGhlIGRp
YWxvZydzIHN1YnRyZWUuIFRoZSBjeWFuIGJveCBzaG91bGQgYmUgb24gdG9wIG9mIHRoZSBtYWdl
bnRhIG9uZS4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVmdDo1MHB4OyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5k
LWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7
IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPlRoaXMgaXMg
cGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwvZGl2PgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgaGVpZ2h0
OiAyMDBlbTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB6LWluZGV4OjEwMDAiPgorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4NzZjOTJkNWJlYmE5OTlkYzgwMjg3ODVlODI0MTVlMDkwZmI1MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3Rh
Y2tpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gVGhpcyB0
ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUgcmVuZGVyZWQgYWJvdmUgei1pbmRleGVk
IGVsZW1lbnRzCithbmQgc3RhY2tlZCBpbiB0aGUgY29ycmVjdCBvcmRlciBhbW9uZ3N0IHRoZW1z
ZWx2ZXMuIEFsc28sIGxheWVyIGZlYXR1cmVzIGxpa2UKK3RyYW5zZm9ybXMgYW5kIHotaW5kZXgg
YXJlIHRlc3RlZCBpbnNpZGUgYSB0b3AgbGF5ZXIgZWxlbWVudCBzdWJ0cmVlLiAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5
bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6MTUwcHg7CisgICAgd2lkdGg6MTUwcHg7Cit9CisuY29u
dGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1MDBweDsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhOworfQorLnRyYW5z
Zm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSg0NWRlZyk7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaWFs
b2cgaWQ9ImhpZGRlbkRpYWxvZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGNvbG9yOiByZWQiPlRo
aXMgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuPC9kaWFsb2c+Cis8ZGlhbG9nIGlkPSJ0b3BEaWFs
b2ciIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsgei1pbmRleDogLTEwOyI+Cisg
ICAgVGhpcyB3aGl0ZSBib3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwgZGlhbG9nLiBJdCBzaG91bGQg
YmUgb24gdG9wIG9mIGV2ZXJ5dGhpbmcuCis8L2RpYWxvZz4KKzxkaXYgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7IGJhY2tncm91bmQtY29sb3I6IHJlZDsg
bGVmdDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7Ij4KKyAgICA8ZGlhbG9nIGlkPSJib3R0
b21EaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAwcHg7Ij4KKyAgICAgICAgVGhp
cyBncmVlbiBib3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRlcmVk
IGFib3ZlIHRoZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAgICAgICA8ZGl2IGNsYXNzPSJj
b250YWluZXIgYm94Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InRyYW5zZm9ybWVkIGJveCI+
QSB0cmFuc2Zvcm0gd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVlLjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6MzAwcHg7IHotaW5kZXg6IDI7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAg
ICAgICAgVGhpcyBzaG93cyB6LWluZGV4IHN0YWNraW5nIHdpdGhpbiB0aGUgZGlhbG9nJ3Mgc3Vi
dHJlZS4gVGhlIGN5YW4gYm94IHNob3VsZCBiZSBvbiB0b3Agb2YgdGhlIG1hZ2VudGEgb25lLgor
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6MzUwcHg7IGxlZnQ6NTBweDsgei1pbmRleDogMTsgYmFja2dyb3VuZC1j
b2xvcjogbWFnZW50YSI+PC9kaXY+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBmaXhl
ZDsgdG9wOiA5MHB4OyBsZWZ0OiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+VGhpcyBp
cyBwYXJ0IG9mIHRoZSBncmVlbiBkaWFsb2cuPC9kaXY+CisgICAgPC9kaWFsb2c+Cis8L2Rpdj4K
KzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMHB4OyBy
aWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IHotaW5k
ZXg6MTAwMCI+Cis8L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90
dG9tRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wRGlh
bG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZGVuRGlhbG9n
Jykuc2hvd01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="189741"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175122</attachid>
            <date>2012-11-19 20:02:19 -0800</date>
            <delta_ts>2021-07-06 03:30:26 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-84796-20121120130008.patch</filename>
            <type>text/plain</type>
            <size>38082</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk5MzgzMDYyYmQ0MGZl
ZTIwODE0NDBhYjQ5OTYzNDgxNmEwN2ZiMi4uNWVmM2VlZGE1ODlmM2E1YTNlNmFiOWEzNzU0OTE0
ZTNiOTlhYmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTE5ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4gQVBJIGFuZCB0
aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSnVsaWVuIENoYWZm
cmFpeC4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIHRvcCBsYXllciBlbGVtZW50IHN0YWNrIHRv
IERvY3VtZW50LiBUaGUgRnVsbHNjcmVlbgorICAgICAgICBzcGVjaWZpY2F0aW9uIG1hbmRhdGVz
IHRoYXQgd2UgdHJhY2sgdGhlIG9yZGVyaW5nIG9mIHRoZSBET00gbm9kZXMgaW4KKyAgICAgICAg
dGhlIHRvcCBsYXllciwgbm90IHRoZSByZW5kZXJlcnMuIFRoYXQgbWFrZXMgaXQgaGFyZCB0byBp
bXBsZW1lbnQgb24KKyAgICAgICAgdGhlIHJlbmRlcmluZyBzaWRlIG9ubHkuCisKKyAgICAgICAg
RWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBnZXQgYSBsYXllci4gTGF5ZXJzIGluIHRoZSB0b3Ag
bGF5ZXIgYXJlCisgICAgICAgIGFkZGVkIHRvIHRoZSByb290IGxheWVyJ3MgY2hpbGQgbGlzdCBh
ZnRlciBub3JtYWwgbGF5ZXJzIGFuZCBpbiB0aGUKKyAgICAgICAgb3JkZXIgb2YgdGhlIHRvcCBs
YXllciBzdGFjay4gVGhpcyB3YXksIHRoZSB0b3AgbGF5ZXIgYXBwZWFycyBhYm92ZQorICAgICAg
ICBhbGwgb3RoZXIgc3RhY2tpbmcgY29udGV4dHMgYW5kIGluIHRoZSBkZXNpcmVkIG9yZGVyLgor
CisgICAgICAgIEluIGFkZGl0aW9uLCB0b3AgbGF5ZXIgcmVuZGVyZXJzIGFyZSBhZGRlZCBhcyBj
aGlsZHJlbiBvZiBSZW5kZXJWaWV3CisgICAgICAgIGluIHRvcCBsYXllciBvcmRlci4gVGhpcyBp
cyB0byBzYXRpc2Z5IHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZQorICAgICAgICBjb250YWluaW5n
IGJsb2NrIG9mIGFuIGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllciBpcyB0aGUgaW5pdGlhbAorICAg
ICAgICBjb250YWluaW5nIGJsb2NrLiBJdCBhbHNvIGFsbG93cyBSZW5kZXJMYXllciB0byBrbm93
IHRoZSBwcm9wZXIKKyAgICAgICAgc3RhY2tpbmcgb3JkZXIgb2YgdGhlIGxheWVycyB3aXRob3V0
IGdvaW5nIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBsYXllcgorICAgICAgICBlbGVtZW50cyB0byB0
aGVpciBsYXllcnMuCisKKyAgICAgICAgU28gZmFyLCBvbmx5IG1vZGFsIGRpYWxvZyBlbGVtZW50
cyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRvcCBsYXllci4KKyAgICAgICAgVGhlIHBsYW4gaXMgdG8g
bWFrZSB0aGUgRnVsbHNjcmVlbiBBUEkgYWxzbyB1c2UgdGhlIHRvcCBsYXllci4KKworICAgICAg
ICBUZXN0czogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmct
YmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWRpc3BsYXktbm9uZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcu
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVy
U3R5bGUpOiBFbGVtZW50cyBpbiB0aGUgdG9wIGxheWVyIGhhdmUgYSBzdGFja2luZyBjb250ZXh0
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRUb1RvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZW1vdmVGcm9tVG9wTGF5ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRvcExh
eWVyRWxlbWVudHMpOiBBZGQgdGhlIHRvcCBsYXllciBlbGVtZW50IHN0YWNrIHRvIERvY3VtZW50
LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzSW5U
b3BMYXllcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVu
dFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRldGFjaCk6IEFkZCBhbiBleGNlcHRp
b24gdG8gdGhlIGFzc2VydCBzaW5jZSB0b3AgbGF5ZXIgZWxlbWVudHMgYW5kIHRoZWlyIGRlc2Nl
bmRhbnRzIGFyZSBtb3ZlZCBmcm9tIHRoZWlyCisgICAgICAgIHJlZ3VsYXIgcG9zaXRpb24gaW4g
dGhlIHJlbmRlciB0cmVlLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKE5vZGVSYXJl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldElzSW5Ub3BMYXllcik6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6YWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5l
ZWRlZCk6IEFkZCByZW5kZXJlcnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBhcyBjaGlsZHJlbiBv
ZiBSZW5kZXJWaWV3LCBhbmQKKyAgICAgICAgaW4gdG9wIGxheWVyIHN0YWNraW5nIG9yZGVyLgor
ICAgICAgICAqIGh0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaWFsb2dF
bGVtZW50OjpzaG93TW9kYWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0lu
VG9wTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5Ub3BMYXllclN1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0
cyk6IEFkZCB0aGUgdG9wIGxheWVyIHN0YWNrIGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOiBBdm9pZCBh
ZGRpbmcgbGF5ZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgZHVyaW5nIG5vcm1hbCBsYXllciBj
b2xsZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAo
UmVuZGVyTGF5ZXIpOgorCiAyMDEyLTExLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIE1ha2UgbmFtZWRJdGVtIHJldHVybiBhIG5vZGUgbGlzdCBvbmx5IGlu
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggMDA0NDhjYWUwNGYxMWJkNDgxOGIwM2RjMzkwNmQ1OTYyM2Y1
Mzg3Yy4uOTM2ZWEwMzM1YWMwNDVmODg3NDYxYWJiMjE0NjAzMjQ3ZDdkOWFiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTIyMTMsNiArMjIxMywxMCBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZhbm5vdGF0ZWRSZWdpb25zRXYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK19fWk5LN1dlYkNvcmUxMVJlbmRlckxh
eWVyMTJpc0luVG9wTGF5ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
X19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJLTlNfMThQbGF0
Zm9ybU1vdXNlRXZlbnRFTlNfMTNEcmFnT3BlcmF0aW9uRQogX19aTks3V2ViQ29yZTEyRXZlbnRI
YW5kbGVyMTdldmVudE1heVN0YXJ0RHJhZ0VSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGI1OTcwYzA2NzRmN2NkNTg5NWQ0NTk1
NWUyOTM2MDZhNTM5YTE0NzkuLjMzNjg5YjcyNTE4ZDI2YjdhZjMyYmNjOTk1NWZlZTEzZmE3ODYw
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5NzEsNiArMTk3MSw5
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5CiAgICAgICAgIC8vIFRvdWNoIG92ZXJmbG93IHNj
cm9sbGluZyBjcmVhdGVzIGEgc3RhY2tpbmcgY29udGV4dC4KICAgICAgICAgfHwgKChzdHlsZS0+
b3ZlcmZsb3dYKCkgIT0gT0hJRERFTiB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgIT0gT0hJRERFTikg
JiYgc3R5bGUtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgorI2lmIEVOQUJM
RShESUFMT0dfRUxFTUVOVCkKKyAgICAgICAgfHwgKGUgJiYgZS0+aXNJblRvcExheWVyKCkpCisj
ZW5kaWYKICAgICAgICAgKSkKICAgICAgICAgc3R5bGUtPnNldFpJbmRleCgwKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZWVhMjk4NGI0NDY5ZWI5OGUzMzgyYWUyNDE4OTIxYzFlOTVm
ZDZlZi4uZTQzNDZiNmVmYjk4ZmQxZWYxMTNmNWViMzgwNGVkZTg1OGRjMjVjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC01NDg4LDYgKzU0ODgsMjEgQEAgdm9pZCBEb2N1bWVudDo6YWRk
RG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFuZ2VFdmVudFF1ZXVlKERvY3VtZW50KiBkb2MpCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK3ZvaWQgRG9jdW1lbnQ6OmFkZFRv
VG9wTGF5ZXIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoIW1fdG9wTGF5ZXJFbGVt
ZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV90b3BMYXllckVsZW1lbnRzLmFwcGVuZChl
bGVtZW50KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgc2l6ZV90IHBvc2l0aW9uID0gbV90b3BMYXllckVsZW1lbnRzLmZp
bmQoZWxlbWVudCk7CisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBtX3Rv
cExheWVyRWxlbWVudHMucmVtb3ZlKHBvc2l0aW9uKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRQb2ludGVyTG9jaygpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDQ0MGNmYTJjMzUwMDMzN2Q2ZDM3MDA4YzVjYmQ5ZjA3
ZWYyZjM4NTcuLjFjMzYxMDllNmM3ZWZmZmIwNTNmNjc3MDBiZDRmOGQ5NTNkZTRkYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xMTY3LDYgKzExNjcsMTIgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiBhIExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVudCBpcyBu
dWxsIG9yIGVtcHR5LgogICAgIExvY2FsZSYgZ2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlID0gbnVsbEF0b20pOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQor
ICAgIHZvaWQgYWRkVG9Ub3BMYXllcihFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVGcm9tVG9w
TGF5ZXIoRWxlbWVudCopOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9w
TGF5ZXJFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGF5ZXJFbGVtZW50czsgfQorI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29s
IGlzWEhUTUwsIGJvb2wgaXNIVE1MKTsKIApAQCAtMTQ2Nyw2ICsxNDczLDEwIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4gPiBtX3RvcExheWVyRWxlbWVudHM7CisjZW5kaWYKKwogICAgIGludCBtX2xvYWRF
dmVudERlbGF5Q291bnQ7CiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fbG9hZEV2ZW50RGVsYXlUaW1l
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDA4YmQ2ZWEwMGJiNTk2NTZkMzljYTEzZGQ1
YTRmZjEyMzY1OTI3MDIuLjU4MGYyOGY1NmQ2YWU4OTFjOGYzMmIyYjAyOGQyNjk0YTZiYjQ1ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwNjYsNiArMTA2Niw5IEBAIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGluc2VydGlvCiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSog
aW5zZXJ0aW9uUG9pbnQpCiB7CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIHNldElz
SW5Ub3BMYXllcihmYWxzZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgc2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFsc2Up
OwpAQCAtMjA5Miw2ICsyMDk1LDM0IEBAIHZvaWQgRWxlbWVudDo6c2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vCiB9CiAjZW5k
aWYgICAgCiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCitib29sIEVsZW1lbnQ6OmlzSW5U
b3BMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJh
cmVEYXRhKCktPmlzSW5Ub3BMYXllcigpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzSW5Ub3BM
YXllcihib29sIGluVG9wTGF5ZXIpCit7CisgICAgLy8gVG8gYXZvaWQgYW4gZXh0cmEgY2FsbCB0
byBlbGVtZW50UmFyZURhdGEoKSwgZG9uJ3QgdXNlIEVsZW1lbnQ6OmlzSW5Ub3BMYXllcigpLgor
ICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJh
cmVEYXRhKCkgOiAwOworICAgIGlmIChyYXJlRGF0YSkgeworICAgICAgICBpZiAocmFyZURhdGEt
PmlzSW5Ub3BMYXllcigpID09IGluVG9wTGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCFpblRvcExheWVyKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOworICAgIH0KKyAgICBy
YXJlRGF0YS0+c2V0SXNJblRvcExheWVyKGluVG9wTGF5ZXIpOworCisgICAgaWYgKGluVG9wTGF5
ZXIpCisgICAgICAgIGRvY3VtZW50KCktPmFkZFRvVG9wTGF5ZXIodGhpcyk7CisgICAgZWxzZQor
ICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGcm9tVG9wTGF5ZXIodGhpcyk7CisgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RQb2ludGVyTG9j
aygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkOGJkN2NlMmVkMWE2YjBkNjU5NmY5ZTgxMGE5
MWU2NzRlYWM1MTNlLi42ZDhjOTY1YTViNTJiYjhkZWJjYTAyNzI0NWM2YmVmOGFiZTFhM2I3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKQEAgLTQxMyw2ICs0MTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBhZjEzNWYwOWJjMzYzNTkwYzcy
ZTA0ZWJmOTI4ZjVkM2VjMDgyMWFmLi4yMzM4NGE5Y2Q2OGQ2NTI2MWE0Y2QyNTY2ZjE2NmQ4OTBi
YTkyZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01Myw2ICs1Mywx
MCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50OwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudDsKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICB1c2luZyBOb2Rl
UmFyZURhdGE6OmlzSW5Ub3BMYXllcjsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldElzSW5U
b3BMYXllcjsKKyNlbmRpZgogCiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVjdGlvbnMoKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4NmYzNTI5N2YwMzQ3ZTk1ZWU0ZjU0YTMw
ODNjZmRlNGMzYzE2ZTA4Li5kYzdlYjc3YzZjMDk0NDQzY2JmNDA3NzE2ZGUzMzg4ZWI0YzQ5YjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTIsNiArMTEyLDEwIEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2lm
bmRlZiBOREVCVUcKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlmCisKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiR2VzdHVyZUV2ZW50LmgiCiAjZW5kaWYKQEAg
LTEzMDYsOSArMTMxMCwxMyBAQCB2b2lkIE5vZGU6OmRldGFjaCgpCiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVy
c2VOZXh0Tm9kZSh0aGlzKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAvLyBSZW5kZXJGbG93VGhyZWFkIHJlbW92
ZXMgc29tZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1bGFyIHRyZWUKKyAgICAgICAgICAgIC8vIFJl
bmRlckZsb3dUaHJlYWQgYW5kIHRoZSB0b3AgbGF5ZXIgcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhl
IHJlZ3VsYXIgdHJlZQogICAgICAgICAgICAgLy8gaGllcmFyY2h5LiBUaGV5IHdpbGwgYmUgY2xl
YW5lZCB1cCB3aGVuIHdlIGNhbGwgZGV0YWNoIG9uIHRoZW0uCisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCByZW5kZXJlci0+aW5SZW5k
ZXJGbG93VGhyZWFkKCkgfHwgKHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpLT5pc0luVG9wTGF5
ZXJTdWJ0cmVlKCkpKTsKKyNlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIXJlbmRlcmVyIHx8IHJl
bmRlcmVyLT5pblJlbmRlckZsb3dUaHJlYWQoKSk7CisjZW5kaWYKICAgICAgICAgfQogI2VuZGlm
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmY4YThiMDg2N2Rh
Y2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkuLmIwMjUwZjYwNDMxNGI3NTI0OTk5MGMwZjY1ZDI0YmQ5
ZWQ1YTk5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE5Myw2ICsxOTMsOSBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAsIG1fY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShESUFMT0dfRUxF
TUVOVCkKKyAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKKyNlbmRpZgogICAgIHsKICAg
ICB9CiAKQEAgLTMxMSw2ICszMTQsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsg
fQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1f
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
RElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5Ub3BMYXllcjsgfQorICAgIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wgdmFsdWUpIHsg
bV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgVHJlZVNj
b3BlKiBtX3RyZWVTY29wZTsKQEAgLTMyNSw2ICszMzIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6
IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBtX2lzSW5U
b3BMYXllciA6IDE7CisjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAg
ICAgT3duUHRyPFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiA+
IG1fbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjFmMWMzZjg5OWZiMDkzZmJmZmI4MjQ2MWFjMWUwYzVi
NTNhODE5ZC4uYjkxYzhiZmYyYWMyZWVhODkyNGU5MmI4MzM5YTIzYTRiODZlYmQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMjAsNiArMjIw
LDI2IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXIo
KQogICAgIHJldHVybiBuZXdSZW5kZXJlcjsKIH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKK3N0YXRpYyB2b2lkIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQsIFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBSZW5kZXJPYmpl
Y3QqJiBuZXh0UmVuZGVyZXIpCit7CisgICAgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnRSZW5kZXJl
ci0+dmlldygpOworICAgIG5leHRSZW5kZXJlciA9IDA7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+dG9w
TGF5ZXJFbGVtZW50cygpOworICAgIHNpemVfdCB0b3BMYXllclBvc2l0aW9uID0gdG9wTGF5ZXJF
bGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgIEFTU0VSVCh0b3BMYXllclBvc2l0aW9uICE9IG5v
dEZvdW5kKTsKKyAgICAvLyBGaW5kIHRoZSBuZXh0IHRvcCBsYXllciByZW5kZXJlciB0aGF0J3Mg
c3RhY2tlZCBhYm92ZSB0aGlzIGVsZW1lbnQuIE5vdGUgdGhhdCB0aGUgaW1tZWRpYXRlIG5leHQg
ZWxlbWVudCBpbiB0aGUgdG9wIGxheWVyCisgICAgLy8gc3RhY2sgbWlnaHQgbm90IGhhdmUgYSBy
ZW5kZXJlciAoZHVlIHRvIGRpc3BsYXk6IG5vbmUsIG9yIHBvc3NpYmx5IGl0IGlzIG5vdCBhdHRh
Y2hlZCB5ZXQpLgorICAgIGZvciAoc2l6ZV90IGkgPSB0b3BMYXllclBvc2l0aW9uICsgMTsgaSA8
IHRvcExheWVyRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbmV4dFJlbmRlcmVyID0g
dG9wTGF5ZXJFbGVtZW50c1tpXS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKG5leHRSZW5kZXJl
cikgeworICAgICAgICAgICAgQVNTRVJUKG5leHRSZW5kZXJlci0+cGFyZW50KCkgPT0gcGFyZW50
UmVuZGVyZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisjZW5k
aWYKKwogdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkK
IHsKICAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKQEAgLTI0OSw2ICsyNjksMTIg
QEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAg
ICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkgaGVyZSBpbiB0aGUgZmly
c3QgY2xhdXNlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8gaGF2ZQogICAgIC8vIHRoZSByZW5kZXJl
ciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVu
ZGVyZXIgPSBtX2NvbnRleHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8gbV9jb250ZXh0LnBhcmVu
dEZsb3dSZW5kZXJlcigpLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUpIDogbV9jb250ZXh0Lm5l
eHRSZW5kZXJlcigpOworCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlmIChlbGVt
ZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKQorICAgICAgICBhZGp1c3RJbnNlcnRpb25Q
b2ludEZvclRvcExheWVyRWxlbWVudChlbGVtZW50LCBwYXJlbnRSZW5kZXJlciwgbmV4dFJlbmRl
cmVyKTsKKyNlbmRpZgorCiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJl
bmRlcmVyKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCmluZGV4IDdkNGQ2NDUxYmUzYTk5ZjY5MGQzNmU4MzY4
OTcxZjMwYzVlOWMzNDYuLjI5NTBmYmE2YjJlNWVjZjVjZmE5MmY5ZWU4N2IzYzgzMjkzNzNkNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1
Myw3IEBAIHZvaWQgSFRNTERpYWxvZ0VsZW1lbnQ6OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIs
IGZhbHNlKTsKKyAgICBzZXRJc0luVG9wTGF5ZXIoZmFsc2UpOwogfQogCiB2b2lkIEhUTUxEaWFs
b2dFbGVtZW50OjpzaG93KCkKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBIVE1MRGlhbG9nRWxlbWVu
dDo6c2hvd01vZGFsKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUob3BlbkF0dHIsIHRydWUpOworICAgIHNldElzSW5Ub3BM
YXllcih0cnVlKTsKIH0KIAogYm9vbCBIVE1MRGlhbG9nRWxlbWVudDo6aXNQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGJjNDlmZTgyMzFlNTU2NTJmZmMwYzM1NTAz
MzFkNzU3OWZkOWQwMzMuLjU1NmQwZTg2ZWZkZDdmNWEyNTlkMmFmYWVhMzRiZGEwN2M2Zjg3ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzY2Nyw2ICsz
NjY3LDIzIEBAIE5vZGUqIFJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgUmVuZGVy
TGF5ZXI6OmlzSW5Ub3BMYXllcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVy
KCktPm5vZGUoKTsKKyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KG5vZGUpLT5pc0luVG9wTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6
aXNJblRvcExheWVyU3VidHJlZSgpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBSZW5kZXJMYXll
ciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICAg
ICAgaWYgKGxheWVyLT5pc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gQ29tcHV0ZSB0aGUgei1v
ZmZzZXQgb2YgdGhlIHBvaW50IGluIHRoZSB0cmFuc2Zvcm1TdGF0ZS4KIC8vIFRoaXMgaXMgZWZm
ZWN0aXZlbHkgcHJvamVjdGluZyBhIHJheSBub3JtYWwgdG8gdGhlIHBsYW5lIG9mIGFuY2VzdG9y
LCBmaW5kaW5nIHdoZXJlIHRoYXQKIC8vIHJheSBpbnRlcnNlY3RzIHRhcmdldCwgYW5kIGNvbXB1
dGluZyB0aGUgeiBkZWx0YSBiZXR3ZWVuIHRob3NlIHR3byBwb2ludHMuCkBAIC00Nzg2LDYgKzQ4
MDMsMjEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICBpZiAo
bV9uZWdaT3JkZXJMaXN0KQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9yZGVyTGlz
dC0+YmVnaW4oKSwgbV9uZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKKyNp
ZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgLy8gQXBwZW5kIGxheWVycyBmb3IgdG9wIGxh
eWVyIGVsZW1lbnRzIGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1cmUgdGhl
eSBhcmUgb24gdG9wIHJlZ2FyZGxlc3Mgb2Ygei1pbmRleGVzLgorICAgIC8vIFRoZSByZW5kZXJl
cnMgb2YgdG9wIGxheWVyIGVsZW1lbnRzIGFyZSBjaGlsZHJlbiBvZiB0aGUgdmlldywgc29ydGVk
IGluIHRvcCBsYXllciBzdGFja2luZyBvcmRlci4KKyAgICBpZiAoaXNSb290TGF5ZXIoKSkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CisgICAgICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHZpZXctPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGNoaWxk
RWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChjaGls
ZC0+bm9kZSgpKSA6IDA7CisgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxl
bWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogbGF5
ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY2hpbGQpLT5sYXllcigpOworICAgICAgICAg
ICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbV96T3JkZXJMaXN0c0RpcnR5ID0gZmFsc2U7
CiB9CiAKQEAgLTQ4MTAsNiArNDg0MiwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOb3Jt
YWxGbG93TGlzdCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNs
dWRlSGlkZGVuTGF5ZXJzLCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiomIHBvc0J1ZmZlciwgVmVjdG9y
PFJlbmRlckxheWVyKj4qJiBuZWdCdWZmZXIpCiB7CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQorICAgIGlmIChpc0luVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAg
ICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAogICAgIC8vIE92ZXJmbG93IGxh
eWVycyBhcmUganVzdCBwYWludGVkIGJ5IHRoZWlyIGVuY2xvc2luZyBsYXllcnMsIHNvIHRoZXkg
ZG9uJ3QgZ2V0IHB1dCBpbiB6b3JkZXIgbGlzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IDcyNTlmNzljZDgzOTU5MWRlZWMzOTk1NzExZjg1MTEzNDAzYTBjZWYu
LjE5ZDUyOTY4YzhmZmUwZjVkYTY2MzRhMzNjZWQ3OWVlNzc1MzU5ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MDIsNiArNzAyLDExIEBAIHB1YmxpYzoKIAog
ICAgIE5vZGUqIGVuY2xvc2luZ0VsZW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKKyAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0OworICAgIGJvb2wgaXNJblRv
cExheWVyU3VidHJlZSgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWJkNTMyMGMwYjQ2YTBjODE2YWVkOTM2MTczNzUyZmEzNGY2NTY4Yi4uNWI4YzY3ZDg4MmJlMzUx
MWY3ZWM5ZWVjZDFiMjcwMGIyNDg4YmI1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEx
LTE5ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bXBsZW1lbnQgdGhlIG5ldyBzdGFja2luZyBsYXllciBuZWVkZWQgYnkgdGhlIEZ1bGxzY3JlZW4g
QVBJIGFuZCB0aGUgbmV3IDxkaWFsb2c+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSnVs
aWVuIENoYWZmcmFpeC4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIHRvcCBsYXllciBzdGFja2lu
ZyBhbmQgcmVuZGVyaW5nLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
dG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxh
eWVyLWRpc3BsYXktbm9uZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItZGlzcGxheS1ub25lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0aW5nLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50
L3RvcC1sYXllci1uZXN0aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTWFrZSBuYW1lZEl0ZW0gcmV0dXJuIGEgbm9kZSBsaXN0IG9ubHkgaW4gSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24gYW5kIEhUTUxPcHRpb25zQ29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5p
bmctYmxvY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dF
bGVtZW50L3RvcC1sYXllci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDAwN2M1OThiODhiZDAxMzY1NmFlNmI1ODhiYTlkM2IxMjc0ZDJmMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1j
b250YWluaW5nLWJsb2NrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKzwvc2NyaXB0PgorPHN0eWxlPgorLnBz
ZXVkb2RpYWxvZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7IHJpZ2h0
OiAwOworICAgIG1hcmdpbjogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkOworICAgIHBhZGRpbmc6
IDFlbTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICBjb2xvcjogYmxhY2s7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgdGVzdHMgdGhhdCBhIHRvcCBsYXllciBl
bGVtZW50J3MgY29udGFpbmluZyBibG9jayBpcyBpbiB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJs
b2NrIGFuZCB0aGF0IGl0IGlzIHVuYWZmZWN0ZWQgYnkKK2FuY2VzdG9yIGVsZW1lbnRzIHdpdGgg
b3ZlcmZsb3cgb3Igb3BhY2l0eS4gIERpYWxvZyBlbGVtZW50cyBhcmUgdXNlZCB0byBkZW1vbnN0
cmF0ZSB0aGVzZSBwcm9wZXJ0aWVzLiBBIGRpYWxvZyBvcGVuZWQKK3dpdGggc2hvd01vZGFsKCkg
aXMgaW4gdGhlIHRvcCBsYXllcjsgb25lIG9wZW5lZCB3aXRoIGRpYWxvZy5zaG93KCkgaXMgbm90
LgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMTAwcHg7IGhlaWdodDogMjUwcHg7IHdpZHRoOiA5MCU7IGJhY2tncm91bmQtY29sb3I6
IHllbGxvdyI+CisgICAgVGhpcyBtb2RhbCBkaWFsb2cgc2hvdWxkIGJlIG9uc2NyZWVuIHdpdGgg
YSB3aWR0aCBvZiA5MCUgb2YgdGhlIHBhZ2UuIEl0IGlzIHRoZSBjaGlsZCBvZiBhbiBuYXJyb3cg
ZWxlbWVudAorICAgIHBvc2l0aW9uZWQgb2ZmIHNjcmVlbiwgYnV0IHRoZSBjb250YWluaW5nIGJs
b2NrIG9mIGEgdG9wIGxheWVyIGVsZW1lbnQgaXMgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9j
aywgc28gaXRzCisgICAgcG9zaXRpb24gYW5kIHBlcmNlbnQgbGVuZ3RocyBhcmUgcmVsYXRpdmUg
dG8gdGhhdC4KKzwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGN5YW4iPgorICAgIFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1bmFm
ZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgbm90IGJlIGNs
aXBwZWQuCis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6
IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4OyB0b3A6IDQwMHB4OyBsZWZ0OiAz
MDBweCI+CisgICAgPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDBweDsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBjeWFuIj4KKyAgICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBh
ZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4gSXQgc2hvdWxkIGJlIGNsaXBw
ZWQuCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyNTBweDsgbGVmdDogMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBtYWdlbnRhIj4KKyAgICBUaGlzIG1vZGFsIGRpYWxvZyBzaG91bGQgYmUgdW5hZmZlY3Rl
ZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvcGFjaXR5LgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogNDAwcHg7IG9wYWNpdHk6IDAuMyI+CisgICAgPGRpdiBjbGFz
cz0icHNldWRvZGlhbG9nIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgaGVp
Z2h0OiAxNTBweDsgd2lkdGg6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj4KKyAg
ICAgICAgVGhpcyBub24tbW9kYWwgZGlhbG9nIHNob3VsZCBiZSBhZmZlY3RlZCBieSBpdHMgYW5j
ZXN0b3Igd2l0aCBvcGFjaXR5LgorICAgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3At
bGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZThlOWQ2MTlkMDg4YTgzY2MzY2IxZDZjMjA5NzhkZjJiN2VlMDg5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWNvbnRh
aW5pbmctYmxvY2suaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPgorVGhpcyB0ZXN0cyB0aGF0IGEgdG9wIGxheWVyIGVsZW1lbnQncyBj
b250YWluaW5nIGJsb2NrIGlzIGluIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYW5kIHRo
YXQgaXQgaXMgdW5hZmZlY3RlZCBieQorYW5jZXN0b3IgZWxlbWVudHMgd2l0aCBvdmVyZmxvdyBv
ciBvcGFjaXR5LiAgRGlhbG9nIGVsZW1lbnRzIGFyZSB1c2VkIHRvIGRlbW9uc3RyYXRlIHRoZXNl
IHByb3BlcnRpZXMuIEEgZGlhbG9nIG9wZW5lZAord2l0aCBzaG93TW9kYWwoKSBpcyBpbiB0aGUg
dG9wIGxheWVyOyBvbmUgb3BlbmVkIHdpdGggZGlhbG9nLnNob3coKSBpcyBub3QuCisKKzxkaXYg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0MDBweDsgb3BhY2l0eTogMC4zIj4KKyAg
ICA8ZGlhbG9nIGlkPSJvcGFxdWVEaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMjUwcHg7IGxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+CisgICAgICAg
IFRoaXMgbW9kYWwgZGlhbG9nIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3
aXRoIG9wYWNpdHkuCisgICAgPC9kaWFsb2c+CisgICAgPGRpYWxvZyBpZD0idHJhbnNsdWNlbnRE
aWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWlnaHQ6IDE1MHB4
OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGEiPgorICAgICAgICBUaGlz
IG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3RvciB3aXRo
IG9wYWNpdHkuCisgICAgPC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDE1MHB4OyB0
b3A6IDQwMHB4OyBsZWZ0OiAzMDBweCI+CisgICAgPGRpYWxvZyBpZD0idW5jbGlwcGVkRGlhbG9n
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IGhlaWdo
dDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAgICBUaGlzIG1vZGFsIGRp
YWxvZyBzaG91bGQgYmUgdW5hZmZlY3RlZCBieSBpdHMgYW5jZXN0b3Igd2l0aCBvdmVyZmxvdy4g
SXQgc2hvdWxkIG5vdCBiZSBjbGlwcGVkLgorICAgIDwvZGlhbG9nPgorICAgIDxkaWFsb2cgaWQ9
ImNsaXBwZWREaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBoZWln
aHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IGN5YW4iPgorICAgICAg
ICBUaGlzIG5vbi1tb2RhbCBkaWFsb2cgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGl0cyBhbmNlc3Rv
ciB3aXRoIG92ZXJmbG93LiBJdCBzaG91bGQgYmUgY2xpcHBlZC4KKyAgICA8L2RpYWxvZz4KKzwv
ZGl2PgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMDBweDsgbGVmdDog
MTAwMHB4OyB3aWR0aDogMjBweDsiPgorICAgIDxkaWFsb2cgaWQ9ImJvdHRvbURpYWxvZyIgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgaGVpZ2h0OiAyNTBweDsgd2lkdGg6
IDkwJTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Ij4KKyAgICAgICAgVGhpcyBtb2RhbCBkaWFs
b2cgc2hvdWxkIGJlIG9uc2NyZWVuIHdpdGggYSB3aWR0aCBvZiA5MCUgb2YgdGhlIHBhZ2UuIEl0
IGlzIHRoZSBjaGlsZCBvZiBhbiBuYXJyb3cgZWxlbWVudAorICAgICAgICBwb3NpdGlvbmVkIG9m
ZiBzY3JlZW4sIGJ1dCB0aGUgY29udGFpbmluZyBibG9jayBvZiBhIHRvcCBsYXllciBlbGVtZW50
IGlzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2ssIHNvIGl0cworICAgICAgICBwb3NpdGlv
biBhbmQgcGVyY2VudCBsZW5ndGhzIGFyZSByZWxhdGl2ZSB0byB0aGF0LgorICAgIDwvZGlhbG9n
PgorPC9kaXY+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdHRvbURpYWxv
ZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VuY2xpcHBlZERpYWxv
ZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wYXF1ZURpYWxvZycp
LnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZWREaWFsb2cnKS5z
aG93KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNsdWNlbnREaWFsb2cnKS5zaG93
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzNmMzE3NDc1YjNhNjdi
OTE3NDAwZDI1ZTMyN2MxZTRlNmNjNjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLWRpc3BsYXktbm9uZS1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6
IDE1MHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsK
KyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07
CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IGEgdG9wIGxheWVyIGVsZW1lbnQgaXMg
bm90IHJlbmRlcmVkIGlmIGl0LCBvciBhbiBhbmNlc3RvciwgaGFzIGRpc3BsYXk6IG5vbmUuCitJ
dCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBzdGFja2VkIG9uIHRvcCBvZiBh
IGJsdWUgcmVjdGFuZ2xlLCBhbmQgc2VlIG5vIHJlZCByZWN0YW5nbGVzLgorCis8ZGl2IGNsYXNz
PSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWUi
PjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiAxMDBweDsgbGVm
dDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvdG9w
LWxheWVyLWRpc3BsYXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLWRpc3BsYXktbm9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTAxMDhi
M2Q0ZGU5OGJmMDM2ZjdmYjQ0OTY4MDZlM2VhNDg3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItZGlzcGxheS1ub25l
Lmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9n
IHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKworLnJlZCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHRvcDogMjAwcHg7Cit9CisKKyNib3R0b21E
aWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgdG9wOiA1MHB4OworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0b3BEaWFsb2cgeworICAgIGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOworICAgIHRvcDogMTAwcHg7CisgICAgbGVmdDogNTBweDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBhIHRvcCBsYXllciBlbGVtZW50IGlzIG5v
dCByZW5kZXJlZCBpZiBpdCwgb3IgYW4gYW5jZXN0b3IsIGhhcyBkaXNwbGF5OiBub25lLgorSXQg
cGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgc3RhY2tlZCBvbiB0b3Agb2YgYSBi
bHVlIHJlY3RhbmdsZSwgYW5kIHNlZSBubyByZWQgcmVjdGFuZ2xlcy4KKworPGRpYWxvZyBpZD0i
aGlkZGVuRGlhbG9nIiBjbGFzcz0icmVkIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvZGlhbG9n
PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGlhbG9nIGlkPSJk
aXNwbGF5Tm9uZUNoaWxkMSIgY2xhc3M9InJlZCI+PC9kaWFsb2c+CisgICAgICAgIDxkaWFsb2cg
aWQ9ImRpc3BsYXlOb25lQ2hpbGQyIiBjbGFzcz0icmVkIj48L2RpYWxvZz4KKyAgICA8L2Rpdj4K
KzwvZGl2PgorPGRpYWxvZyBpZD0iYm90dG9tRGlhbG9nIj48L2RpYWxvZz4KKzxkaWFsb2cgaWQ9
InRvcERpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2hpZGRlbkRpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp
c3BsYXlOb25lQ2hpbGQxJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkaXNwbGF5Tm9uZUNoaWxkMicpLnNob3dNb2RhbCgpOworCisvLyBUZXN0IHRoYXQgc3Rh
Y2tpbmcgd29ya3MgZXZlbiBpZiBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSB0b3AgbGF5ZXIg
d2hlbiBpdCBoYXMgbm8gcmVuZGVyZXIuCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9t
RGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wRGlhbG9n
Jykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJyku
c3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXll
ci1uZXN0aW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9n
RWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNmQ5
MmZjOGE5OWE2YTUzODBlYzNmMDczY2VmY2FjMTA0NDNmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItbmVzdGluZy1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAg
d2lkdGg6IDE1MHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdo
dDogMDsKKyAgICBtYXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5n
OiAxZW07CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50
cyBhcmUgc3RhY2tlZCBjb3JyZWN0bHkgZXZlbiBpZiBuZXN0ZWQgaW4gdGhlIERPTSB0cmVlLgor
VGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgbm8gcmVkIHJlY3RhbmdsZXMgYW5kIHNlZSAzIHJl
Y3RhbmdsZXMgc3RhY2tlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyIChmcm9tIGJvdHRvbSB0byB0
b3ApOiB5ZWxsb3csIGJsdWUsIGdyZWVuLgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0
eWxlPSJ0b3A6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3ciPjwvZGl2PgorPGRpdiBj
bGFzcz0icHNldWRvZGlhbG9nIiBzdHlsZT0idG9wOiAxNTBweDsgbGVmdDogNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxl
PSJ0b3A6IDIwMHB4OyBsZWZ0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0aW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTAzOTc2MGMzOWQ3OTNkZWRhYzNjNjJiZTk2MGNlMDFhN2Y2NTZlYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1uZXN0
aW5nLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlh
bG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIHdpZHRoOiAxNTBweDsKK30KKworI2JvdHRv
bURpYWxvZyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgIHRvcDogMTAwcHg7
CisgICAgei1pbmRleDogMTAwMDsKK30KKworI21pZGRsZURpYWxvZyB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsKKyAgICB0b3A6IDE1MHB4OworICAgIGxlZnQ6IDUwcHg7CisgICAgei1p
bmRleDogLTUwMDsKK30KKworI3RvcERpYWxvZyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisgICAgdG9wOiAyMDBweDsKKyAgICBsZWZ0OiAxMDBweDsKKyAgICB6LWluZGV4OiAtMTAw
MDsKK30KKworLnJlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHRvcDogMjUw
cHg7CisgICAgbGVmdDogMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0
ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUgc3RhY2tlZCBjb3JyZWN0bHkgZXZlbiBp
ZiBuZXN0ZWQgaW4gdGhlIERPTSB0cmVlLgorVGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgbm8g
cmVkIHJlY3RhbmdsZXMgYW5kIHNlZSAzIHJlY3RhbmdsZXMgc3RhY2tlZCBpbiB0aGUgZm9sbG93
aW5nIG9yZGVyIChmcm9tIGJvdHRvbSB0byB0b3ApOiB5ZWxsb3csIGJsdWUsIGdyZWVuLgorCis8
ZGlhbG9nIGlkPSJ0b3BEaWFsb2ciPgorICAgIDxkaWFsb2cgaWQ9Im1pZGRsZURpYWxvZyI+Cisg
ICAgICAgIDxkaWFsb2cgaWQ9ImJvdHRvbURpYWxvZyI+CisgICAgICAgICAgICA8ZGlhbG9nIGlk
PSJoaWRkZW5EaWFsb2ciIGNsYXNzPSJyZWQiPgorICAgICAgICAgICAgICAgIDxkaWFsb2cgaWQ9
ImhpZGRlbkRpYWxvZ0NoaWxkIiBjbGFzcz0icmVkIj48L2RpYWxvZz4KKyAgICAgICAgICAgIDwv
ZGlhbG9nPgorICAgICAgICA8L2RpYWxvZz4KKyAgICA8L2RpYWxvZz4KKzwvZGlhbG9nPgorPHNj
cmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRkZW5EaWFsb2dDaGlsZCcpLnNob3dN
b2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpYWxvZycpLnNob3dNb2Rh
bCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdHRvbURpYWxvZycpLnNob3dNb2RhbCgp
OworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pZGRsZURpYWxvZycpLnNob3dNb2RhbCgpOwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcERpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpYWxvZycpLmNsb3NlKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFs
b2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHlu
YW1pYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkOWVjYTlkYzg1MDJiNTZiYmQ3YzFlNTU3
MjA3YTUzOTQzNzA1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZHluYW1pYy1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KKy5wc2V1ZG9kaWFsb2cgeworICAgIGhlaWdodDogMTUwcHg7CisgICAgd2lkdGg6IDE1MHB4
OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOyByaWdodDogMDsKKyAgICBt
YXJnaW46IGF1dG87CisgICAgYm9yZGVyOiBzb2xpZDsKKyAgICBwYWRkaW5nOiAxZW07CisgICAg
YmFja2dyb3VuZDogd2hpdGU7CisgICAgY29sb3I6IGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0b3AgbGF5ZXIgZWxlbWVudCBzdGFja2luZyBvcmRlciBh
ZnRlciBkeW5hbWljYWxseSBjYWxsaW5nIHNob3cvY2xvc2UgYW5kIHJlbW92YWwgZnJvbSB0aGUg
RE9NIHRyZWUuCitUaGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBz
dGFja2VkIG9uIHRvcCBvZiBhIGJsdWUgcmVjdGFuZ2xlLCBhbmQgc2VlIG5vIHJlZCByZWN0YW5n
bGVzLgorCis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJ0b3A6IDUwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGJsdWUiPjwvZGl2PgorPGRpdiBjbGFzcz0icHNldWRvZGlhbG9nIiBzdHls
ZT0idG9wOiAxMDBweDsgbGVmdDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWlj
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTIxNjNmNWMxYjZiMDRiMmU4MTY1NmQxMWEwMTEwNDkyYjhiZGYy
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L3RvcC1sYXllci1zdGFja2luZy1keW5hbWljLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVl
KTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAg
IHdpZHRoOiAxNTBweDsKK30KKworLnJlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwor
ICAgIHRvcDogMjAwcHg7Cit9CisKKyNib3R0b21EaWFsb2cgeworICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgdG9wOiA1MHB4OworfQorCisjdG9wRGlhbG9nIHsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICB0b3A6IDEwMHB4OworICAgIGxlZnQ6IDUwcHg7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIHRvcCBsYXllciBlbGVtZW50IHN0
YWNraW5nIG9yZGVyIGFmdGVyIGR5bmFtaWNhbGx5IGNhbGxpbmcgc2hvdy9jbG9zZSBhbmQgcmVt
b3ZhbCBmcm9tIHRoZSBET00gdHJlZS4KK1RoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3Jl
ZW4gcmVjdGFuZ2xlIHN0YWNrZWQgb24gdG9wIG9mIGEgYmx1ZSByZWN0YW5nbGUsIGFuZCBzZWUg
bm8gcmVkIHJlY3RhbmdsZXMuCisKKzxkaWFsb2cgaWQ9InRvcERpYWxvZyI+PC9kaWFsb2c+Cis8
ZGlhbG9nIGlkPSJib3R0b21EaWFsb2ciPjwvZGlhbG9nPgorPGRpYWxvZyBpZD0icmVtb3ZlZERp
YWxvZyIgY2xhc3M9InJlZCI+CisgICAgPGRpYWxvZyBpZD0icmVtb3ZlZERpYWxvZ0NoaWxkIiBj
bGFzcz0icmVkIj48L2RpYWxvZz4KKzwvZGlhbG9nPgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0b3BEaWFsb2cnKS5zaG93TW9kYWwoKTsKK3ZhciByZW1vdmVkRGlhbG9nID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW92ZWREaWFsb2cnKTsKK3JlbW92ZWREaWFsb2cu
c2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc2hv
d01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlZERpYWxvZ0NoaWxkJyku
c2hvd01vZGFsKCk7CityZW1vdmVkRGlhbG9nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocmVtb3Zl
ZERpYWxvZyk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wRGlhbG9nJykuY2xvc2UoKTsK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3BEaWFsb2cnKS5zaG93TW9kYWwoKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDQ5YWM0ZjRjYzZiNmQyMTZiMGNkYmYxODVlYTE4MGVk
NjIzNDJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0NiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKy5ib3ggeworICAgIGhlaWdodDog
MTUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworfQorLmNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1w
ZXJzcGVjdGl2ZTogNTAwcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogbWFnZW50YTsKK30KKy50cmFuc2Zvcm1lZCB7CisgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZVkoNDVkZWcpOworICAgIGJhY2tncm91bmQtY29sb3I6IGN5YW47Cit9
CisucHNldWRvZGlhbG9nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMDsg
cmlnaHQ6IDA7CisgICAgbWFyZ2luOiBhdXRvOworICAgIGJvcmRlcjogc29saWQ7CisgICAgcGFk
ZGluZzogMWVtOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIGNvbG9yOiBibGFjazsKK30K
Kzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgY2xhc3M9InBzZXVkb2RpYWxvZyIgc3R5bGU9InBvc2l0
aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyB6LWluZGV4OjMwMDAiPgorICAgIFRoaXMgd2hpdGUgYm94
IGlzIHRoZSB0b3Btb3N0IG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIG9uIHRvcCBvZiBldmVy
eXRoaW5nLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4
OyB6LWluZGV4OiAzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBo
ZWlnaHQ6IDIwMHB4OyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJwc2V1ZG9kaWFsb2ciIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdp
ZHRoOiA3NSU7IGhlaWdodDogNDAwcHg7IHotaW5kZXg6MjAwMCI+CisgICAgVGhpcyBncmVlbiBi
b3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFib3ZlIHRo
ZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBib3gi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1lZCBib3giPkEgdHJhbnNmb3JtIHdpdGhp
biB0aGUgZGlhbG9nJ3Mgc3VidHJlZS48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJib3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozMDBweDsgei1pbmRleDogMjsg
YmFja2dyb3VuZC1jb2xvcjogY3lhbiI+CisgICAgICAgIFRoaXMgc2hvd3Mgei1pbmRleCBzdGFj
a2luZyB3aXRoaW4gdGhlIGRpYWxvZydzIHN1YnRyZWUuIFRoZSBjeWFuIGJveCBzaG91bGQgYmUg
b24gdG9wIG9mIHRoZSBtYWdlbnRhIG9uZS4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDozNTBweDsgbGVmdDo1MHB4OyB6LWlu
ZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiBtYWdlbnRhIj48L2Rpdj4KKyAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogOTBweDsgbGVmdDogMzBweDsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW4iPlRoaXMgaXMgcGFydCBvZiB0aGUgZ3JlZW4gZGlhbG9nLjwvZGl2PgorPC9kaXY+
Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDsg
cmlnaHQ6IDBweDsgaGVpZ2h0OiAyMDBlbTsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB6LWlu
ZGV4OjEwMDAiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L3RvcC1sYXllci1zdGFja2lu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4NzZjOTJkNWJlYmE5OTlkYzgwMjg3ODVlODI0MTVlMDkwZmI1
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0gVGhpcyB0ZXN0cyB0aGF0IHRvcCBsYXllciBlbGVtZW50cyBhcmUgcmVuZGVy
ZWQgYWJvdmUgei1pbmRleGVkIGVsZW1lbnRzCithbmQgc3RhY2tlZCBpbiB0aGUgY29ycmVjdCBv
cmRlciBhbW9uZ3N0IHRoZW1zZWx2ZXMuIEFsc28sIGxheWVyIGZlYXR1cmVzIGxpa2UKK3RyYW5z
Zm9ybXMgYW5kIHotaW5kZXggYXJlIHRlc3RlZCBpbnNpZGUgYSB0b3AgbGF5ZXIgZWxlbWVudCBz
dWJ0cmVlLiAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUp
OworPC9zY3JpcHQ+Cis8c3R5bGU+CisuYm94IHsKKyAgICBoZWlnaHQ6MTUwcHg7CisgICAgd2lk
dGg6MTUwcHg7Cit9CisuY29udGFpbmVyIHsKKyAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA1MDBw
eDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBt
YWdlbnRhOworfQorLnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRl
WSg0NWRlZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogY3lhbjsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaWFsb2cgaWQ9ImhpZGRlbkRpYWxvZyIgc3R5bGU9ImRpc3BsYXk6IG5v
bmU7IGNvbG9yOiByZWQiPlRoaXMgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuPC9kaWFsb2c+Cis8
ZGlhbG9nIGlkPSJ0b3BEaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsg
ei1pbmRleDogLTEwOyI+CisgICAgVGhpcyB3aGl0ZSBib3ggaXMgdGhlIHRvcG1vc3QgbW9kYWwg
ZGlhbG9nLiBJdCBzaG91bGQgYmUgb24gdG9wIG9mIGV2ZXJ5dGhpbmcuCis8L2RpYWxvZz4KKzxk
aXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IHotaW5kZXg6IDM7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgbGVmdDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMjAwcHg7Ij4KKyAg
ICA8ZGlhbG9nIGlkPSJib3R0b21EaWFsb2ciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiA3NSU7IGhlaWdodDogNDAw
cHg7Ij4KKyAgICAgICAgVGhpcyBncmVlbiBib3ggaXMgYWxzbyBhIG1vZGFsIGRpYWxvZy4gSXQg
c2hvdWxkIGJlIHJlbmRlcmVkIGFib3ZlIHRoZSByZWQgYW5kIHllbGxvdyByZWdpb25zLgorICAg
ICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgYm94Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRyYW5zZm9ybWVkIGJveCI+QSB0cmFuc2Zvcm0gd2l0aGluIHRoZSBkaWFsb2cncyBzdWJ0cmVl
LjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyB0b3A6MzAwcHg7IHotaW5kZXg6IDI7IGJhY2tncm91bmQtY29s
b3I6IGN5YW4iPgorICAgICAgICAgICAgVGhpcyBzaG93cyB6LWluZGV4IHN0YWNraW5nIHdpdGhp
biB0aGUgZGlhbG9nJ3Mgc3VidHJlZS4gVGhlIGN5YW4gYm94IHNob3VsZCBiZSBvbiB0b3Agb2Yg
dGhlIG1hZ2VudGEgb25lLgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6MzUwcHg7IGxlZnQ6NTBweDsgei1pbmRl
eDogMTsgYmFja2dyb3VuZC1jb2xvcjogbWFnZW50YSI+PC9kaXY+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiA5MHB4OyBsZWZ0OiAzMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbiI+VGhpcyBpcyBwYXJ0IG9mIHRoZSBncmVlbiBkaWFsb2cuPC9kaXY+CisgICAg
PC9kaWFsb2c+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAx
MDBweDsgbGVmdDogMHB4OyByaWdodDogMHB4OyBoZWlnaHQ6IDIwMGVtOyBiYWNrZ3JvdW5kLWNv
bG9yOiB5ZWxsb3c7IHotaW5kZXg6MTAwMCI+Cis8L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYm90dG9tRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndG9wRGlhbG9nJykuc2hvd01vZGFsKCk7Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaGlkZGVuRGlhbG9nJykuc2hvd01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435898</attachid>
            <date>2021-08-19 13:31:58 -0700</date>
            <delta_ts>2021-08-19 16:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84796-20210819223157.patch</filename>
            <type>text/plain</type>
            <size>7792</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlOTQ0YmFhZGY4MmFi
OWZiZDM3ZmRjZWFiMWUwYmVmNmQwNGE5Mi4uMmVkN2U1MmM2NDg0MzM2ODNkZGRlOTA0NWQ1YjNh
NzI1OTZkOWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA4LTE5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvcCBsYXllciBy
ZW5kZXJpbmcgYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFbmFibGVkIHJlbGV2YW50IFdQVHMuIFNvbWUgV1BUcyBuZWVkIGV4dHJhIGxheW91dCB3
b3JrLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xv
c2luZ0FuY2VzdG9yRm9yUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5oOgorCiAyMDIxLTA4LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBFbGVtZW50OjpjbGllbnRSZWN0KCkgd2hpY2gg
ZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUgaW4gd2ViLWV4cG9zZWQgImNsaWVudCIgY29vcmRpbmF0
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDhmYzYyNWQ2
MDg5NGM4MDYwZTBiYzg0NmMxNzhlYWFiZjEzMDBkZWUuLjk5NzExYjdmODE5NjUwZmM3ZjgyNzQy
ZmNhZGNmMDljNDE0MjhhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtNTU1LDcgKzU1NSw4IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29u
dGV4dChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc1Jl
ZmxlY3Rpb24oKQogICAgICAgICB8fCByZW5kZXJlci5zdHlsZSgpLmhhc0lzb2xhdGlvbigpCiAg
ICAgICAgIHx8ICFyZW5kZXJlci5zdHlsZSgpLmhhc0F1dG9Vc2VkWkluZGV4KCkKLSAgICAgICAg
fHwgKHJlbmRlcmVyLnN0eWxlKCkud2lsbENoYW5nZSgpICYmIHJlbmRlcmVyLnN0eWxlKCkud2ls
bENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKSk7CisgICAgICAgIHx8IChyZW5k
ZXJlci5zdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiByZW5kZXJlci5zdHlsZSgpLndpbGxDaGFuZ2Uo
KS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIHx8IGxheWVyLmVzdGFibGlz
aGVzVG9wTGF5ZXIoKTsKIH0KIAogc3RhdGljIHZvaWQgZXhwYW5kU2Nyb2xsUmVjdFRvVmlzaWJs
ZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKFJlbmRlckJveCogcmVuZGVyQm94LCBj
b25zdCBMYXlvdXRSZWN0JiB2aWV3UmVjdCwgTGF5b3V0UmVjdCYgdGFyZ2V0UmVjdCkKQEAgLTY0
Nyw2ICs2NDgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRQYXJlbnQoUmVuZGVyTGF5ZXIqIHBh
cmVudCkKIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25z
dAogeworICAgIGlmIChlc3RhYmxpc2hlc1RvcExheWVyKCkpCisgICAgICAgIHJldHVybiByZW5k
ZXJlcigpLnZpZXcoKS5sYXllcigpOworCiAgICAgYXV0byogbGF5ZXIgPSBwYXJlbnQoKTsKICAg
ICB3aGlsZSAobGF5ZXIgJiYgIWxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQogICAgICAgICBs
YXllciA9IGxheWVyLT5wYXJlbnQoKTsKQEAgLTc2MywxMiArNzY3LDMzIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4+JiBwb3NaCiAgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobmVnWk9yZGVyTGlzdC0+YmVn
aW4oKSwgbmVnWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwogICAgICAgICBuZWda
T3JkZXJMaXN0LT5zaHJpbmtUb0ZpdCgpOwogICAgIH0KKworICAgIGlmIChpc1JlbmRlclZpZXdM
YXllcigpKSB7CisgICAgICAgIGF1dG8gdG9wTGF5ZXJFbGVtZW50cyA9IHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS50b3BMYXllckVsZW1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IHRvcExheWVyRWxlbWVudHMpIHsKKyAgICAgICAgICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhdXRvIGJhY2tkcm9wUmVuZGVyZXIg
PSByZW5kZXJlci0+YmFja2Ryb3BSZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKGJhY2tkcm9w
UmVuZGVyZXIgJiYgYmFja2Ryb3BSZW5kZXJlci0+aGFzTGF5ZXIoKSkgeworICAgICAgICAgICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IGJhY2tkcm9wUmVuZGVyZXItPmxheWVyKCk7CisgICAg
ICAgICAgICAgICAgcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aGFzTGF5ZXIoKSkgeworICAgICAgICAgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCpy
ZW5kZXJlcikubGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQo
bGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBuZWdhdGl2ZVpPcmRlckxpc3QsIE9wdGlv
blNldDxDb21wb3NpdGluZz4mIGFjY3VtdWxhdGVkRGlydHlGbGFncykKIHsKICAgICB1cGRhdGVE
ZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAorICAgIGlmIChlc3RhYmxpc2hlc1RvcExheWVy
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGJvb2wgaXNTdGFja2luZyA9IGlzU3RhY2tpbmdD
b250ZXh0KCk7CiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFyZSBqdXN0IHBhaW50ZWQgYnkgdGhl
aXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBnZXQgcHV0IGluIHpvcmRlciBsaXN0
cy4KICAgICBib29sIGluY2x1ZGVIaWRkZW5MYXllciA9IGluY2x1ZGVIaWRkZW5MYXllcnMgfHwg
KG1faGFzVmlzaWJsZUNvbnRlbnQgfHwgKG1faGFzVmlzaWJsZURlc2NlbmRhbnQgJiYgaXNTdGFj
a2luZykpOwpAQCAtMTc3Niw2ICsxODAxLDkgQEAgYm9vbCBSZW5kZXJMYXllcjo6YW5jZXN0b3JM
YXllcklzSW5Db250YWluaW5nQmxvY2tDaGFpbihjb25zdCBSZW5kZXJMYXllciYgYW5jZXMKIAog
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBv
c2l0aW9uVHlwZSBwb3NpdGlvbikgY29uc3QKIHsKKyAgICBpZiAoZXN0YWJsaXNoZXNUb3BMYXll
cigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS52aWV3KCkubGF5ZXIoKTsKKwogICAgIFJl
bmRlckxheWVyKiBjdXJyID0gcGFyZW50KCk7CiAgICAgd2hpbGUgKGN1cnIgJiYgIWlzQ29udGFp
bmVyRm9yUG9zaXRpb25lZCgqY3VyciwgcG9zaXRpb24pKQogICAgICAgICBjdXJyID0gY3Vyci0+
cGFyZW50KCk7CkBAIC0zOTQyLDYgKzM5NzAsMTQgQEAgRWxlbWVudCogUmVuZGVyTGF5ZXI6OmVu
Y2xvc2luZ0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJl
bmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIXJlbmRl
cmVyKCkuZWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnN0eWxl
VHlwZSgpID09IFBzZXVkb0lkOjpCYWNrZHJvcDsKKworICAgIHJldHVybiByZW5kZXJlcigpLmVs
ZW1lbnQoKS0+aXNJblRvcExheWVyKCk7Cit9CisKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6
ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmNlc3RvcigpIGNvbnN0CiB7CiAgICAgUmVuZGVyTGF5
ZXIqIGN1cnIgPSBwYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggMmJiNjJjNWI4MDc1MGNhZmRjYzg3YWMzODFiNDVlOWJlNGQ0ZTg2Ni4uOTI0ZDlmMjk5
YTYwODMxZDIyYzhmYTQ4Nzk2N2I3Y2YxMGE3OTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTgxNiw2ICs4MTYsOCBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50
KiBlbmNsb3NpbmdFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBib29sIGVzdGFibGlzaGVzVG9wTGF5
ZXIoKSBjb25zdDsKKwogICAgIGVudW0gVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24gewogICAgICAgICBOb05vdENvbXBvc2l0ZWRSZWFzb24sCiAgICAgICAgIE5vdENvbXBv
c2l0ZWRGb3JCb3VuZHNPdXRPZlZpZXcsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDczZWM3N2ZhYTQ0YWEyNmJlMzE1MzNm
OTNhMmM3ZmU2MDQ1YTUwMC4uOWJhYjRmMTU1ZTc3Yjc3YzkwZDQ0ZWMxODE5ODk2ZTg2M2U0ZTA3
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA4LTE5ICBUaW0gTmd1eWVuICA8bnRpbUBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvcCBsYXllciByZW5kZXJpbmcgYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGVkIHJl
bGV2YW50IFdQVHMuIFNvbWUgV1BUcyBuZWVkIGV4dHJhIGxheW91dCB3b3JrLgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wOC0xOSAgRXJpYyBIdXRjaGlzb24gIDxlaHV0
Y2hpc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1IHdrMl0gc3RvcmFnZS9pbmRleGVk
ZGIvZG9udC13ZWRnZS1wcml2YXRlLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggYTg3OGE2Mjc0MzYxMzViMzAwOGQ1MTU4NDkwZmVkYWEyNTYxZmYwOS4uNjg1
MWQ5NjdlMDc5OTA4Mzg1MDVhZjUyMmFmZTRlMmFmNTg4YzU3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0yMzc0LDE0ICsyMzc0LDExIEBAIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvb3V0
bGluZXMtYXQtY29sdW1uLWJvdW5kYXJpZXMuaHRtbCBbIEltYWdlT25seUZhaWx1CiBmYXN0L211
bHRpY29sL211bHRpY29sLXdpdGgtY2hpbGQtcmVuZGVyTGF5ZXItZm9yLWlucHV0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUb3AgbGF5ZXIgdGVzdHMKLXdlYmtpdC5vcmcvYi84NDc5
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0
aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9iYWNrZHJvcC1zdGFja2luZy1vcmRlci5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90
aGUtZGlhbG9nLWVsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1k
aWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUtY29sdW1uLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxl
bWVudC9yZW1vdmVkLWVsZW1lbnQtaXMtcmVtb3ZlZC1mcm9tLXRvcC1sYXllci5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9n
LWVsZW1lbnQvdG9wLWxheWVyLWNvbnRhaW5pbmctYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3Rv
cC1sYXllci1uZXN0aW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84
NDc5NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVy
YWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmctY29y
cmVjdC1vcmRlci1yZW1vdmUtcmVhZGQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1keW5hbWljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0
aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItc3RhY2tpbmcuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogCiAjIGluZXJ0IHN1YnRyZWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435920</attachid>
            <date>2021-08-19 16:52:46 -0700</date>
            <delta_ts>2021-08-19 17:02:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84796-20210820015245.patch</filename>
            <type>text/plain</type>
            <size>10878</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlOTQ0YmFhZGY4MmFi
OWZiZDM3ZmRjZWFiMWUwYmVmNmQwNGE5Mi4uYzE5ZTNkNzJmZWI4NDYyMDliMDAzMTgwMjlmZjFj
YWVjODczY2MxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA4LTE5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvcCBsYXllciBy
ZW5kZXJpbmcgYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgRW5hYmxlZCByZWxldmFudCBXUFRzLiBTb21lIFdQVHMgbmVlZCBleHRyYSBsYXlvdXQgd29y
ay4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3Zl
RnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojppc0luVG9wTGF5ZXJDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyQ2hhbmdlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjEtMDgtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OmNsaWVudFJlY3Qo
KSB3aGljaCBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZSBpbiB3ZWItZXhwb3NlZCAiY2xpZW50IiBj
b29yZGluYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzE4MTAwNDNkYjNhOGY3NmZm
YWI2NDQwMmVlNzY4M2M5NmZjM2VkZi4uYjMzMDBiNzRkOGFhZjQxYTU5NTdmMzBiYTU2MzM1NDll
NDBhMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04NDY5LDE4ICs4NDY5LDI2IEBA
IFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9u
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvCiAKIHZvaWQgRG9jdW1lbnQ6OmFkZFRvVG9wTGF5ZXIo
RWxlbWVudCYgZWxlbWVudCkKIHsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKQorICAgICAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpLT5k
aXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CisgICAgfQorCiAgICAgLy8gVG8gYWRk
IGFuIGVsZW1lbnQgdG8gYSB0b3AgbGF5ZXIsIHJlbW92ZSBpdCBmcm9tIHRvcCBsYXllciBhbmQg
dGhlbiBhcHBlbmQgaXQgdG8gdG9wIGxheWVyLgogICAgIG1fdG9wTGF5ZXJFbGVtZW50cy5hcHBl
bmRPck1vdmVUb0xhc3QoZWxlbWVudCk7CiAKLSAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZSgp
OworICAgIGVsZW1lbnQuaXNJblRvcExheWVyQ2hhbmdlZCgpOwogfQogCiB2b2lkIERvY3VtZW50
OjpyZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCYgZWxlbWVudCkKIHsKKyAgICBpZiAocmVuZGVy
VmlldygpKQorICAgICAgICByZW5kZXJWaWV3KCktPmxheWVyKCktPmRpcnR5U3RhY2tpbmdDb250
ZXh0Wk9yZGVyTGlzdHMoKTsKKwogICAgIGlmICghbV90b3BMYXllckVsZW1lbnRzLnJlbW92ZShl
bGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGUo
KTsKKyAgICBlbGVtZW50LmlzSW5Ub3BMYXllckNoYW5nZWQoKTsKIH0KIAogSFRNTERpYWxvZ0Vs
ZW1lbnQqIERvY3VtZW50OjphY3RpdmVNb2RhbERpYWxvZygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggOGYzYmVjMjZkMWQ4ZGRmYWEyNGNiNjVmZTlmZTUyZDZlN2NhZjQ0OS4uZDUx
ODU1YmEzOTk3YjgwNjQ4MmIzZjY5ZDZjN2QzNzdiOGZiMzQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMzM1OCw2ICszMzU4LDE0IEBAIHZvaWQgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KCkKICAgICAgICAgY2hpbGQuYW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVu
KCk7CiB9CiAKK3ZvaWQgRWxlbWVudDo6aXNJblRvcExheWVyQ2hhbmdlZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPmhhc0xheWVyKCkp
CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcmVuZGVyZXIo
KSkubGF5ZXIoKS0+ZXN0YWJsaXNoZXNUb3BMYXllckNoYW5nZWQoKTsKKyAgICB9Cit9CisKIHN0
YXRpYyBQc2V1ZG9FbGVtZW50KiBiZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChjb25zdCBFbGVt
ZW50JiBob3N0LCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAgIHN3aXRj
aCAocHNldWRvRWxlbWVudFNwZWNpZmllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNTJjODIy
NzE0ZDQwMTc1NGJhZjdmNTBlNTMzOWNiMjhkZTJlMGIxMy4uMWM1ZTIwMzIyODJkNjIyNDM0NjI2
NjMyODEzN2Y0ZjYyZjJmMWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01MTIsNiArNTEyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9J
ZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogICAgIGJvb2wgaXNJ
blRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKS50b3BMYXllckVsZW1lbnRzKCku
Y29udGFpbnMobWFrZVJlZigqY29uc3RfY2FzdDxFbGVtZW50Kj4odGhpcykpKTsgfQorICAgIHZv
aWQgaXNJblRvcExheWVyQ2hhbmdlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGhhc05vZGVGbGFnKE5vZGVGbGFnOjpDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOGZjNjI1ZDYwODk0Yzgw
NjBlMGJjODQ2YzE3OGVhYWJmMTMwMGRlZS4uMGQ2MjA2NGE0ZjlkOWJmODMxMTA4YTFiNzcyMDFm
OGMyMzYzNWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC01NTUsNyArNTU1LDggQEAgc3RhdGljIGJvb2wgY2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KGNv
bnN0IFJlbmRlckxheWVyJiBsYXllcikKICAgICAgICAgfHwgcmVuZGVyZXIuaGFzUmVmbGVjdGlv
bigpCiAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxlKCkuaGFzSXNvbGF0aW9uKCkKICAgICAgICAg
fHwgIXJlbmRlcmVyLnN0eWxlKCkuaGFzQXV0b1VzZWRaSW5kZXgoKQotICAgICAgICB8fCAocmVu
ZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYgcmVuZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdl
KCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpKTsKKyAgICAgICAgfHwgKHJlbmRlcmVyLnN0
eWxlKCkud2lsbENoYW5nZSgpICYmIHJlbmRlcmVyLnN0eWxlKCkud2lsbENoYW5nZSgpLT5jYW5D
cmVhdGVTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgfHwgbGF5ZXIuZXN0YWJsaXNoZXNUb3BM
YXllcigpOwogfQogCiBzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0
UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoUmVuZGVyQm94KiByZW5kZXJCb3gsIGNvbnN0IExh
eW91dFJlY3QmIHZpZXdSZWN0LCBMYXlvdXRSZWN0JiB0YXJnZXRSZWN0KQpAQCAtNjQ3LDYgKzY0
OCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldFBhcmVudChSZW5kZXJMYXllciogcGFyZW50KQog
CiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiB7Cisg
ICAgaWYgKGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCku
dmlldygpLmxheWVyKCk7CisKICAgICBhdXRvKiBsYXllciA9IHBhcmVudCgpOwogICAgIHdoaWxl
IChsYXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCiAgICAgICAgIGxheWVyID0g
bGF5ZXItPnBhcmVudCgpOwpAQCAtNzYzLDEyICs3NjcsMzMgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cmVidWlsZFpPcmRlckxpc3RzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4m
IHBvc1oKICAgICAgICAgc3RkOjpzdGFibGVfc29ydChuZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBu
ZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAgICAgICAgIG5lZ1pPcmRlckxp
c3QtPnNocmlua1RvRml0KCk7CiAgICAgfQorCisgICAgaWYgKGlzUmVuZGVyVmlld0xheWVyKCkp
IHsKKyAgICAgICAgYXV0byB0b3BMYXllckVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgp
LnRvcExheWVyRWxlbWVudHMoKTsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogdG9wTGF5
ZXJFbGVtZW50cykgeworICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVt
ZW50LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BSZW5kZXJlciA9IHJlbmRl
cmVyLT5iYWNrZHJvcFJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoYmFja2Ryb3BSZW5kZXJl
ciAmJiBiYWNrZHJvcFJlbmRlcmVyLT5oYXNMYXllcigpKSB7CisgICAgICAgICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gYmFja2Ryb3BSZW5kZXJlci0+bGF5ZXIoKTsKKyAgICAgICAgICAg
ICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVy
KS5sYXllcigpOworICAgICAgICAgICAgICAgIHBvc1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6
OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFJlbmRlckxheWVyKj4+JiBwb3NpdGl2ZVpPcmRlckxpc3QsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5lZ2F0aXZlWk9yZGVyTGlzdCwgT3B0aW9uU2V0PENv
bXBvc2l0aW5nPiYgYWNjdW11bGF0ZWREaXJ0eUZsYWdzKQogewogICAgIHVwZGF0ZURlc2NlbmRh
bnREZXBlbmRlbnRGbGFncygpOwogCisgICAgaWYgKGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgYm9vbCBpc1N0YWNraW5nID0gaXNTdGFja2luZ0NvbnRleHQo
KTsKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3QgcGFpbnRlZCBieSB0aGVpciBlbmNs
b3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQgaW4gem9yZGVyIGxpc3RzLgogICAg
IGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVkZUhpZGRlbkxheWVycyB8fCAobV9oYXNW
aXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiBpc1N0YWNraW5nKSk7
CkBAIC0xNzc2LDYgKzE4MDEsOSBAQCBib29sIFJlbmRlckxheWVyOjphbmNlc3RvckxheWVySXNJ
bkNvbnRhaW5pbmdCbG9ja0NoYWluKGNvbnN0IFJlbmRlckxheWVyJiBhbmNlcwogCiBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0FuY2VzdG9yRm9yUG9zaXRpb24oUG9zaXRpb25U
eXBlIHBvc2l0aW9uKSBjb25zdAogeworICAgIGlmIChlc3RhYmxpc2hlc1RvcExheWVyKCkpCisg
ICAgICAgIHJldHVybiByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpOworCiAgICAgUmVuZGVyTGF5
ZXIqIGN1cnIgPSBwYXJlbnQoKTsKICAgICB3aGlsZSAoY3VyciAmJiAhaXNDb250YWluZXJGb3JQ
b3NpdGlvbmVkKCpjdXJyLCBwb3NpdGlvbikpCiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQo
KTsKQEAgLTM5NDIsNiArMzk3MCwyMSBAQCBFbGVtZW50KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5
ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKS5l
bGVtZW50KCkpCisgICAgICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkJhY2tkcm9wOworCisgICAgcmV0dXJuIHJlbmRlcmVyKCkuZWxlbWVudCgp
LT5pc0luVG9wTGF5ZXIoKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6ZXN0YWJsaXNoZXNUb3BM
YXllckNoYW5nZWQoKQoreworICAgIEFTU0VSVChpc1N0YWNraW5nQ29udGV4dCgpLCAiVG9wIGxh
eWVyIGVsZW1lbnRzIHNob3VsZCBiZSBzdGFja2luZyBjb250ZXh0cyIpOworICAgIGRpcnR5U3Rh
Y2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKKyAgICBkaXJ0eVpPcmRlckxpc3RzKCk7Cit9CisK
IFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmNlc3Rv
cigpIGNvbnN0CiB7CiAgICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSBwYXJlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMmJiNjJjNWI4MDc1MGNhZmRjYzg3YWMz
ODFiNDVlOWJlNGQ0ZTg2Ni4uNWVhNzI5Mzc3MjNiMGMxM2UwOWE0MDFiMzU0NzhlMjk5YWI2MTIw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTgxNiw2ICs4MTYs
OSBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBlbmNsb3NpbmdFbGVtZW50KCkgY29uc3Q7CiAK
KyAgICBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdDsKKyAgICB2b2lkIGVzdGFibGlz
aGVzVG9wTGF5ZXJDaGFuZ2VkKCk7CisKICAgICBlbnVtIFZpZXdwb3J0Q29uc3RyYWluZWROb3RD
b21wb3NpdGVkUmVhc29uIHsKICAgICAgICAgTm9Ob3RDb21wb3NpdGVkUmVhc29uLAogICAgICAg
ICBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0T2ZWaWV3LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA3M2VjNzdmYWE0NGFh
MjZiZTMxNTMzZjkzYTJjN2ZlNjA0NWE1MDAuLmM0NjkyM2MyNTEzMTRhZWExZThjNGJkM2U3MGYx
ZTY4NDFjNThkMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0xOSAgVGltIE5ndXll
biAgPG50aW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0b3AgbGF5ZXIgcmVuZGVy
aW5nIGJpdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEVu
YWJsZWQgcmVsZXZhbnQgV1BUcy4gU29tZSBXUFRzIG5lZWQgZXh0cmEgbGF5b3V0IHdvcmsuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTA4LTE5ICBFcmljIEh1dGNoaXNv
biAgPGVodXRjaGlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUgd2syXSBzdG9yYWdl
L2luZGV4ZWRkYi9kb250LXdlZGdlLXByaXZhdGUuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhODc4YTYyNzQzNjEzNWIzMDA4ZDUxNTg0OTBmZWRhYTI1NjFm
ZjA5Li5hY2M4OTJlMzYwZTQzYTQzYjM2YzJiN2U0NDg1ZTI3M2FmYzE5YjUzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIzNzQsMTQgKzIzNzQsMTAgQEAgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0
aWNvbC9vdXRsaW5lcy1hdC1jb2x1bW4tYm91bmRhcmllcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHUK
IGZhc3QvbXVsdGljb2wvbXVsdGljb2wtd2l0aC1jaGlsZC1yZW5kZXJMYXllci1mb3ItaW5wdXQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRvcCBsYXllciB0ZXN0cwotd2Via2l0Lm9y
Zy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
aW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2JhY2tkcm9wLXN0YWNraW5n
LW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVs
ZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVu
dHMvdGhlLWRpYWxvZy1lbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1jb2x1bW4uaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRp
YWxvZy1lbGVtZW50L3JlbW92ZWQtZWxlbWVudC1pcy1yZW1vdmVkLWZyb20tdG9wLWxheWVyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3Ro
ZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVs
ZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1jb3JyZWN0LW9yZGVyLXJlbW92ZS1yZWFkZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxh
eWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
aW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1zdGFja2lu
Zy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgaW5lcnQgc3VidHJlZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435925</attachid>
            <date>2021-08-19 17:02:09 -0700</date>
            <delta_ts>2021-08-19 17:27:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84796-20210820020208.patch</filename>
            <type>text/plain</type>
            <size>10902</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlOTQ0YmFhZGY4MmFi
OWZiZDM3ZmRjZWFiMWUwYmVmNmQwNGE5Mi4uYzE5ZTNkNzJmZWI4NDYyMDliMDAzMTgwMjlmZjFj
YWVjODczY2MxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA4LTE5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvcCBsYXllciBy
ZW5kZXJpbmcgYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgRW5hYmxlZCByZWxldmFudCBXUFRzLiBTb21lIFdQVHMgbmVlZCBleHRyYSBsYXlvdXQgd29y
ay4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3Zl
RnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojppc0luVG9wTGF5ZXJDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyQ2hhbmdlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjEtMDgtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OmNsaWVudFJlY3Qo
KSB3aGljaCBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZSBpbiB3ZWItZXhwb3NlZCAiY2xpZW50IiBj
b29yZGluYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzE4MTAwNDNkYjNhOGY3NmZm
YWI2NDQwMmVlNzY4M2M5NmZjM2VkZi4uYjMzMDBiNzRkOGFhZjQxYTU5NTdmMzBiYTU2MzM1NDll
NDBhMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04NDY5LDE4ICs4NDY5LDI2IEBA
IFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9u
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvCiAKIHZvaWQgRG9jdW1lbnQ6OmFkZFRvVG9wTGF5ZXIo
RWxlbWVudCYgZWxlbWVudCkKIHsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKQorICAgICAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpLT5k
aXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CisgICAgfQorCiAgICAgLy8gVG8gYWRk
IGFuIGVsZW1lbnQgdG8gYSB0b3AgbGF5ZXIsIHJlbW92ZSBpdCBmcm9tIHRvcCBsYXllciBhbmQg
dGhlbiBhcHBlbmQgaXQgdG8gdG9wIGxheWVyLgogICAgIG1fdG9wTGF5ZXJFbGVtZW50cy5hcHBl
bmRPck1vdmVUb0xhc3QoZWxlbWVudCk7CiAKLSAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZSgp
OworICAgIGVsZW1lbnQuaXNJblRvcExheWVyQ2hhbmdlZCgpOwogfQogCiB2b2lkIERvY3VtZW50
OjpyZW1vdmVGcm9tVG9wTGF5ZXIoRWxlbWVudCYgZWxlbWVudCkKIHsKKyAgICBpZiAocmVuZGVy
VmlldygpKQorICAgICAgICByZW5kZXJWaWV3KCktPmxheWVyKCktPmRpcnR5U3RhY2tpbmdDb250
ZXh0Wk9yZGVyTGlzdHMoKTsKKwogICAgIGlmICghbV90b3BMYXllckVsZW1lbnRzLnJlbW92ZShl
bGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGUo
KTsKKyAgICBlbGVtZW50LmlzSW5Ub3BMYXllckNoYW5nZWQoKTsKIH0KIAogSFRNTERpYWxvZ0Vs
ZW1lbnQqIERvY3VtZW50OjphY3RpdmVNb2RhbERpYWxvZygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggOGYzYmVjMjZkMWQ4ZGRmYWEyNGNiNjVmZTlmZTUyZDZlN2NhZjQ0OS4uZTJh
MzhlZDc2MzAxNmE4OTdiZWI3YTJkMmY3NjdlODI5Y2U5MDdkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMzM1OCw2ICszMzU4LDE1IEBAIHZvaWQgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KCkKICAgICAgICAgY2hpbGQuYW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVu
KCk7CiB9CiAKK3ZvaWQgRWxlbWVudDo6aXNJblRvcExheWVyQ2hhbmdlZCgpIGNvbnN0Cit7Cisg
ICAgaW52YWxpZGF0ZVN0eWxlKCk7CisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCktPmhhc0xheWVyKCkpCisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJMYXll
ck1vZGVsT2JqZWN0PigqcmVuZGVyZXIoKSkubGF5ZXIoKS0+ZXN0YWJsaXNoZXNUb3BMYXllckNo
YW5nZWQoKTsKKyAgICB9Cit9CisKIHN0YXRpYyBQc2V1ZG9FbGVtZW50KiBiZWZvcmVPckFmdGVy
UHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50JiBob3N0LCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKQogewogICAgIHN3aXRjaCAocHNldWRvRWxlbWVudFNwZWNpZmllcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggNTJjODIyNzE0ZDQwMTc1NGJhZjdmNTBlNTMzOWNiMjhkZTJlMGIx
My4uMWM1ZTIwMzIyODJkNjIyNDM0NjI2NjMyODEzN2Y0ZjYyZjJmMWM2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC01MTIsNiArNTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxl
Q2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0
eWxlPiYmKTsKIAogICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gZG9jdW1l
bnQoKS50b3BMYXllckVsZW1lbnRzKCkuY29udGFpbnMobWFrZVJlZigqY29uc3RfY2FzdDxFbGVt
ZW50Kj4odGhpcykpKTsgfQorICAgIHZvaWQgaXNJblRvcExheWVyQ2hhbmdlZCgpIGNvbnN0Owog
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpDb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggOGZjNjI1ZDYwODk0YzgwNjBlMGJjODQ2YzE3OGVhYWJmMTMwMGRlZS4uMGQ2MjA2
NGE0ZjlkOWJmODMxMTA4YTFiNzcyMDFmOGMyMzYzNWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01NTUsNyArNTU1LDggQEAgc3RhdGljIGJvb2wgY2Fu
Q3JlYXRlU3RhY2tpbmdDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKICAgICAgICAg
fHwgcmVuZGVyZXIuaGFzUmVmbGVjdGlvbigpCiAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxlKCku
aGFzSXNvbGF0aW9uKCkKICAgICAgICAgfHwgIXJlbmRlcmVyLnN0eWxlKCkuaGFzQXV0b1VzZWRa
SW5kZXgoKQotICAgICAgICB8fCAocmVuZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYgcmVu
ZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdlKCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpKTsK
KyAgICAgICAgfHwgKHJlbmRlcmVyLnN0eWxlKCkud2lsbENoYW5nZSgpICYmIHJlbmRlcmVyLnN0
eWxlKCkud2lsbENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAg
fHwgbGF5ZXIuZXN0YWJsaXNoZXNUb3BMYXllcigpOwogfQogCiBzdGF0aWMgdm9pZCBleHBhbmRT
Y3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoUmVuZGVy
Qm94KiByZW5kZXJCb3gsIGNvbnN0IExheW91dFJlY3QmIHZpZXdSZWN0LCBMYXlvdXRSZWN0JiB0
YXJnZXRSZWN0KQpAQCAtNjQ3LDYgKzY0OCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldFBhcmVu
dChSZW5kZXJMYXllciogcGFyZW50KQogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0YWNr
aW5nQ29udGV4dCgpIGNvbnN0CiB7CisgICAgaWYgKGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkKKyAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudmlldygpLmxheWVyKCk7CisKICAgICBhdXRvKiBsYXll
ciA9IHBhcmVudCgpOwogICAgIHdoaWxlIChsYXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250
ZXh0KCkpCiAgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwpAQCAtNzYzLDEyICs3Njcs
MzMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIHBvc1oKICAgICAgICAgc3RkOjpzdGFibGVfc29ydChu
ZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBuZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRl
eCk7CiAgICAgICAgIG5lZ1pPcmRlckxpc3QtPnNocmlua1RvRml0KCk7CiAgICAgfQorCisgICAg
aWYgKGlzUmVuZGVyVmlld0xheWVyKCkpIHsKKyAgICAgICAgYXV0byB0b3BMYXllckVsZW1lbnRz
ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLnRvcExheWVyRWxlbWVudHMoKTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogdG9wTGF5ZXJFbGVtZW50cykgeworICAgICAgICAgICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8g
YmFja2Ryb3BSZW5kZXJlciA9IHJlbmRlcmVyLT5iYWNrZHJvcFJlbmRlcmVyKCk7CisgICAgICAg
ICAgICBpZiAoYmFja2Ryb3BSZW5kZXJlciAmJiBiYWNrZHJvcFJlbmRlcmVyLT5oYXNMYXllcigp
KSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gYmFja2Ryb3BSZW5kZXJl
ci0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKSB7
CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5
ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpOworICAgICAgICAgICAgICAgIHBvc1pP
cmRlckxpc3QtPmFwcGVuZChsYXllcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVu
TGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBwb3NpdGl2ZVpP
cmRlckxpc3QsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5lZ2F0aXZl
Wk9yZGVyTGlzdCwgT3B0aW9uU2V0PENvbXBvc2l0aW5nPiYgYWNjdW11bGF0ZWREaXJ0eUZsYWdz
KQogewogICAgIHVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwogCisgICAgaWYgKGVz
dGFibGlzaGVzVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYm9vbCBpc1N0YWNr
aW5nID0gaXNTdGFja2luZ0NvbnRleHQoKTsKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1
c3QgcGFpbnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBw
dXQgaW4gem9yZGVyIGxpc3RzLgogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVk
ZUhpZGRlbkxheWVycyB8fCAobV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVz
Y2VuZGFudCAmJiBpc1N0YWNraW5nKSk7CkBAIC0xNzc2LDYgKzE4MDEsOSBAQCBib29sIFJlbmRl
ckxheWVyOjphbmNlc3RvckxheWVySXNJbkNvbnRhaW5pbmdCbG9ja0NoYWluKGNvbnN0IFJlbmRl
ckxheWVyJiBhbmNlcwogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0FuY2Vz
dG9yRm9yUG9zaXRpb24oUG9zaXRpb25UeXBlIHBvc2l0aW9uKSBjb25zdAogeworICAgIGlmIChl
c3RhYmxpc2hlc1RvcExheWVyKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlcigpLnZpZXcoKS5s
YXllcigpOworCiAgICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSBwYXJlbnQoKTsKICAgICB3aGlsZSAo
Y3VyciAmJiAhaXNDb250YWluZXJGb3JQb3NpdGlvbmVkKCpjdXJyLCBwb3NpdGlvbikpCiAgICAg
ICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKQEAgLTM5NDIsNiArMzk3MCwyMSBAQCBFbGVtZW50
KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdAor
eworICAgIGlmICghcmVuZGVyZXIoKS5lbGVtZW50KCkpCisgICAgICAgIHJldHVybiByZW5kZXJl
cigpLnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkJhY2tkcm9wOworCisgICAgcmV0
dXJuIHJlbmRlcmVyKCkuZWxlbWVudCgpLT5pc0luVG9wTGF5ZXIoKTsKK30KKwordm9pZCBSZW5k
ZXJMYXllcjo6ZXN0YWJsaXNoZXNUb3BMYXllckNoYW5nZWQoKQoreworICAgIEFTU0VSVChpc1N0
YWNraW5nQ29udGV4dCgpLCAiVG9wIGxheWVyIGVsZW1lbnRzIHNob3VsZCBiZSBzdGFja2luZyBj
b250ZXh0cyIpOworICAgIGRpcnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKKyAgICBk
aXJ0eVpPcmRlckxpc3RzKCk7Cit9CisKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3dBbmNlc3RvcigpIGNvbnN0CiB7CiAgICAgUmVuZGVyTGF5ZXIqIGN1
cnIgPSBwYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
MmJiNjJjNWI4MDc1MGNhZmRjYzg3YWMzODFiNDVlOWJlNGQ0ZTg2Ni4uNWVhNzI5Mzc3MjNiMGMx
M2UwOWE0MDFiMzU0NzhlMjk5YWI2MTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKQEAgLTgxNiw2ICs4MTYsOSBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBlbmNs
b3NpbmdFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBj
b25zdDsKKyAgICB2b2lkIGVzdGFibGlzaGVzVG9wTGF5ZXJDaGFuZ2VkKCk7CisKICAgICBlbnVt
IFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIHsKICAgICAgICAgTm9Ob3RD
b21wb3NpdGVkUmVhc29uLAogICAgICAgICBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0T2ZWaWV3
LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDA3M2VjNzdmYWE0NGFhMjZiZTMxNTMzZjkzYTJjN2ZlNjA0NWE1MDAuLmM0Njky
M2MyNTEzMTRhZWExZThjNGJkM2U3MGYxZTY4NDFjNThkMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wOC0xOSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB0b3AgbGF5ZXIgcmVuZGVyaW5nIGJpdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgIEVuYWJsZWQgcmVsZXZhbnQgV1BUcy4gU29tZSBXUFRzIG5l
ZWQgZXh0cmEgbGF5b3V0IHdvcmsuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIxLTA4LTE5ICBFcmljIEh1dGNoaXNvbiAgPGVodXRjaGlzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1MgMTUgd2syXSBzdG9yYWdlL2luZGV4ZWRkYi9kb250LXdlZGdlLXByaXZhdGUuaHRt
bCBpcyBhIGZsYWt5IGZhaWx1cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhODc4YTYyNzQzNjEz
NWIzMDA4ZDUxNTg0OTBmZWRhYTI1NjFmZjA5Li5hY2M4OTJlMzYwZTQzYTQzYjM2YzJiN2U0NDg1
ZTI3M2FmYzE5YjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzNzQsMTQgKzIzNzQsMTAgQEAg
aW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC9vdXRsaW5lcy1hdC1jb2x1bW4tYm91bmRhcmll
cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIGZhc3QvbXVsdGljb2wvbXVsdGljb2wtd2l0aC1jaGls
ZC1yZW5kZXJMYXllci1mb3ItaW5wdXQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRv
cCBsYXllciB0ZXN0cwotd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1l
bGVtZW50L2JhY2tkcm9wLXN0YWNraW5nLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi84NDc5NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9tb2RhbC1k
aWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L21vZGFsLWRpYWxv
Zy1pbi10YWJsZS1jb2x1bW4uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50
ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3JlbW92ZWQtZWxlbWVudC1pcy1y
ZW1vdmVkLWZyb20tdG9wLWxheWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi84NDc5NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItY29udGFp
bmluZy1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvODQ3OTYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2
ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxv
Zy1lbGVtZW50L3RvcC1sYXllci1zdGFja2luZy1jb3JyZWN0LW9yZGVyLXJlbW92ZS1yZWFkZC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90
aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxheWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1l
bGVtZW50L3RvcC1sYXllci1zdGFja2luZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMg
aW5lcnQgc3VidHJlZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435929</attachid>
            <date>2021-08-19 17:27:38 -0700</date>
            <delta_ts>2021-08-19 23:20:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84796-20210820022736.patch</filename>
            <type>text/plain</type>
            <size>11163</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlOTQ0YmFhZGY4MmFi
OWZiZDM3ZmRjZWFiMWUwYmVmNmQwNGE5Mi4uOTI4Mjg0NGEzNzA0YWU4NjhmYjhmZjExMDVmNmEw
ZTFkMjIxMGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA4LTE5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvcCBsYXllciBy
ZW5kZXJpbmcgYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQ3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgRW5hYmxlZCByZWxldmFudCBXUFRzLiBTb21lIFdQVHMgbmVlZCBleHRyYSBsYXlvdXQgd29y
ay4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6YWRkVG9Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3Zl
RnJvbVRvcExheWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojppc0luVG9wTGF5ZXJXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmlzSW5Ub3BMYXllckRpZENoYW5nZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzdGFja2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
QW5jZXN0b3JGb3JQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6ZXN0YWJsaXNoZXNUb3BMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZXN0YWJsaXNoZXNUb3BMYXllcldpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTA4LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBFbGVtZW50OjpjbGllbnRSZWN0
KCkgd2hpY2ggZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUgaW4gd2ViLWV4cG9zZWQgImNsaWVudCIg
Y29vcmRpbmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDcxODEwMDQzZGIzYThmNzZm
ZmFiNjQ0MDJlZTc2ODNjOTZmYzNlZGYuLjY1Y2ZiZjhiNzk1ZDYzZDNjOTk5ZDAxZDliMzg0YjIw
NTAwOWQ0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQ2OSwxOCArODQ2OSwyMiBA
QCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IERvY3VtZW50OjptYXRjaGluZ0FuaW1hdGlv
bnMoY29uc3QgV1RGOjpGdW5jdGlvbjxibwogCiB2b2lkIERvY3VtZW50OjphZGRUb1RvcExheWVy
KEVsZW1lbnQmIGVsZW1lbnQpCiB7CisgICAgZWxlbWVudC5pc0luVG9wTGF5ZXJXaWxsQ2hhbmdl
KCk7CisKICAgICAvLyBUbyBhZGQgYW4gZWxlbWVudCB0byBhIHRvcCBsYXllciwgcmVtb3ZlIGl0
IGZyb20gdG9wIGxheWVyIGFuZCB0aGVuIGFwcGVuZCBpdCB0byB0b3AgbGF5ZXIuCiAgICAgbV90
b3BMYXllckVsZW1lbnRzLmFwcGVuZE9yTW92ZVRvTGFzdChlbGVtZW50KTsKIAotICAgIGVsZW1l
bnQuaW52YWxpZGF0ZVN0eWxlKCk7CisgICAgZWxlbWVudC5pc0luVG9wTGF5ZXJEaWRDaGFuZ2Uo
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQmIGVsZW1l
bnQpCiB7CisgICAgZWxlbWVudC5pc0luVG9wTGF5ZXJXaWxsQ2hhbmdlKCk7CisKICAgICBpZiAo
IW1fdG9wTGF5ZXJFbGVtZW50cy5yZW1vdmUoZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7CisgICAgZWxlbWVudC5pc0luVG9wTGF5ZXJE
aWRDaGFuZ2UoKTsKIH0KIAogSFRNTERpYWxvZ0VsZW1lbnQqIERvY3VtZW50OjphY3RpdmVNb2Rh
bERpYWxvZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOGYzYmVjMjZkMWQ4ZGRm
YWEyNGNiNjVmZTlmZTUyZDZlN2NhZjQ0OS4uZjQxNTRhMWRkYjZmMjBkNGViMTE0MTljYmQ0YWJj
MjU2Zjk5MjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzM1OCw2ICszMzU4LDI0IEBA
IHZvaWQgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKICAgICAgICAgY2hp
bGQuYW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVuKCk7CiB9CiAKK3ZvaWQgRWxlbWVudDo6aXNJ
blRvcExheWVyV2lsbENoYW5nZSgpCit7CisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAg
aWYgKHJlbmRlcmVyKCktPmhhc0xheWVyKCkpCisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJM
YXllck1vZGVsT2JqZWN0PigqcmVuZGVyZXIoKSkubGF5ZXIoKS0+ZXN0YWJsaXNoZXNUb3BMYXll
cldpbGxDaGFuZ2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgRWxlbWVudDo6aXNJblRvcExheWVyRGlk
Q2hhbmdlKCkKK3sKKyAgICBpbnZhbGlkYXRlU3R5bGUoKTsKKworICAgIGlmIChyZW5kZXJlcigp
KSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLT5oYXNMYXllcigpKQorICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVyKCkpLmxheWVyKCktPmVzdGFi
bGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UoKTsKKyAgICB9Cit9CisKIHN0YXRpYyBQc2V1ZG9FbGVt
ZW50KiBiZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50JiBob3N0LCBQc2V1
ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAgIHN3aXRjaCAocHNldWRvRWxlbWVu
dFNwZWNpZmllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNTJjODIyNzE0ZDQwMTc1NGJhZjdm
NTBlNTMzOWNiMjhkZTJlMGIxMy4uOTQ4ZTBkNjExMTIwMmM4ZmY1YmU3MjczM2E3NmM5YTBiZDZh
N2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01MTIsNiArNTEyLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3RkOjp1bmlxdWVf
cHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29u
c3QgeyByZXR1cm4gZG9jdW1lbnQoKS50b3BMYXllckVsZW1lbnRzKCkuY29udGFpbnMobWFrZVJl
ZigqY29uc3RfY2FzdDxFbGVtZW50Kj4odGhpcykpKTsgfQorICAgIHZvaWQgaXNJblRvcExheWVy
V2lsbENoYW5nZSgpOworICAgIHZvaWQgaXNJblRvcExheWVyRGlkQ2hhbmdlKCk7CiAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OkNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA4ZmM2MjVkNjA4OTRjODA2MGUwYmM4NDZjMTc4ZWFhYmYxMzAwZGVlLi41ZTZkM2JlZmI3MTE2
ZTgyMjMyMDEyMDYzZTg1NzdjOWU2Mjg3MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTU1NSw3ICs1NTUsOCBAQCBzdGF0aWMgYm9vbCBjYW5DcmVhdGVT
dGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogICAgICAgICB8fCByZW5k
ZXJlci5oYXNSZWZsZWN0aW9uKCkKICAgICAgICAgfHwgcmVuZGVyZXIuc3R5bGUoKS5oYXNJc29s
YXRpb24oKQogICAgICAgICB8fCAhcmVuZGVyZXIuc3R5bGUoKS5oYXNBdXRvVXNlZFpJbmRleCgp
Ci0gICAgICAgIHx8IChyZW5kZXJlci5zdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiByZW5kZXJlci5z
dHlsZSgpLndpbGxDaGFuZ2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCkpOworICAgICAg
ICB8fCAocmVuZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYgcmVuZGVyZXIuc3R5bGUoKS53
aWxsQ2hhbmdlKCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpKQorICAgICAgICB8fCBsYXll
ci5lc3RhYmxpc2hlc1RvcExheWVyKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGV4cGFuZFNjcm9sbFJl
Y3RUb1Zpc2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyhSZW5kZXJCb3gqIHJl
bmRlckJveCwgY29uc3QgTGF5b3V0UmVjdCYgdmlld1JlY3QsIExheW91dFJlY3QmIHRhcmdldFJl
Y3QpCkBAIC02NDcsNiArNjQ4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0UGFyZW50KFJlbmRl
ckxheWVyKiBwYXJlbnQpCiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250
ZXh0KCkgY29uc3QKIHsKKyAgICBpZiAoZXN0YWJsaXNoZXNUb3BMYXllcigpKQorICAgICAgICBy
ZXR1cm4gcmVuZGVyZXIoKS52aWV3KCkubGF5ZXIoKTsKKwogICAgIGF1dG8qIGxheWVyID0gcGFy
ZW50KCk7CiAgICAgd2hpbGUgKGxheWVyICYmICFsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkK
ICAgICAgICAgbGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CkBAIC03NjMsMTIgKzc2NywzMyBAQCB2
b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxSZW5kZXJMYXllcio+PiYgcG9zWgogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG5lZ1pPcmRl
ckxpc3QtPmJlZ2luKCksIG5lZ1pPcmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKICAg
ICAgICAgbmVnWk9yZGVyTGlzdC0+c2hyaW5rVG9GaXQoKTsKICAgICB9CisKKyAgICBpZiAoaXNS
ZW5kZXJWaWV3TGF5ZXIoKSkgeworICAgICAgICBhdXRvIHRvcExheWVyRWxlbWVudHMgPSByZW5k
ZXJlcigpLmRvY3VtZW50KCkudG9wTGF5ZXJFbGVtZW50cygpOworICAgICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiB0b3BMYXllckVsZW1lbnRzKSB7CisgICAgICAgICAgICBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoIXJlbmRl
cmVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byBiYWNrZHJv
cFJlbmRlcmVyID0gcmVuZGVyZXItPmJhY2tkcm9wUmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlm
IChiYWNrZHJvcFJlbmRlcmVyICYmIGJhY2tkcm9wUmVuZGVyZXItPmhhc0xheWVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBiYWNrZHJvcFJlbmRlcmVyLT5sYXll
cigpOworICAgICAgICAgICAgICAgIHBvc1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKKyAgICAg
ICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVs
T2JqZWN0PigqcmVuZGVyZXIpLmxheWVyKCk7CisgICAgICAgICAgICAgICAgcG9zWk9yZGVyTGlz
dC0+YXBwZW5kKGxheWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMs
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIHBvc2l0aXZlWk9yZGVyTGlz
dCwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgbmVnYXRpdmVaT3JkZXJM
aXN0LCBPcHRpb25TZXQ8Q29tcG9zaXRpbmc+JiBhY2N1bXVsYXRlZERpcnR5RmxhZ3MpCiB7CiAg
ICAgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CiAKKyAgICBpZiAoZXN0YWJsaXNo
ZXNUb3BMYXllcigpKQorICAgICAgICByZXR1cm47CisKICAgICBib29sIGlzU3RhY2tpbmcgPSBp
c1N0YWNraW5nQ29udGV4dCgpOwogICAgIC8vIE92ZXJmbG93IGxheWVycyBhcmUganVzdCBwYWlu
dGVkIGJ5IHRoZWlyIGVuY2xvc2luZyBsYXllcnMsIHNvIHRoZXkgZG9uJ3QgZ2V0IHB1dCBpbiB6
b3JkZXIgbGlzdHMuCiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXIgPSBpbmNsdWRlSGlkZGVu
TGF5ZXJzIHx8IChtX2hhc1Zpc2libGVDb250ZW50IHx8IChtX2hhc1Zpc2libGVEZXNjZW5kYW50
ICYmIGlzU3RhY2tpbmcpKTsKQEAgLTE3NzYsNiArMTgwMSw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6
OmFuY2VzdG9yTGF5ZXJJc0luQ29udGFpbmluZ0Jsb2NrQ2hhaW4oY29uc3QgUmVuZGVyTGF5ZXIm
IGFuY2VzCiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JGb3JQ
b3NpdGlvbihQb3NpdGlvblR5cGUgcG9zaXRpb24pIGNvbnN0CiB7CisgICAgaWYgKGVzdGFibGlz
aGVzVG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudmlldygpLmxheWVyKCk7
CisKICAgICBSZW5kZXJMYXllciogY3VyciA9IHBhcmVudCgpOwogICAgIHdoaWxlIChjdXJyICYm
ICFpc0NvbnRhaW5lckZvclBvc2l0aW9uZWQoKmN1cnIsIHBvc2l0aW9uKSkKICAgICAgICAgY3Vy
ciA9IGN1cnItPnBhcmVudCgpOwpAQCAtMzk0Miw2ICszOTcwLDI2IEBAIEVsZW1lbnQqIFJlbmRl
ckxheWVyOjplbmNsb3NpbmdFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAorYm9vbCBSZW5kZXJMYXllcjo6ZXN0YWJsaXNoZXNUb3BMYXllcigpIGNvbnN0Cit7CisgICAg
aWYgKCFyZW5kZXJlcigpLmVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5
bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6QmFja2Ryb3A7CisKKyAgICByZXR1cm4gcmVu
ZGVyZXIoKS5lbGVtZW50KCktPmlzSW5Ub3BMYXllcigpOworfQorCit2b2lkIFJlbmRlckxheWVy
Ojplc3RhYmxpc2hlc1RvcExheWVyV2lsbENoYW5nZSgpCit7CisgICAgZGlydHlTdGFja2luZ0Nv
bnRleHRaT3JkZXJMaXN0cygpOworfQorCit2b2lkIFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1Rv
cExheWVyRGlkQ2hhbmdlKCkKK3sKKyAgICBkaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3Rz
KCk7CisgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIGRpcnR5Wk9yZGVyTGlz
dHMoKTsKK30KKwogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdGcmFnbWVudGVk
Rmxvd0FuY2VzdG9yKCkgY29uc3QKIHsKICAgICBSZW5kZXJMYXllciogY3VyciA9IHBhcmVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAyYmI2MmM1YjgwNzUw
Y2FmZGNjODdhYzM4MWI0NWU5YmU0ZDRlODY2Li4xNGIwMWQ2MDUyZmEyN2NiMmMzNTY2MWMwMmVk
ZDdiODM5ZGFiMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
ODE2LDYgKzgxNiwxMCBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBlbmNsb3NpbmdFbGVtZW50
KCkgY29uc3Q7CiAKKyAgICBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdDsKKyAgICB2
b2lkIGVzdGFibGlzaGVzVG9wTGF5ZXJXaWxsQ2hhbmdlKCk7CisgICAgdm9pZCBlc3RhYmxpc2hl
c1RvcExheWVyRGlkQ2hhbmdlKCk7CisKICAgICBlbnVtIFZpZXdwb3J0Q29uc3RyYWluZWROb3RD
b21wb3NpdGVkUmVhc29uIHsKICAgICAgICAgTm9Ob3RDb21wb3NpdGVkUmVhc29uLAogICAgICAg
ICBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0T2ZWaWV3LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA3M2VjNzdmYWE0NGFh
MjZiZTMxNTMzZjkzYTJjN2ZlNjA0NWE1MDAuLmM0NjkyM2MyNTEzMTRhZWExZThjNGJkM2U3MGYx
ZTY4NDFjNThkMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0xOSAgVGltIE5ndXll
biAgPG50aW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0b3AgbGF5ZXIgcmVuZGVy
aW5nIGJpdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEVu
YWJsZWQgcmVsZXZhbnQgV1BUcy4gU29tZSBXUFRzIG5lZWQgZXh0cmEgbGF5b3V0IHdvcmsuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTA4LTE5ICBFcmljIEh1dGNoaXNv
biAgPGVodXRjaGlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUgd2syXSBzdG9yYWdl
L2luZGV4ZWRkYi9kb250LXdlZGdlLXByaXZhdGUuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhODc4YTYyNzQzNjEzNWIzMDA4ZDUxNTg0OTBmZWRhYTI1NjFm
ZjA5Li5hY2M4OTJlMzYwZTQzYTQzYjM2YzJiN2U0NDg1ZTI3M2FmYzE5YjUzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIzNzQsMTQgKzIzNzQsMTAgQEAgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0
aWNvbC9vdXRsaW5lcy1hdC1jb2x1bW4tYm91bmRhcmllcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHUK
IGZhc3QvbXVsdGljb2wvbXVsdGljb2wtd2l0aC1jaGlsZC1yZW5kZXJMYXllci1mb3ItaW5wdXQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRvcCBsYXllciB0ZXN0cwotd2Via2l0Lm9y
Zy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
aW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2JhY2tkcm9wLXN0YWNraW5n
LW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVs
ZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVu
dHMvdGhlLWRpYWxvZy1lbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1jb2x1bW4uaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRp
YWxvZy1lbGVtZW50L3JlbW92ZWQtZWxlbWVudC1pcy1yZW1vdmVkLWZyb20tdG9wLWxheWVyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NDc5NiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3Ro
ZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItY29udGFpbmluZy1ibG9jay5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVs
ZW1lbnQvdG9wLWxheWVyLW5lc3RpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1zdGFj
a2luZy1jb3JyZWN0LW9yZGVyLXJlbW92ZS1yZWFkZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvODQ3OTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxh
eWVyLXN0YWNraW5nLWR5bmFtaWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzg0Nzk2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
aW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1zdGFja2lu
Zy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgaW5lcnQgc3VidHJlZXMK
</data>

          </attachment>
      

    </bug>

</bugzilla>