<?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>64516</bug_id>
          
          <creation_ts>2011-07-14 00:34:33 -0700</creation_ts>
          <short_desc>[CSSRegions] Collect flowed elements in different render element</short_desc>
          <delta_ts>2011-07-26 10:11:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>mihnea</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>436978</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-14 00:34:33 -0700</bug_when>
    <thetext>Elements that specify a different flow name should be collected inside an anonymous render block. It will later be used to layout the content inside multiple regions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438397</commentid>
    <comment_count>1</comment_count>
      <attachid>101144</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-18 04:07:23 -0700</bug_when>
    <thetext>Created attachment 101144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438402</commentid>
    <comment_count>2</comment_count>
      <attachid>101146</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-18 04:57:10 -0700</bug_when>
    <thetext>Created attachment 101146
Patch

Re-added fast/regions to the skipped list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439400</commentid>
    <comment_count>3</comment_count>
      <attachid>101146</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-07-19 13:32:19 -0700</bug_when>
    <thetext>Comment on attachment 101146
Patch

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

So my big concern with this patch is with the nextRenderer() and previousRenderer() functions. These seem like they could be very slow.

At a bare minimum I want to make sure that nextRenderer() is fast, since that function is called for every element that is put into the render tree.

This problem of picking out the correct order from the overall DOM tree feels similar to the issue we encounter with &lt;style&gt; elements in the body. In that case we dirty the style selector and then figure things out later.

Rather than moving through all the nodes of the document in previousRenderer and nextRenderer, I think you should walk the current RenderFlowThread children instead. That way you can find the correct node much more quickly using compareDocumentPosition.

Check out addStyleSheetCandidateNode in Document.cpp to see what I mean.

&gt; Source/WebCore/dom/Document.cpp:5067
&gt; +RenderFlowThread* Document::renderFlowThreadWithName(const AtomicString&amp; flowThread)

I don&apos;t think it&apos;s appropriate to have code in the document for this. Just implement this on RenderView instead. The code will look much cleaner too.

&gt; Source/WebCore/dom/Document.h:162
&gt; +#if ENABLE(CSS_REGIONS)
&gt; +class RenderFlowThread;
&gt; +#endif

Move to RenderView.

&gt; Source/WebCore/dom/Document.h:1104
&gt; +#if ENABLE(CSS_REGIONS)
&gt; +    RenderFlowThread* renderFlowThreadWithName(const AtomicString&amp; flowThread);
&gt; +#endif

Move to RenderView.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:166
&gt; +        // Search the whole document for elements that are attached to the same flow thread.
&gt; +        for (Node* node = m_node-&gt;traverseNextNode(); node; node = node-&gt;traverseNextNode())

This seems super slow. It seems like we should be able to do better. It also seems like this code should go right before the normal traversal loop rather than above the special case code to avoid o(n^2) issues when the parent isn&apos;t attached yet.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:213
&gt; +        // Search the whole document for elements that are attached to the same flow thread.
&gt; +        for (Node* node = m_node-&gt;traversePreviousNode(); node; node = node-&gt;traversePreviousNode())

This seems like it could be super slow also.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:306
&gt; +    if (!m_style || m_style-&gt;flowThread().isEmpty())
&gt; +        return;
&gt; +    m_flowThread = m_style-&gt;flowThread();

This shouldn&apos;t run for text nodes. Is there something I&apos;m missing that would keep it from running for text nodes?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:53
&gt; +    RefPtr&lt;RenderStyle&gt; newStyle = RenderStyle::create();
&gt; +    newStyle-&gt;setDisplay(BLOCK);
&gt; +    newStyle-&gt;setPosition(AbsolutePosition);
&gt; +    newStyle-&gt;setLeft(Length(0, Fixed));
&gt; +    newStyle-&gt;setTop(Length(0, Fixed));
&gt; +    newStyle-&gt;setWidth(Length(100, Percent));
&gt; +    newStyle-&gt;setHeight(Length(100, Percent));
&gt; +    newStyle-&gt;setOverflowX(OHIDDEN);
&gt; +    newStyle-&gt;setOverflowY(OHIDDEN);
&gt; +    newStyle-&gt;font().update(0);

I&apos;d pull this out into a static createFlowThreadStyle function.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:65
&gt; +void RenderFlowThread::paint(PaintInfo&amp;, const LayoutPoint&amp;)
&gt; +{
&gt; +}
&gt; +
&gt; +bool RenderFlowThread::nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const LayoutPoint&amp; /*pointInContainer*/, const LayoutPoint&amp; /*accumulatedOffset*/, HitTestAction)
&gt; +{
&gt; +    return false;
&gt; +}

Just inline these in the header right where they&apos;re declared.

&gt; Source/WebCore/rendering/RenderFlowThread.h:49
&gt; +    virtual void paint(PaintInfo&amp;, const LayoutPoint&amp;);
&gt; +    virtual bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const LayoutPoint&amp; pointInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction);

I think it would be good to comment why these methods do nothing. It&apos;s an opportunity to explain what&apos;s special about RenderFlowThread (that it&apos;s just collecting the objects).

&gt; Source/WebCore/rendering/RenderFlowThread.h:57
&gt; +    ASSERT(!object || !strcmp(object-&gt;renderName(), &quot;RenderFlowThread&quot;));

Why not just assert that the object isRenderFlowThread instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439767</commentid>
    <comment_count>4</comment_count>
      <attachid>101457</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-20 06:28:55 -0700</bug_when>
    <thetext>Created attachment 101457
Patch

Thanks for review! I think I fixed them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439770</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 06:31:47 -0700</bug_when>
    <thetext>Attachment 101457 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/rendering/RenderFlowThread.cpp:34:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/rendering/RenderFlowThread.cpp:35:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/rendering/RenderFlowThread.cpp:49:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/rendering/RenderFlowThread.h:70:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/rendering/RenderFlowThread.h:71:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439776</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-20 06:37:03 -0700</bug_when>
    <thetext>Some tasks related to this patch:

1. Overriding the RenderFlowThread::paint and RenderFlowThread::nodeAtPoint do not seem enough. Child elements might render inside different RenderLayers, so the right approach would have been to force the RenderLayer to avoid rendering the RenderFlowThread and any descendant layer. The same for nodeAtPoint. I will post a new patch with that.

2. Elements inside the RenderFlowThread that require a RenderLayerBacking should only be created if the RenderFlowThread is attached to RenderRegions. The layers need to be attached to the layer of the regions instead of attaching them to the layer of the &apos;virtual&apos; RenderFlowThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439780</commentid>
    <comment_count>7</comment_count>
      <attachid>101462</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-20 06:43:45 -0700</bug_when>
    <thetext>Created attachment 101462
Patch

Fixed code style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439795</commentid>
    <comment_count>8</comment_count>
      <attachid>101467</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-20 07:27:41 -0700</bug_when>
    <thetext>Created attachment 101467
Patch with forced RenderLayer

Using RenderLayer to avoid drawing the RenderFlowThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439883</commentid>
    <comment_count>9</comment_count>
      <attachid>101467</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-07-20 11:11:32 -0700</bug_when>
    <thetext>Comment on attachment 101467
Patch with forced RenderLayer

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

Few more comments.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:84
&gt; +RenderObject* RenderFlowThread::nextRendererForNode(Node* node) const
&gt; +{
&gt; +    for (RenderObject* child = firstChild(); child; child = child-&gt;nextSibling()) {
&gt; +        ASSERT(child-&gt;node());
&gt; +        unsigned short position = node-&gt;compareDocumentPosition(child-&gt;node());
&gt; +        if (position &amp; Node::DOCUMENT_POSITION_FOLLOWING)
&gt; +            return child;
&gt; +    }
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +RenderObject* RenderFlowThread::previousRendererForNode(Node* node) const
&gt; +{
&gt; +    for (RenderObject* child = lastChild(); child; child = child-&gt;previousSibling()) {
&gt; +        ASSERT(child-&gt;node());
&gt; +        unsigned short position = node-&gt;compareDocumentPosition(child-&gt;node());
&gt; +        if (position &amp; Node::DOCUMENT_POSITION_PRECEDING)
&gt; +            return child;
&gt; +    }
&gt; +    return 0;
&gt; +}

The one concern I can think of with these functions is that the RenderFlowThread may have been forced to create anonymous blocks to wrap content. For example let&apos;s say you put both a &lt;div&gt; and a &lt;span&gt; into the same flow thread. When you put the &lt;span&gt; into the thread, an anonymous block will be created to wrap the &lt;span&gt;. People can also write weird code like div { display: table-cell } and throw that into a RenderFlowThread, and a bunch of anonymous table elements would be created to wrap that object as well.

I think you will probably have to maintain an actual list of the nodes themselves in the RenderFlowThread and walk that instead. Something similar to the ListHashSet used for candidate stylesheet nodes that I mentioned in the previous review.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2551
&gt; +#if ENABLE(CSS_REGIONS)
&gt; +    // Do not let the RenderFlowThread to render directly to screen. It will only render
&gt; +    // inside the RenderRegions.
&gt; +    if (renderer()-&gt;isRenderFlowThread())
&gt; +        return;
&gt; +#endif

I think a better way to handle this would be to simply avoid collecting the child layers into the lists. That way you only have to patch one place. I think you could just patch updateZOrderLists to skip flow thread layers. That seems a bit simpler to me than patching both painting and hit testing functions.

&gt; Source/WebCore/rendering/RenderLayer.h:-327
&gt; -    bool isStackingContext() const { return !hasAutoZIndex() || renderer()-&gt;isRenderView(); }

I don&apos;t think you&apos;ll have to patch this function if you just hack updateZOrderLists to avoid collecting the layers instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440324</commentid>
    <comment_count>10</comment_count>
      <attachid>101566</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-21 02:40:12 -0700</bug_when>
    <thetext>Created attachment 101566
Patch

Thanks for the tips! I&apos;ve integrated the fixes.

updateZOrderLists also fixes the RenderLayers that have accelerated rendering. When RenderRegion patch will be committed more logic can be added to distribute the layers directly to the region&apos;s layer based on their position in the flow thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440339</commentid>
    <comment_count>11</comment_count>
      <attachid>101570</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-21 04:05:15 -0700</bug_when>
    <thetext>Created attachment 101570
Patch

Forgot to add the ChangeLogs in the diff file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441828</commentid>
    <comment_count>12</comment_count>
      <attachid>101570</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-07-25 13:33:45 -0700</bug_when>
    <thetext>Comment on attachment 101570
Patch

Looks good. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441850</commentid>
    <comment_count>13</comment_count>
      <attachid>101570</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 14:07:24 -0700</bug_when>
    <thetext>Comment on attachment 101570
Patch

Rejecting attachment 101570 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
file Source/WebCore/rendering/RenderLayer.cpp
patching file Source/WebCore/rendering/RenderObject.h
Hunk #1 succeeded at 316 (offset 1 line).
patching file Source/WebCore/rendering/RenderTreeAsText.cpp
patching file Source/WebCore/rendering/RenderView.cpp
patching file Source/WebCore/rendering/RenderView.h
patching file Source/WebCore/rendering/style/RenderStyle.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;David Hyatt&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/9249086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442128</commentid>
    <comment_count>14</comment_count>
      <attachid>101974</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-07-25 23:32:04 -0700</bug_when>
    <thetext>Created attachment 101974
Rebased patch

I&apos;m not a committer, so I rebased the patch and I&apos;m adding it for commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442333</commentid>
    <comment_count>15</comment_count>
      <attachid>101974</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 10:11:21 -0700</bug_when>
    <thetext>Comment on attachment 101974
Rebased patch

Clearing flags on attachment: 101974

Committed r91760: &lt;http://trac.webkit.org/changeset/91760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442334</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 10:11:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101144</attachid>
            <date>2011-07-18 04:07:23 -0700</date>
            <delta_ts>2011-07-18 04:57:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516.patch</filename>
            <type>text/plain</type>
            <size>31783</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2M2QxMjFmLi5lNTcyYjJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDct
MTggIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisK
IDIwMTEtMDctMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDY1Nwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5k
ZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgz
MWNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZsb3dUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3dBJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTF4MTgKKyAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxvd0EiCisgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDkxeDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkxOiAiRElW
MSAtIGZsb3dBIgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZsb3dUaHJl
YWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY1
IC0gZmxvd0IiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkweDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDkwOiAiRElWNyAtIGZsb3dCIgorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXpl
IDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIgLSBmbG93QiIKKyAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY2
IC0gZmxvd0IiCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjMg
LSBmbG93QyIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTA6ICJESVY4IC0gZmxvd0MiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjM0MmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIt
bmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0En
IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE2KSBz
aXplIDgwMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAo
YW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6
ICJESVYxIC0gZmxvd0EiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAw
eDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSA4MDB4MAorICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA5MTogIkRJVjMgLSBmbG93QSIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0InIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCww
KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgx
OAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIgLSBmbG93QiIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1u
ZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJl
ci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjQwNzI2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93
LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIEhUTUw+CisK
KzxkaXYgaWQ9IkRJVjEiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dBJzsiPgorICAgIERJVjEg
LSBmbG93QQorICAgIDxkaXYgaWQ9IkRJVjIiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dCJzsi
PkRJVjIgLSBmbG93QjwvZGl2PgorICAgIDxwPgorICAgICAgICA8ZGl2IGlkPSJESVYzIiBzdHls
ZT0iLXdlYmtpdC1mbG93OidmbG93QSc7Ij5ESVYzIC0gZmxvd0E8L2Rpdj4KKyAgICA8L3A+Cis8
L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA4NzQxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IURPQ1RZUEUgSFRNTD4KKworPGRpdiBpZD0iRElWMSIgc3R5bGU9Ii13ZWJraXQtZmxvdzonZmxv
d0EnOyI+RElWMSAtIGZsb3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIiBzdHlsZT0iLXdlYmtpdC1m
bG93OidmbG93Qic7Ij5ESVYyIC0gZmxvd0I8L2Rpdj4KKzxkaXYgaWQ9IkRJVjMiIHN0eWxlPSIt
d2Via2l0LWZsb3c6J2Zsb3dDJzsiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAgZWwuc2V0QXR0cmli
dXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7CisgICAgZWwuaW5uZXJI
VE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQorICAgICAgICBkb2N1
bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYmVmb3Jl
KSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsLCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChiZWZvcmUpKTsKK30KKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1l
bnQgaW4gZmxvd0EsIGJlZm9yZSBESVYxIChzYW1lIGZsb3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQi
LCAiZmxvd0EiLCAiRElWMSIpOworCisvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbiBmbG93Qiwg
YmVmb3JlIERJVjEgKGRpZmZlcmVudCBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY1IiwgImZsb3dC
IiwgIkRJVjEiKTsKKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBE
SVYzIChkaWZmZXJlbnQgZmxvdy10aHJlYWQpLgordGVzdCgiRElWNiIsICJmbG93QiIsICJESVYz
Iik7CisKKy8vIEluc2VydCBhIG5ldyBlbGVtZW50IGluIGZsb3dCLCBiZWZvcmUgRElWMiAoc2Ft
ZSBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY3IiwgImZsb3dCIiwgIkRJVjIiKTsKKworLy8gQXBw
ZW5kIGEgbmV3IGVsZW1lbnQgaW4gZmxvd0MuCit0ZXN0KCJESVY4IiwgImZsb3dDIik7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggODgyNWQxMS4uYTU0OGZjNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTM3MCw3ICszNzAsNyBAQCB3ZWJhcmNoaXZlL2xv
YWRpbmcvbWFpbnJlc291cmNlLW51bGwtbWltZXR5cGUtY3Jhc2guaHRtbAogY3NzMy9mbGV4Ym94
CiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTczMTIKLWZhc3QvcmVnaW9ucworIyBmYXN0L3JlZ2lvbnMKIAogIyBDU1MgRXhjbHVz
aW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMQog
ZmFzdC9leGNsdXNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU2ODU5My4uMmVjYWRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDExLTA3LTE4ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNo
aWN1QGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9uc10gQ29sbGVjdCBmbG93ZWQgZWxl
bWVudHMgaW4gZGlmZmVyZW50IHJlbmRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDUxNgorCisgICAgICAgIEFsbCB0aGUgUmVuZGVy
T2JqZWN0cyB0aGF0IGhhdmUgYSBzcGVjaWZpZWQgImZsb3ciIG5hbWUgYXJlIG1vdmVkIG91dCBv
ZiB0aGUgCisgICAgICAgIG5vcm1hbCBmbG93LiBBIFJlbmRlckZsb3dUaHJlYWQgd2lsbCBjb2xs
ZWN0IGFsbCBzdWNoIFJlbmRlck9iamVjdHMuIFRoZXJlIGlzIAorICAgICAgICBhIFJlbmRlckZs
b3dUaHJlYWQgZm9yIGVhY2ggZmxvdyBuYW1lLiBUaGUgbmV3IFJlbmRlckZsb3dUaHJlYWQgaXMg
YW4gYW5vbnltb3VzIAorICAgICAgICBSZW5kZXJCbG9jayB0aGF0IGlzIHBvc2l0aW9uZWQgYWJz
b2x1dGUgYW5kIHdpbGwgbm90IHJlbmRlciBkaXJlY3RseS4gSW4gYSAKKyAgICAgICAgZGlmZmVy
ZW50IGJ1Zy9wYXRjaCBJIHdpbGwgYWRkIFJlbmRlclJlZ2lvbiB0aGF0IHdpbGwgdGFrZSBjYXJl
IG9mIHJlbmRlcmluZyB0aGUgCisgICAgICAgIFJlbmRlckZsb3dUaHJlYWQgb24gc2NyZWVuLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCisKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRpZmYpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNldFN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93
VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6
Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6aGFzRmxvd1Ro
cmVhZFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFy
ZW50Rmxvd1JlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxv
d1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpub2RlQXRQb2ludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0b1JlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJGbG93VGhyZWFkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpkaWZmKToKKwogMjAxMS0wNy0xNyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1NQcm9wZXJ0eUN1cnNvciBpbiBD
U1NTdHlsZUFwcGx5UHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggYzU0NWI5Zi4uMmNhNDRhYSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM0NzA2LDYgKzM0NzA2LDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmlu
Z1xSZW5kZXJGbG93VGhyZWFkLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZsb3dUaHJlYWQuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xS
ZW5kZXJGb3JlaWduT2JqZWN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMDk1Mjc1OC4uOWQ1ZjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3OSw2ICsxMjc5LDggQEAKIAkJNEZEOEQwRjMx
MTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3Jp
cHRHQ0V2ZW50LmggKi87IH07CiAJCTUwMUJBOUUyMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFw
U2hhcGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MDFCQTlFMTEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3
QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTAxQkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTA4Q0NBNEYxM0NGMTA2
QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJG
bG93VGhyZWFkLmggKi87IH07CisJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJG
bG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsg
fTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0
QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJB
MDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2
QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5jcHAgKi87IH07CkBAIC03ODA3LDYgKzc4MDksOCBAQAogCQk1MDFCQTlFMTEzOTND
RUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NXcmFwU2hhcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUw
MUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXaW5kUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUx
RjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
b2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTk0ODksNiArMTk0OTMsOCBAQAogCQkJCUE4Q0ZGMDRDMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJs
ZUxheW91dC5oICovLAogCQkJCTM3RkM5NkRBMTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zs
b2F0c1Jvb3RJbmxpbmVCb3guaCAqLywKIAkJCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyog
VmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi8sCisJCQkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLywKKwkJCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMg
LyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbmRlcmluZzsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzEwNCw2ICsyMzExMCw3IEBACiAJCQkJ
RkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTQ1QkZENDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5NjlCMEYzMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3Jt
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODc1LDYgKzI1ODgyLDcgQEAK
IAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk0NUJGRDMxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5NjlCMEYyMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5n
VHJhbnNmb3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTA4Q0NBNTAxM0NGMTA2QjAw
MzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkMmUwOTQ0Li4yNTRiZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTEyMCw2ICsxMjAsNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNs
dWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgi
CisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENv
bnRyb2wuaCIKQEAgLTUwNjIsNiArNTA2MywyNSBAQCB2b2lkIERvY3VtZW50OjpkaWRSZW1vdmVX
aGVlbEV2ZW50SGFuZGxlcigpCiAgICAgICAgIG1haW5GcmFtZS0+bm90aWZ5Q2hyb21lQ2xpZW50
V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKK1JlbmRlckZsb3dUaHJlYWQqIERvY3VtZW50OjpyZW5kZXJGbG93VGhyZWFkV2l0aE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKQoreworICAgIEFTU0VSVChyZW5kZXJW
aWV3KCkpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJlbmRlclZpZXcoKS0+
Zmlyc3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAg
ICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSB0b1JlbmRlckZsb3dUaHJl
YWQocmVuZGVyZXIpOworICAgICAgICAgICAgaWYgKGZsb3dSZW5kZXJlci0+Zmxvd1RocmVhZCgp
ID09IGZsb3dUaHJlYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IG5l
dyAocmVuZGVyVmlldygpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJGbG93VGhyZWFkKHRoaXMgLyog
YW5vbnltb3VzIGJveCAqLywgZmxvd1RocmVhZCk7CisgICAgcmVuZGVyVmlldygpLT5hZGRDaGls
ZChmbG93UmVuZGVyZXIpOworICAgIAorICAgIHJldHVybiBmbG93UmVuZGVyZXI7Cit9CisjZW5k
aWYKKwogRG9jdW1lbnRMb2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogewogICAgIGlm
ICghbV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTQ4MGFiNS4uMDZkYTY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgY2xhc3MgUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7
CisjZW5kaWYKKwogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRm9ybUVsZW1l
bnRLZXkgewpAQCAtMTA5NCw2ICsxMDk4LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB3aGVl
bEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50SGFuZGxlckNv
dW50OyB9CiAgICAgdm9pZCBkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigpOwogICAgIHZvaWQgZGlk
UmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKKworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAg
ICBSZW5kZXJGbG93VGhyZWFkKiByZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBmbG93VGhyZWFkKTsKKyNlbmRpZgogICAgIAogcHJvdGVjdGVkOgogICAgIERvY3Vt
ZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDJmMzBiYjcuLmM5ODJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM1
Nyw2ICszNTcsMTIgQEAgTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlmZihjb25zdCBSZW5kZXJT
dHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBzMikKICAgICBpZiAoKHMxICYmIHMyKSAmJiAo
czEtPmhhc1RleHRDb21iaW5lKCkgIT0gczItPmhhc1RleHRDb21iaW5lKCkpKQogICAgICAgICBj
aCA9IERldGFjaDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAvLyBXZSBuZWVkIHRv
IHJlYXR0YWNoIHRoZSBub2RlLCBzbyB0aGF0IGl0IGlzIG1vdmVkIHRvIHRoZSBjb3JyZWN0IFJl
bmRlckZsb3dUaHJlYWQuCisgICAgaWYgKChzMSAmJiBzMikgJiYgKHMxLT5mbG93VGhyZWFkKCkg
IT0gczItPmZsb3dUaHJlYWQoKSkpCisgICAgICAgIGNoID0gRGV0YWNoOworI2VuZGlmCisKICAg
ICByZXR1cm4gY2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDUwNzM5OWYuLjg1MDRkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29u
dGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGbG93VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCkBAIC00Myw2ICs0NCw5
IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2Rl
KQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCiAgICAgLCBtX2NvbnRlbnRFbGVt
ZW50KDApCiAgICAgLCBtX3N0eWxlKDApCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICwg
bV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewogICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAt
ODMsNiArODcsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQo
Tm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFk
b3dSb290KDApCiAgICAgLCBtX2NvbnRlbnRFbGVtZW50KDApCiAgICAgLCBtX3N0eWxlKHN0eWxl
KQorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDAp
CisjZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArMTAwLDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCgpCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzZXRT
dHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gc3R5
bGU7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRl
ZCgpOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpyZWxlYXNlU3R5bGUoKQpAQCAtMTUwLDYgKzE2MCwxNyBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiBsYXN0UmVuZGVyZXJPZihTaGFkb3dDb250ZW50RWxlbWVudCogcGFyZW50KQogCiBS
ZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAog
eworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIp
IHsKKyAgICAgICAgLy8gU2VhcmNoIHRoZSB3aG9sZSBkb2N1bWVudCBmb3IgZWxlbWVudHMgdGhh
dCBhcmUgYXR0YWNoZWQgdG8gdGhlIHNhbWUgZmxvdyB0aHJlYWQuCisgICAgICAgIGZvciAoTm9k
ZSogbm9kZSA9IG1fbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpKQorICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkgJiYg
bm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAKKyAgICAgICAgICAgICAgICAmJiBub2RlLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9mbG93VGhyZWFkKQorICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisjZW5kaWYKKwogICAgIEFTU0VSVChtX25vZGUtPnJlbmRlcmVyKCkgfHwgbV9sb2NhdGlvbiAh
PSBMb2NhdGlvblVuZGV0ZXJtaW5lZCk7CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+bmV4dFNpYmxp
bmcoKTsKQEAgLTE2Niw4ICsxODcsMTQgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBp
ZiAobm9kZS0+cmVuZGVyZXIoKSkgeworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAgICAg
ICAgIC8vIERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZm
ZXJlbnQgZmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKSAmJiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJu
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVu
dEVsZW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogZmlyc3QgPSBmaXJz
dFJlbmRlcmVyT2YodG9TaGFkb3dDb250ZW50RWxlbWVudChub2RlKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZpcnN0OwpAQCAtMTc5LDYgKzIwNiwxOCBAQCBSZW5kZXJPYmplY3QqIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogCiBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKIHsKKyNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCisgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKSB7CisgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBmbG93VGhyZWFkID0gbV9zdHlsZS0+Zmxvd1RocmVhZCgpOwor
ICAgICAgICAvLyBTZWFyY2ggdGhlIHdob2xlIGRvY3VtZW50IGZvciBlbGVtZW50cyB0aGF0IGFy
ZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBmbG93IHRocmVhZC4KKyAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gbV9ub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VQcmV2aW91c05vZGUoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigp
ICYmIG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkgCisgICAgICAgICAgICAgICAgJiYgbm9kZS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpID09IG1fZmxvd1RocmVhZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQobV9ub2RlLT5yZW5kZXJlcigpIHx8IG1fbG9jYXRp
b24gIT0gTG9jYXRpb25VbmRldGVybWluZWQpOwogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnByZXZp
b3VzU2libGluZygpOwpAQCAtMTkyLDggKzIzMSwxNCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5k
ZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGhhdmUgdGhlIHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBuZXh0UmVuZGVyZXIgZG9l
cwogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNldmVyYWwgdGVzdHMg
ZmFpbGVkLgogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9k
ZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCisgICAgICAgICAgICAvLyBEbyBub3QgcmV0dXJuIGVsZW1lbnRzIHRo
YXQgYXJlIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGZsb3ctdGhyZWFkLgorICAgICAgICAgICAg
aWYgKG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisj
ZW5kaWYKICAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAgICB9CiAg
ICAgICAgIGlmIChub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGxhc3QgPSBsYXN0UmVuZGVyZXJPZih0b1NoYWRvd0NvbnRlbnRFbGVtZW50
KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKQEAgLTIxMCw2ICsyNTUsMTEg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIoKSBj
b25zdAogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIH0KIAorI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKKyNlbmRpZgorCiAgICAgQVNTRVJUKG1fbG9j
YXRpb24gIT0gTG9jYXRpb25VbmRldGVybWluZWQpOwogICAgIHJldHVybiBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSA/IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5y
ZW5kZXJlcigpIDogMDsKIH0KQEAgLTI0OCw2ICsyOTgsMTUgQEAgYm9vbCBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQordm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
bW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fc3R5bGUgfHwgbV9zdHls
ZS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZmxvd1Ro
cmVhZCA9IG1fc3R5bGUtPmZsb3dUaHJlYWQoKTsKKyAgICBtX3BhcmVudEZsb3dSZW5kZXJlciA9
IG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKG1fZmxvd1RocmVh
ZCk7Cit9CisjZW5kaWYKIAogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9y
eShOb2RlKiBub2RlKQogICAgIDogbV9jb250ZXh0KG5vZGUpCkBAIC0zMTUsNiArMzc0LDEzIEBA
IHZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAgICAg
UmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCk7CiAg
ICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsK
IAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9jb250ZXh0Lmhhc0Zsb3dUaHJl
YWRQYXJlbnQoKSkgeworICAgICAgICBwYXJlbnRSZW5kZXJlciA9IG1fY29udGV4dC5wYXJlbnRG
bG93UmVuZGVyZXIoKTsKKyAgICAgICAgbmV4dFJlbmRlcmVyID0gbV9jb250ZXh0Lm5leHRSZW5k
ZXJlcigpOworICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IGlmIChkb2N1bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQtPndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG5vZGUpCiAgICAgICAgIG5ld1JlbmRlcmVyID0g
d3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBkb2N1bWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDk1Nzc1ZjAuLjU5Y2U5NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzksNiArNDAsMTAgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBT
aGFkb3dDb250ZW50RWxlbWVudDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKKyNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCitjbGFzcyBSZW5kZXJGbG93VGhyZWFkOworI2VuZGlmCisKIGNsYXNzIE5vZGVS
ZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dChOb2RlKik7CkBAIC01OSw2ICs2NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhvc3RD
aGlsZHJlbkNoYW5nZWQoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBib29sIGhh
c0Zsb3dUaHJlYWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsg
fQorICAgIFJlbmRlckZsb3dUaHJlYWQqIHBhcmVudEZsb3dSZW5kZXJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOyB9CisgICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZO
ZWVkZWQoKTsKKyNlbmRpZgogcHJpdmF0ZToKIAogICAgIGVudW0gVHJlZUxvY2F0aW9uIHsKQEAg
LTgxLDYgKzkxLDEwIEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV92aXN1YWxQYXJlbnRT
aGFkb3dSb290OwogICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBtX2NvbnRlbnRFbGVtZW50Owog
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CisgICAgUmVuZGVyRmxvd1RocmVhZCogbV9wYXJlbnRGbG93UmVuZGVyZXI7CisgICAgQXRvbWlj
U3RyaW5nIG1fZmxvd1RocmVhZDsKKyNlbmRpZgogfTsKIAogaW5saW5lIE5vZGUqIE5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojpub2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
M2JkY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKwor
I2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmxvd1RocmVhZCkKKyAgICAgIDogUmVuZGVyQmxvY2sobm9kZSkKKyAgICAgICwg
bV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCit7CisgICAgc2V0SXNBbm9ueW1vdXMoZmFsc2UpOwor
CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgbmV3U3R5bGUtPnNldFBv
c2l0aW9uKEFic29sdXRlUG9zaXRpb24pOworICAgIG5ld1N0eWxlLT5zZXRMZWZ0KExlbmd0aCgw
LCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRUb3AoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAg
bmV3U3R5bGUtPnNldFdpZHRoKExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBuZXdTdHlsZS0+
c2V0SGVpZ2h0KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBuZXdTdHlsZS0+c2V0T3ZlcmZs
b3dYKE9ISURERU4pOworICAgIG5ld1N0eWxlLT5zZXRPdmVyZmxvd1koT0hJRERFTik7CisgICAg
bmV3U3R5bGUtPmZvbnQoKS51cGRhdGUoMCk7CisgICAgCisgICAgc2V0U3R5bGUobmV3U3R5bGUp
OworfQorCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikKK3sKK30KKworYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYg
Lypwb2ludEluQ29udGFpbmVyKi8sIGNvbnN0IExheW91dFBvaW50JiAvKmFjY3VtdWxhdGVkT2Zm
c2V0Ki8sIEhpdFRlc3RBY3Rpb24pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1JFR0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kNGMxMTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlckZsb3dUaHJlYWRfaAorI2RlZmlu
ZSBSZW5kZXJGbG93VGhyZWFkX2gKKworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyRmxvd1RocmVhZDogcHVibGljIFJl
bmRlckJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJGbG93VGhyZWFkKE5vZGUqLCBjb25zdCBB
dG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
ckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgQXRvbWljU3Ry
aW5nIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWQ7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dU
aHJlYWQiOyB9CisgICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKK307CisKK2lubGluZSBS
ZW5kZXJGbG93VGhyZWFkKiB0b1JlbmRlckZsb3dUaHJlYWQoUmVuZGVyT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgIXN0cmNtcChvYmplY3QtPnJlbmRlck5hbWUoKSwg
IlJlbmRlckZsb3dUaHJlYWQiKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckZsb3dU
aHJlYWQqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFu
IHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyRmxvd1RocmVhZChjb25zdCBSZW5kZXJG
bG93VGhyZWFkKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfUkVHSU9OUykKKworI2VuZGlmIC8vIFJlbmRlckZsb3dUaHJlYWRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDk3MTQxNzUuLjg1NDZiZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMxNSw2ICszMTUsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiBkb2N1
bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBtX25vZGU7IH0KICAgICBib29sIGlzQm9keSgp
IGNvbnN0OwogICAgIGJvb2wgaXNIUigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGMyZDRlZmUuLmEzYTQ1MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFpbHNNYXJr
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgorI2luY2x1ZGUgIlJl
bmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC0yNDMsNiArMjQ0
LDEzIEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgICAgICAgICB0cyA8PCAiICpl
bXB0eSBvciB1bnN0eWxlZCBBcHBsZVN0eWxlU3BhbioiOwogICAgICAgICB9CiAgICAgfQorICAg
IAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAoby5pc1JlbmRlckZsb3dUaHJlYWQo
KSkgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkJiByZW5kZXJGbG93VGhyZWFkID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyRmxvd1RocmVhZCY+KG8pOworICAgICAgICB0cyA8PCAi
IHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJlYWQuZmxvd1RocmVhZCgpIDw8ICIn
IjsKKyAgICB9CisjZW5kaWYKIAogICAgIGJvb2wgYWRqdXN0Rm9yVGFibGVDZWxscyA9IG8uY29u
dGFpbmluZ0Jsb2NrKCktPmlzVGFibGVDZWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDcyM2QzZTUuLjQ1ZmI2NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzQ2
LDggKzM0Niw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5k
ZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29uCiAgICAgICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZCAhPSBvdGhlci0+cmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9yZWdpb25UaHJlYWQKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lv
blRocmVhZCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkCiAg
ICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25JbmRleCAhPSBvdGhl
ci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uSW5kZXgpCiAgICAgICAgICAgICByZXR1
cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101146</attachid>
            <date>2011-07-18 04:57:10 -0700</date>
            <delta_ts>2011-07-20 06:28:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516_1.patch</filename>
            <type>text/plain</type>
            <size>31284</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2M2QxMjFmLi45OTgyYTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDct
MTggIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDctMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8
YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDY1NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjgzMWNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0MyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZs
b3dUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sg
KGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6
ICJESVY0IC0gZmxvd0EiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4
MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDkxOiAiRElWMSAtIGZsb3dBIgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckZsb3dUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgw
CisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggOTA6ICJESVY1IC0gZmxvd0IiCisgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDAp
IHNpemUgODAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkweDE4
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNyAtIGZsb3dCIgorICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAo
YW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDog
IkRJVjIgLSBmbG93QiIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgw
CisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggOTA6ICJESVY2IC0gZmxvd0IiCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAK
KyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA5MDogIkRJVjMgLSBmbG93QyIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkg
c2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgK
KyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY4IC0gZmxvd0MiCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVz
dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1y
ZW5kZXJlci1uZXN0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYxNjM0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHgwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
ODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA4MDB4MAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwx
Nikgc2l6ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXpl
IDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJVjMgLSBmbG93QSIKKyAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMHgwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InIGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA5MDogIkRJVjIgLSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNjQwNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEs
OSBAQAorPCFET0NUWVBFIEhUTUw+CisKKzxkaXYgaWQ9IkRJVjEiIHN0eWxlPSItd2Via2l0LWZs
b3c6J2Zsb3dBJzsiPgorICAgIERJVjEgLSBmbG93QQorICAgIDxkaXYgaWQ9IkRJVjIiIHN0eWxl
PSItd2Via2l0LWZsb3c6J2Zsb3dCJzsiPkRJVjIgLSBmbG93QjwvZGl2PgorICAgIDxwPgorICAg
ICAgICA8ZGl2IGlkPSJESVYzIiBzdHlsZT0iLXdlYmtpdC1mbG93OidmbG93QSc7Ij5ESVYzIC0g
Zmxvd0E8L2Rpdj4KKyAgICA8L3A+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVy
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NzQxZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIu
aHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKworPGRpdiBpZD0iRElWMSIg
c3R5bGU9Ii13ZWJraXQtZmxvdzonZmxvd0EnOyI+RElWMSAtIGZsb3dBPC9kaXY+Cis8ZGl2IGlk
PSJESVYyIiBzdHlsZT0iLXdlYmtpdC1mbG93OidmbG93Qic7Ij5ESVYyIC0gZmxvd0I8L2Rpdj4K
KzxkaXYgaWQ9IkRJVjMiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dDJzsiPkRJVjMgLSBmbG93
QzwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsK
KyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9
IG5hbWU7CisgICAgZWwuc2V0QXR0cmlidXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZs
b3cgKyInIik7CisgICAgZWwuaW5uZXJIVE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBp
ZiAoYmVmb3JlKQorICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoYmVmb3JlKSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGVsLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiZWZvcmUpKTsKK30K
KworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBESVYxIChzYW1lIGZs
b3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOworCisvLyBJbnNlcnQg
YSBuZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVudCBmbG93LXRocmVh
ZCkuCit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5zZXJ0IGEgbmV3IGVs
ZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10aHJlYWQpLgordGVz
dCgiRElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5ldyBlbGVtZW50IGlu
IGZsb3dCLCBiZWZvcmUgRElWMiAoc2FtZSBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY3IiwgImZs
b3dCIiwgIkRJVjIiKTsKKworLy8gQXBwZW5kIGEgbmV3IGVsZW1lbnQgaW4gZmxvd0MuCit0ZXN0
KCJESVY4IiwgImZsb3dDIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZTY4NTkzLi4yZWNh
ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMDctMTggIEFsZXhhbmRydSBD
aGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXSBDb2xs
ZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTE2CisKKyAgICAgICAg
QWxsIHRoZSBSZW5kZXJPYmplY3RzIHRoYXQgaGF2ZSBhIHNwZWNpZmllZCAiZmxvdyIgbmFtZSBh
cmUgbW92ZWQgb3V0IG9mIHRoZSAKKyAgICAgICAgbm9ybWFsIGZsb3cuIEEgUmVuZGVyRmxvd1Ro
cmVhZCB3aWxsIGNvbGxlY3QgYWxsIHN1Y2ggUmVuZGVyT2JqZWN0cy4gVGhlcmUgaXMgCisgICAg
ICAgIGEgUmVuZGVyRmxvd1RocmVhZCBmb3IgZWFjaCBmbG93IG5hbWUuIFRoZSBuZXcgUmVuZGVy
Rmxvd1RocmVhZCBpcyBhbiBhbm9ueW1vdXMgCisgICAgICAgIFJlbmRlckJsb2NrIHRoYXQgaXMg
cG9zaXRpb25lZCBhYnNvbHV0ZSBhbmQgd2lsbCBub3QgcmVuZGVyIGRpcmVjdGx5LiBJbiBhIAor
ICAgICAgICBkaWZmZXJlbnQgYnVnL3BhdGNoIEkgd2lsbCBhZGQgUmVuZGVyUmVnaW9uIHRoYXQg
d2lsbCB0YWtlIGNhcmUgb2YgcmVuZGVyaW5nIHRoZSAKKyAgICAgICAgUmVuZGVyRmxvd1RocmVh
ZCBvbiBzY3JlZW4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpO
b2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
Om5leHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6
cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cGFyZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0OjpoYXNGbG93VGhyZWFkUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpwYXJlbnRGbG93UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJl
YWQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRl
ckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorCiAyMDExLTA3LTE3ICBMdWtlIE1hY3BoZXJzb24g
ICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IENTU1Byb3Bl
cnR5Q3Vyc29yIGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjNTQ1YjlmLi4yY2E0NGFhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzQ3MDYsNiAr
MzQ3MDYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZsb3dUaHJlYWQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyRmxvd1RocmVh
ZC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxy
ZW5kZXJpbmdcc3ZnXFJlbmRlckZvcmVpZ25PYmplY3QuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwOTUyNzU4Li45ZDVmODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjc5LDYgKzEyNzksOCBA
QAogCQk0RkQ4RDBGMzExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEOEQwRjExMTlDNzE4QjAw
MkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCAqLzsgfTsKIAkJNTAxQkE5RTIxMzkzQ0VBMDAwRjdB
Q0VCIC8qIENTU1dyYXBTaGFwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTAxQkFB
QTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFBODEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKKwkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwICovOyB9OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNo
YXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUx
MDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTc4MDcsNiArNzgwOSw4IEBACiAJ
CTUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1dyYXBTaGFwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTAxQkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUwMUJBQUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1dyYXBTaGFwZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMg
LyogUmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwOENDQTRF
MTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFBhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTQ4OSw2ICsxOTQ5Myw4IEBACiAJCQkJQThDRkYwNEMwQTE1NEYwOTAw
MEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggKi8sCiAJCQkJMzdGQzk2REExMTA0RUQ3MTAwM0UxRkFE
IC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovLAogCQkJCUJDQTI1NzE0MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLywKKwkJCQk1MDhDQ0E0RDEz
Q0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovLAorCQkJCTUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gcmVuZGVyaW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMTA0LDYgKzIz
MTEwLDcgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk2OUIwRjMxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTA4Q0NBNEYxM0NGMTA2
QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU4NzUs
NiArMjU4ODIsNyBAQAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ1QkZEMzEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNm
b3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk2OUIwRjIxM0QwQjMzRjAwREYzNTIx
IC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MDhD
Q0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQyZTA5NDQuLjI1NGJkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NF
dmVudC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0Q29udHJvbC5oIgpAQCAtNTA2Miw2ICs1MDYzLDI1IEBAIHZvaWQgRG9jdW1l
bnQ6OmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCkKICAgICAgICAgbWFpbkZyYW1lLT5ub3Rp
ZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpOwogfQogCisjaWYg
RU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyRmxvd1RocmVhZCogRG9jdW1lbnQ6OnJlbmRlckZs
b3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpCit7CisgICAg
QVNTRVJUKHJlbmRlclZpZXcoKSk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
cmVuZGVyVmlldygpLT5maXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhy
ZWFkKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRv
UmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcik7CisgICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVy
LT5mbG93VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxv
d1JlbmRlcmVyOworICAgICAgICB9CisgICAgfQorCisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1JlbmRlcmVyID0gbmV3IChyZW5kZXJWaWV3KCktPnJlbmRlckFyZW5hKCkpIFJlbmRlckZsb3dU
aHJlYWQodGhpcyAvKiBhbm9ueW1vdXMgYm94ICovLCBmbG93VGhyZWFkKTsKKyAgICByZW5kZXJW
aWV3KCktPmFkZENoaWxkKGZsb3dSZW5kZXJlcik7CisgICAgCisgICAgcmV0dXJuIGZsb3dSZW5k
ZXJlcjsKK30KKyNlbmRpZgorCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6OmxvYWRlcigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxNDgwYWI1
Li4wNmRhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU3LDYgKzE1NywxMCBAQCBjbGFz
cyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazsKIGNsYXNzIFNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorY2xhc3MgUmVu
ZGVyRmxvd1RocmVhZDsKKyNlbmRpZgorCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBj
bGFzcyBGb3JtRWxlbWVudEtleSB7CkBAIC0xMDk0LDYgKzEwOTgsMTAgQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RXZlbnRIYW5kbGVyQ291bnQ7IH0KICAgICB2b2lkIGRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCk7
CiAgICAgdm9pZCBkaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigpOworCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorICAgIFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOworI2VuZGlmCiAgICAgCiBwcm90ZWN0
ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29s
IGlzSFRNTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMmYzMGJiNy4uYzk4MmVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMzU3LDYgKzM1NywxMiBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZm
KGNvbnN0IFJlbmRlclN0eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5bGUqIHMyKQogICAgIGlmICgo
czEgJiYgczIpICYmIChzMS0+aGFzVGV4dENvbWJpbmUoKSAhPSBzMi0+aGFzVGV4dENvbWJpbmUo
KSkpCiAgICAgICAgIGNoID0gRGV0YWNoOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAg
IC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8g
dGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVhZC4KKyAgICBpZiAoKHMxICYmIHMyKSAmJiAoczEt
PmZsb3dUaHJlYWQoKSAhPSBzMi0+Zmxvd1RocmVhZCgpKSkKKyAgICAgICAgY2ggPSBEZXRhY2g7
CisjZW5kaWYKKwogICAgIHJldHVybiBjaDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTA3Mzk5Zi4uODUwNGRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUg
IlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIK
QEAgLTQzLDYgKzQ0LDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0KE5vZGUqIG5vZGUpCiAgICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKICAgICAs
IG1fY29udGVudEVsZW1lbnQoMCkKICAgICAsIG1fc3R5bGUoMCkKKyNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCisgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQorI2VuZGlmCiB7CiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gbV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgaWYg
KCFwYXJlbnQpCkBAIC04Myw2ICs4Nyw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLCBtX3Zp
c3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKICAgICAsIG1fY29udGVudEVsZW1lbnQoMCkKICAgICAs
IG1fc3R5bGUoc3R5bGUpCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICwgbV9wYXJlbnRG
bG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewogfQogCkBAIC05Myw2ICsxMDAsOSBAQCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6fk5vZGVSZW5kZXJpbmdDb250ZXh0KCkKIHZvaWQgTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAg
IG1fc3R5bGUgPSBzdHlsZTsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgbW92ZVRvRmxv
d1RocmVhZElmTmVlZGVkKCk7CisjZW5kaWYKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHlsZSgpCkBAIC0xNTAsNiArMTYwLDE3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKFNoYWRvd0NvbnRlbnRFbGVtZW50
KiBwYXJlbnQpCiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5k
ZXJlcigpIGNvbnN0CiB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3BhcmVu
dEZsb3dSZW5kZXJlcikgeworICAgICAgICAvLyBTZWFyY2ggdGhlIHdob2xlIGRvY3VtZW50IGZv
ciBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBmbG93IHRocmVhZC4KKyAg
ICAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpCisgICAgICAgICAgICBpZiAobm9kZS0+
cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpIAorICAgICAgICAgICAgICAg
ICYmIG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJlYWQoKSA9PSBtX2Zsb3dUaHJl
YWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKG1fbm9kZS0+cmVuZGVyZXIoKSB8
fCBtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVkKTsKICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRl
cmVyLT5uZXh0U2libGluZygpOwpAQCAtMTY2LDggKzE4NywxNCBAQCBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgICAgICByZXR1cm4g
MDsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVy
KCkpCisgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKSB7CisjaWYgRU5BQkxFKENTU19SRUdJ
T05TKQorICAgICAgICAgICAgLy8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRh
Y2hlZCB0byBhIGRpZmZlcmVudCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5y
ZW5kZXJlcigpLT5zdHlsZSgpICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhy
ZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAg
ICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAo
bm9kZS0+aXNDb250ZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBmaXJzdCA9IGZpcnN0UmVuZGVyZXJPZih0b1NoYWRvd0NvbnRlbnRFbGVtZW50KG5vZGUpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CkBAIC0xNzksNiArMjA2LDE4IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAKIFJl
bmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25z
dAogeworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVy
ZXIpIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIGZsb3dUaHJlYWQgPSBtX3N0eWxlLT5m
bG93VGhyZWFkKCk7CisgICAgICAgIC8vIFNlYXJjaCB0aGUgd2hvbGUgZG9jdW1lbnQgZm9yIGVs
ZW1lbnRzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIHRoZSBzYW1lIGZsb3cgdGhyZWFkLgorICAgICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKQorICAgICAgICAgICAgaWYgKG5v
ZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAKKyAgICAgICAgICAg
ICAgICAmJiBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9mbG93
VGhyZWFkKQorICAgICAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIEFTU0VSVChtX25vZGUtPnJlbmRlcmVy
KCkgfHwgbV9sb2NhdGlvbiAhPSBMb2NhdGlvblVuZGV0ZXJtaW5lZCk7CiAgICAgaWYgKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBy
ZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CkBAIC0xOTIsOCArMjMxLDE0IEBAIFJlbmRlck9i
amVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5l
eHRSZW5kZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBpdCwg
c2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5wcmV2
aW91c1NpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0g
ICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIo
KSkgeworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAgICAgICAgIC8vIERvIG5vdCByZXR1
cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10aHJlYWQu
CisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9kZS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mKHRvU2hhZG93
Q29udGVudEVsZW1lbnQobm9kZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBsYXN0OwpAQCAt
MjEwLDYgKzI1NSwxMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJl
bnRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cGFyZW50KCk7CiAg
ICAgfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3BhcmVudEZsb3dSZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOworI2VuZGlmCisKICAg
ICBBU1NFUlQobV9sb2NhdGlvbiAhPSBMb2NhdGlvblVuZGV0ZXJtaW5lZCk7CiAgICAgcmV0dXJu
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID8gbV9wYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUtPnJlbmRlcmVyKCkgOiAwOwogfQpAQCAtMjQ4LDYgKzI5OCwxNSBAQCBib29s
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCit2b2lkIE5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKQoreworICAgIGlmICghbV9z
dHlsZSB8fCBtX3N0eWxlLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9mbG93VGhyZWFkID0gbV9zdHlsZS0+Zmxvd1RocmVhZCgpOworICAgIG1fcGFyZW50
Rmxvd1JlbmRlcmVyID0gbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJGbG93VGhyZWFkV2l0aE5h
bWUobV9mbG93VGhyZWFkKTsKK30KKyNlbmRpZgogCiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2Rl
UmVuZGVyZXJGYWN0b3J5KE5vZGUqIG5vZGUpCiAgICAgOiBtX2NvbnRleHQobm9kZSkKQEAgLTMx
NSw2ICszNzQsMTMgQEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklm
TmVlZGVkKCkKICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5uZXh0
UmVuZGVyZXIoKTsKICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVy
ZXJBbmRTdHlsZSgpOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX2NvbnRl
eHQuaGFzRmxvd1RocmVhZFBhcmVudCgpKSB7CisgICAgICAgIHBhcmVudFJlbmRlcmVyID0gbV9j
b250ZXh0LnBhcmVudEZsb3dSZW5kZXJlcigpOworICAgICAgICBuZXh0UmVuZGVyZXIgPSBtX2Nv
bnRleHQubmV4dFJlbmRlcmVyKCk7CisgICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1
bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gbm9kZSkKICAgICAgICAg
bmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4obmV3UmVuZGVyZXIsIGRvY3Vt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOTU3
NzVmMC4uNTljZTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MCwxMCBAQCBjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50OwogY2xhc3MgU2hhZG93Um9vdDsKIAor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CisjZW5kaWYK
KwogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgogICAgIGV4cGxpY2l0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqKTsKQEAgLTU5LDYgKzY0LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05T
KQorICAgIGJvb2wgaGFzRmxvd1RocmVhZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50
Rmxvd1JlbmRlcmVyOyB9CisgICAgUmVuZGVyRmxvd1RocmVhZCogcGFyZW50Rmxvd1JlbmRlcmVy
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7IH0KKyAgICB2b2lkIG1vdmVU
b0Zsb3dUaHJlYWRJZk5lZWRlZCgpOworI2VuZGlmCiBwcml2YXRlOgogCiAgICAgZW51bSBUcmVl
TG9jYXRpb24gewpAQCAtODEsNiArOTEsMTAgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dSb290KiBt
X3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CiAgICAgU2hhZG93Q29udGVudEVsZW1lbnQqIG1fY29u
dGVudEVsZW1lbnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOworI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJl
cjsKKyAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOworI2VuZGlmCiB9OwogCiBpbmxpbmUg
Tm9kZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmQzYmRjYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorCisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoTm9kZSogbm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKQorICAgICAgOiBSZW5kZXJCbG9jayhu
b2RlKQorICAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKK3sKKyAgICBzZXRJc0Fub255
bW91cyhmYWxzZSk7CisKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOworICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICBu
ZXdTdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CisgICAgbmV3U3R5bGUtPnNl
dExlZnQoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldFRvcChMZW5ndGgoMCwg
Rml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOwor
ICAgIG5ld1N0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIG5ld1N0
eWxlLT5zZXRPdmVyZmxvd1goT0hJRERFTik7CisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WShP
SElEREVOKTsKKyAgICBuZXdTdHlsZS0+Zm9udCgpLnVwZGF0ZSgwKTsKKyAgICAKKyAgICBzZXRT
dHlsZShuZXdTdHlsZSk7Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQoreworfQorCitib29sIFJlbmRlckZsb3dUaHJlYWQ6
Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IExheW91dFBvaW50JiAvKnBvaW50SW5Db250YWluZXIqLywgY29uc3QgTGF5b3V0UG9pbnQmIC8q
YWNjdW11bGF0ZWRPZmZzZXQqLywgSGl0VGVzdEFjdGlvbikKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVH
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzExM2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJ
U+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyRmxvd1Ro
cmVhZF9oCisjZGVmaW5lIFJlbmRlckZsb3dUaHJlYWRfaAorCisjaWYgRU5BQkxFKENTU19SRUdJ
T05TKQorCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJGbG93VGhy
ZWFkOiBwdWJsaWMgUmVuZGVyQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlckZsb3dUaHJlYWQo
Tm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCk7CisgICAgCisgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAK
KyAgICBBdG9taWNTdHJpbmcgZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVh
ZDsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyRmxvd1RocmVhZCI7IH0KKyAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwor
fTsKKworaW5saW5lIFJlbmRlckZsb3dUaHJlYWQqIHRvUmVuZGVyRmxvd1RocmVhZChSZW5kZXJP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCAhc3RyY21wKG9iamVjdC0+
cmVuZGVyTmFtZSgpLCAiUmVuZGVyRmxvd1RocmVhZCIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVuZGVyRmxvd1RocmVhZCo+KG9iamVjdCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBh
bnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJGbG93VGhyZWFk
KGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19SRUdJT05TKQorCisjZW5kaWYgLy8gUmVuZGVyRmxvd1RocmVh
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggOTcxNDE3NS4u
ODU0NmJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMzE1
LDYgKzMxNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRnVsbFNjcmVl
blBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKENTU19SRUdJT05TKQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZsb3dUaHJlYWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBib29sIGlzUm9vdCgpIGNvbnN0
IHsgcmV0dXJuIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IG1fbm9kZTsgfQogICAg
IGJvb2wgaXNCb2R5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0hSKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzJkNGVmZS4uYTNh
NDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRGV0YWlsc01hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgi
CisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIK
QEAgLTI0Myw2ICsyNDQsMTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9i
amVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAgICAg
ICAgIHRzIDw8ICIgKmVtcHR5IG9yIHVuc3R5bGVkIEFwcGxlU3R5bGVTcGFuKiI7CiAgICAgICAg
IH0KICAgICB9CisgICAgCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChvLmlzUmVu
ZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQmIHJlbmRl
ckZsb3dUaHJlYWQgPSBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJGbG93VGhyZWFkJj4obyk7Cisg
ICAgICAgIHRzIDw8ICIgd2l0aCBmbG93LW5hbWUgJyIgPDwgcmVuZGVyRmxvd1RocmVhZC5mbG93
VGhyZWFkKCkgPDwgIiciOworICAgIH0KKyNlbmRpZgogCiAgICAgYm9vbCBhZGp1c3RGb3JUYWJs
ZUNlbGxzID0gby5jb250YWluaW5nQmxvY2soKS0+aXNUYWJsZUNlbGwoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNzIzZDNlNS4u
NDVmYjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC0zNDYsOCArMzQ2LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpk
aWZmKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb24KICAgICAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkICE9
IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkCi0gICAgICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQgIT0gb3RoZXItPnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZAorICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9y
ZWdpb25UaHJlYWQKICAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lv
bkluZGV4ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25JbmRleCkKICAg
ICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAjZW5kaWYK
</data>
<flag name="review"
          id="95968"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="95969"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101457</attachid>
            <date>2011-07-20 06:28:55 -0700</date>
            <delta_ts>2011-07-20 06:43:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516_2.patch</filename>
            <type>text/plain</type>
            <size>32422</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmU2ZDA2Li5jNDg3ZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDct
MjAgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDctMjAgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3IgcjkxMzMxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1m
bG93LXJlbmRlcmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjgzMWNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZsb3dUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3dBJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxv
d0EiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDkxOiAiRElWMSAtIGZsb3dBIgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckZsb3dUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY1IC0gZmxvd0IiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAK
KyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkweDE4CisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNyAtIGZsb3dCIgorICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIgLSBmbG93
QiIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY2IC0gZmxvd0IiCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnIGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA5MDogIkRJVjMgLSBmbG93QyIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY4IC0gZmxvd0MiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjM0
MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZs
b3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0EnIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSA4MDB4
MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJVjMgLSBmbG93QSIKKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIg
LSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxv
dy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jNjQwNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NU
WVBFIEhUTUw+CisKKzxkaXYgaWQ9IkRJVjEiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dBJzsi
PgorICAgIERJVjEgLSBmbG93QQorICAgIDxkaXYgaWQ9IkRJVjIiIHN0eWxlPSItd2Via2l0LWZs
b3c6J2Zsb3dCJzsiPkRJVjIgLSBmbG93QjwvZGl2PgorICAgIDxwPgorICAgICAgICA8ZGl2IGlk
PSJESVYzIiBzdHlsZT0iLXdlYmtpdC1mbG93OidmbG93QSc7Ij5ESVYzIC0gZmxvd0E8L2Rpdj4K
KyAgICA8L3A+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZDgzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbApAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKworPGRpdiBpZD0iRElWMSIgc3R5bGU9Ii13ZWJr
aXQtZmxvdzonZmxvd0EnOyI+RElWMSAtIGZsb3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIiBzdHls
ZT0iLXdlYmtpdC1mbG93OidmbG93Qic7Ij5ESVYyIC0gZmxvd0I8L2Rpdj4KKzxkaXYgaWQ9IkRJ
VjMiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dDJzsiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAg
ZWwuc2V0QXR0cmlidXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7Cisg
ICAgZWwuaW5uZXJIVE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQor
ICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoYmVmb3JlKSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsKTsKK30KKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBE
SVYxIChzYW1lIGZsb3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOwor
CisvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVu
dCBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5z
ZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10
aHJlYWQpLgordGVzdCgiRElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5l
dyBlbGVtZW50IGluIGZsb3dCLCBiZWZvcmUgRElWMiAoc2FtZSBmbG93LXRocmVhZCkuCit0ZXN0
KCJESVY3IiwgImZsb3dCIiwgIkRJVjIiKTsKKworLy8gQXBwZW5kIGEgbmV3IGVsZW1lbnQgaW4g
Zmxvd0MuCit0ZXN0KCJESVY4IiwgImZsb3dDIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjMwNGEzLi4zYjM2NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDctMjAg
IEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NS
ZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVsZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTE2
CisKKyAgICAgICAgQWxsIHRoZSBSZW5kZXJPYmplY3RzIHRoYXQgaGF2ZSBhIHNwZWNpZmllZCAi
ZmxvdyIgbmFtZSBhcmUgbW92ZWQgb3V0IG9mIHRoZQorICAgICAgICBub3JtYWwgZmxvdy4gQSBS
ZW5kZXJGbG93VGhyZWFkIHdpbGwgY29sbGVjdCBhbGwgc3VjaCBSZW5kZXJPYmplY3RzLiBUaGVy
ZSBpcworICAgICAgICBhIFJlbmRlckZsb3dUaHJlYWQgZm9yIGVhY2ggZmxvdyBuYW1lLiBUaGUg
bmV3IFJlbmRlckZsb3dUaHJlYWQgaXMgYW4gYW5vbnltb3VzCisgICAgICAgIFJlbmRlckJsb2Nr
IHRoYXQgaXMgcG9zaXRpb25lZCBhYnNvbHV0ZSBhbmQgd2lsbCBub3QgcmVuZGVyIGRpcmVjdGx5
LiBJbiBhCisgICAgICAgIGRpZmZlcmVudCBidWcvcGF0Y2ggd2Ugd2lsbCBhZGQgUmVuZGVyUmVn
aW9uIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgcmVuZGVyaW5nIHRoZQorICAgICAgICBSZW5kZXJG
bG93VGhyZWFkIG9uIHNjcmVlbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5l
c3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVy
ZXIuaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZmYpOgorICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6aGFzRmxvd1RocmVhZFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50Rmxvd1JlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpwcmV2aW91c1JlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0
b1JlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJGbG93VGhyZWFkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVuZGVy
Rmxvd1RocmVhZFdpdGhOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisKIDIwMTEtMDctMTkgIFN0ZXZlIExhY2V5ICA8c2ps
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlhIHBsYXllciBjb250cm9s
cyBkbyBub3QgZmFkZSBvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDA4MzYzYjIuLmY4YjE0OGQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNDg3NCw2ICszNDg3NCwxNCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdc
UmVuZGVyRmxvd1RocmVhZC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJGbG93VGhyZWFkLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDg3Yjc1YWIuLmJiZmFhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDYsNiArMTMwNiw4IEBACiAJCTRGRDhEMEYzMTE5
QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0
R0NFdmVudC5oICovOyB9OwogCQk1MDFCQTlFMjEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNo
YXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAx
QkE5RTExMzkzQ0VBMDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FD
RUIgLyogV2luZFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUwOENDQTRGMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5oICovOyB9OworCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07
CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIw
MEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwICovOyB9OwpAQCAtNzg3NSw2ICs3ODc3LDggQEAKIAkJNTAxQkE5RTExMzkzQ0VB
MDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTV3JhcFNoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDFC
QUFBODEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2luZFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAx
QkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTV3JhcFNoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhy
ZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyRmxvd1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
NTk2LDYgKzE5NjAwLDggQEAKIAkJCQlBOENGRjA0QzBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVM
YXlvdXQuaCAqLywKIAkJCQkzN0ZDOTZEQTExMDRFRDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9h
dHNSb290SW5saW5lQm94LmggKi8sCiAJCQkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZl
cnRpY2FsUG9zaXRpb25DYWNoZS5oICovLAorCQkJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAv
KiBSZW5kZXJGbG93VGhyZWFkLmggKi8sCisJCQkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8q
IFJlbmRlckZsb3dUaHJlYWQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSByZW5kZXJpbmc7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjMyMzcsNiArMjMyNDMsNyBAQAogCQkJCUZE
N0YyOTk3MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDgyRDdGODEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxM0EyNDIxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZp
ZXJzRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYwMjMsNiArMjYwMzAs
NyBAQAogCQkJCTI0RDkxMkIwMTNDQTlBMUYwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaERlZkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQjcxM0NBOUE2OTAwRDIxOTE1IC8qIFNW
R0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQkQxM0NB
OUE5NzAwRDIxOTE1IC8qIFNWR0dseXBoUmVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyZjMwYmI3Li5jOTgyZWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0zNTcsNiArMzU3LDEyIEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRpZmYo
Y29uc3QgUmVuZGVyU3R5bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIpCiAgICAgaWYgKChz
MSAmJiBzMikgJiYgKHMxLT5oYXNUZXh0Q29tYmluZSgpICE9IHMyLT5oYXNUZXh0Q29tYmluZSgp
KSkKICAgICAgICAgY2ggPSBEZXRhY2g7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAg
Ly8gV2UgbmVlZCB0byByZWF0dGFjaCB0aGUgbm9kZSwgc28gdGhhdCBpdCBpcyBtb3ZlZCB0byB0
aGUgY29ycmVjdCBSZW5kZXJGbG93VGhyZWFkLgorICAgIGlmICgoczEgJiYgczIpICYmIChzMS0+
Zmxvd1RocmVhZCgpICE9IHMyLT5mbG93VGhyZWFkKCkpKQorICAgICAgICBjaCA9IERldGFjaDsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIGNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAzYTE3MmQwLi41Y2VhMTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4LDggKzI4LDEwIEBACiAK
ICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUg
IlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBAIC00
Myw2ICs0NSw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChO
b2RlKiBub2RlKQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCiAgICAgLCBtX2lu
Y2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKDApCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAg
ICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewogICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpA
QCAtODMsNiArODgsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICwgbV92aXN1YWxQYXJlbnRT
aGFkb3dSb290KDApCiAgICAgLCBtX2luY2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCisj
ZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArMTAxLDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6On5O
b2RlUmVuZGVyaW5nQ29udGV4dCgpCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzZXRTdHls
ZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gc3R5bGU7
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgp
OworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpyZWxlYXNlU3R5bGUoKQpAQCAtMTU0LDYgKzE2NSwxMSBAQCBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPm5leHRTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYg
KG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVy
ZXItPm5leHRSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcGhh
c2UgPT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBmb3VuZCA9IG5leHRSZW5kZXJlck9mKG1faW5jbHVkZXIsIG1fbm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZm91bmQ7CkBAIC0xNjYsOCArMTgyLDE0IEBAIFJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5uZXh0U2libGluZygpOyBub2RlOyBub2Rl
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CisgICAgICAgICAgICAvLyBEbyBub3QgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIGF0dGFjaGVk
IHRvIGEgZGlmZmVyZW50IGZsb3ctdGhyZWFkLgorICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRl
cmVyKCktPnN0eWxlKCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisjZW5kaWYKICAgICAgICAg
ICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAgICB9CiAgICAgICAgIGlmIChub2Rl
LT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZp
cnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvU2hhZG93Q29udGVudEVsZW1lbnQobm9kZSkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKQEAgLTE4Myw2ICsyMDUsMTEgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCisgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9w
YXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CisjZW5k
aWYKKwogICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQpIHsKICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBwcmV2aW91c1JlbmRlcmVyT2YobV9pbmNsdWRl
ciwgbV9ub2RlKSkKICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKQEAgLTE5Miw4ICsyMTksMTQg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigp
IGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9p
ZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQg
YWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSBt
X25vZGUtPnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJs
aW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICAgICAgLy8g
RG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBm
bG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYm
ICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxlbWVu
dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVy
T2YodG9TaGFkb3dDb250ZW50RWxlbWVudChub2RlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGxhc3Q7CkBAIC0yMTAsNiArMjQzLDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5w
YXJlbnQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYgKG1fcGFy
ZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7Cisj
ZW5kaWYKKwogICAgIEFTU0VSVChtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVkKTsK
ICAgICByZXR1cm4gbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPyBtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKSA6IDA7CiB9CkBAIC0yNDgsNiArMjg2
LDE3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK3Zv
aWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpCit7Cisg
ICAgaWYgKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhbV9zdHlsZSB8fCBtX3N0eWxlLT5m
bG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zsb3dUaHJl
YWQgPSBtX3N0eWxlLT5mbG93VGhyZWFkKCk7CisgICAgQVNTRVJUKG1fbm9kZS0+ZG9jdW1lbnQo
KS0+cmVuZGVyVmlldygpKTsKKyAgICBtX3BhcmVudEZsb3dSZW5kZXJlciA9IG1fbm9kZS0+ZG9j
dW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUobV9mbG93VGhy
ZWFkKTsKK30KKyNlbmRpZgogCiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0
b3J5KE5vZGUqIG5vZGUpCiAgICAgOiBtX2NvbnRleHQobm9kZSkKQEAgLTMxNSw2ICszNjQsMTUg
QEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAg
ICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5uZXh0UmVuZGVyZXIoKTsK
ICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgp
OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX2NvbnRleHQuaGFzRmxvd1Ro
cmVhZFBhcmVudCgpKSB7CisgICAgICAgIHBhcmVudFJlbmRlcmVyID0gbV9jb250ZXh0LnBhcmVu
dEZsb3dSZW5kZXJlcigpOworICAgICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJl
bmRlcmVyKCkgaGVyZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUgCisgICAgICAgIC8vIHRo
ZSByZW5kZXJlciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCisgICAgICAgIG5leHRSZW5k
ZXJlciA9IG1fY29udGV4dC5wYXJlbnRGbG93UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9k
ZShub2RlKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBpZiAoZG9jdW1lbnQtPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50LT53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBub2RlKQogICAgICAgICBuZXdSZW5kZXJlciA9
IHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihuZXdSZW5kZXJlciwgZG9jdW1lbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5YTYyM2U0Li4zNTYwNTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM5LDYgKzQwLDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
U2hhZG93Q29udGVudEVsZW1lbnQ7CiBjbGFzcyBTaGFkb3dSb290OwogCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKKyNlbmRpZgorCiBjbGFzcyBOb2Rl
UmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTm9kZVJlbmRlcmluZ0Nv
bnRleHQoTm9kZSopOwpAQCAtNjAsNiArNjUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBob3N0
Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgYm9vbCBo
YXNGbG93VGhyZWFkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7
IH0KKyAgICBSZW5kZXJGbG93VGhyZWFkKiBwYXJlbnRGbG93UmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsgfQorICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElm
TmVlZGVkKCk7CisjZW5kaWYKIHByaXZhdGU6CiAKICAgICBlbnVtIFRyZWVMb2NhdGlvbiB7CkBA
IC04Miw2ICs5MiwxMCBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdDsKICAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAg
IFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOworICAgIEF0b21pY1N0cmlu
ZyBtX2Zsb3dUaHJlYWQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBOb2RlKiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6bm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkNWY4
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoTm9kZSogbm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKQorICAgICAgOiBSZW5kZXJCbG9jayhu
b2RlKQorICAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKK3sKKyAgICBzZXRJc0Fub255
bW91cyhmYWxzZSk7CisgICAgc2V0U3R5bGUoY3JlYXRlRmxvd1RocmVhZFN0eWxlKCkpOworfQor
CitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhy
ZWFkU3R5bGUoKQoreworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKFJlbmRl
clN0eWxlOjpjcmVhdGUoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAg
IG5ld1N0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKKyAgICBuZXdTdHlsZS0+
c2V0TGVmdChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0VG9wKExlbmd0aCgw
LCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLCBQZXJjZW50KSk7
CisgICAgbmV3U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3
U3R5bGUtPnNldE92ZXJmbG93WChPSElEREVOKTsKKyAgICBuZXdTdHlsZS0+c2V0T3ZlcmZsb3dZ
KE9ISURERU4pOworICAgIG5ld1N0eWxlLT5mb250KCkudXBkYXRlKDApOworICAgIAorICAgIHJl
dHVybiBuZXdTdHlsZTsKK30KKworUmVuZGVyT2JqZWN0KiBSZW5kZXJGbG93VGhyZWFkOjpuZXh0
UmVuZGVyZXJGb3JOb2RlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBBU1NFUlQoY2hpbGQtPm5vZGUoKSk7CisgICAgICAgIHVuc2lnbmVk
IHNob3J0IHBvc2l0aW9uID0gbm9kZS0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oY2hpbGQtPm5v
ZGUoKSk7CisgICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZP
TExPV0lORykKKyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICB9CisgICAgcmV0dXJuIDA7
Cit9CisKK1JlbmRlck9iamVjdCogUmVuZGVyRmxvd1RocmVhZDo6cHJldmlvdXNSZW5kZXJlckZv
ck5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQg
PSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7
CisgICAgICAgIEFTU0VSVChjaGlsZC0+bm9kZSgpKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQg
cG9zaXRpb24gPSBub2RlLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjaGlsZC0+bm9kZSgpKTsK
KyAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5H
KQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19SRUdJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1OWU2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJGbG93VGhyZWFkX2gK
KyNkZWZpbmUgUmVuZGVyRmxvd1RocmVhZF9oCisKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisK
KyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyU3R5bGU7CisKKy8v
IFJlbmRlckZsb3dUaHJlYWQgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgcmVuZGVyIG9iamVj
dHMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBhCisvLyBmbG93IHRocmVhZC4gSXQgd2lsbCBhbHNvIGhl
bHAgaW4gZG9pbmcgdGhlIGxheW91dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgcmVuZGVyCisvLyBk
aXJlY3RseSB0byBzY3JlZW4uIEluc3RlYWQsIFJlbmRlclJlZ2lvbiBvYmplY3RzIHdpbGwgcmVk
aXJlY3QgdGhlaXIgcGFpbnQgCisvLyBhbmQgbm9kZUF0UG9pbnQgbWV0aG9kcyB0byB0aGlzIG9i
amVjdC4gRWFjaCBSZW5kZXJSZWdpb24gd2lsbCBhY3R1YWxseSBiZSBhIHZpZXdQb3J0CisvLyBv
ZiB0aGUgUmVuZGVyRmxvd1RocmVhZC4KKworY2xhc3MgUmVuZGVyRmxvd1RocmVhZDogcHVibGlj
IFJlbmRlckJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJGbG93VGhyZWFkKE5vZGUqLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgQXRvbWlj
U3RyaW5nIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWQ7IH0KKyAgICAK
KyAgICAvLyBPdmVycmlkaW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyB0aGF0IHdlIGF2b2lk
IHJlbmRlcmluZyB0aGUgUmVuZGVyRmxvd1RocmVhZCBkaXJlY3RseS4KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pCisgICAgewor
ICAgICAgICBVTlVTRURfUEFSQU0ocG9pbnRJbkNvbnRhaW5lcik7CisgICAgICAgIFVOVVNFRF9Q
QVJBTShhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJGb3JOb2RlKE5vZGUqIG5vZGUpIGNv
bnN0OworICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlckZvck5vZGUoTm9kZSogbm9k
ZSkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRmxvd1RocmVhZCI7IH0KKyAg
ICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOworfTsKKworaW5saW5lIFJlbmRlckZsb3dUaHJl
YWQqIHRvUmVuZGVyRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NF
UlQoIW9iamVjdCB8fCBvYmplY3QtPmlzUmVuZGVyRmxvd1RocmVhZCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVuZGVyRmxvd1RocmVhZCo+KG9iamVjdCk7Cit9CisKKy8vIFRoaXMgd2ls
bCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJG
bG93VGhyZWFkKGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqKTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19SRUdJT05TKQorCisjZW5kaWYgLy8gUmVuZGVy
Rmxvd1RocmVhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXgg
OTc3ZTg3MC4uMzIwMmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aApAQCAtMzE1LDYgKzMxNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
RnVsbFNjcmVlblBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZsb3dU
aHJlYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBib29sIGlzUm9v
dCgpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IG1fbm9k
ZTsgfQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0hSKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzJk
NGVmZS4uYTNhNDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGV0YWlsc01hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRD
b250cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRl
cklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dEl0ZW0uaCIKQEAgLTI0Myw2ICsyNDQsMTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0
ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAg
ICAgICAgICAgICAgIHRzIDw8ICIgKmVtcHR5IG9yIHVuc3R5bGVkIEFwcGxlU3R5bGVTcGFuKiI7
CiAgICAgICAgIH0KICAgICB9CisgICAgCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlm
IChvLmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJl
YWQmIHJlbmRlckZsb3dUaHJlYWQgPSBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJGbG93VGhyZWFk
Jj4obyk7CisgICAgICAgIHRzIDw8ICIgd2l0aCBmbG93LW5hbWUgJyIgPDwgcmVuZGVyRmxvd1Ro
cmVhZC5mbG93VGhyZWFkKCkgPDwgIiciOworICAgIH0KKyNlbmRpZgogCiAgICAgYm9vbCBhZGp1
c3RGb3JUYWJsZUNlbGxzID0gby5jb250YWluaW5nQmxvY2soKS0+aXNUYWJsZUNlbGwoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGRjYTczYzcuLjBhMDJj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiUmVu
ZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2VsZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgpAQCAtNzgyLDQg
Kzc4MywyMiBAQCB2b2lkIFJlbmRlclZpZXc6OndpbGxNb3ZlT2Zmc2NyZWVuKCkKICNlbmRpZgog
fQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmll
dzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVh
ZCkKK3sKKyAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJl
bmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
IChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcik7Cisg
ICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmxvd1JlbmRlcmVyOworICAgICAgICB9CisgICAgfQor
CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRlcmVyID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50KCksIGZsb3dUaHJlYWQpOworICAgIGFkZENoaWxk
KGZsb3dSZW5kZXJlcik7CisgICAgCisgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaAppbmRleCAwYTNhZDBlLi42NzcwMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTMxLDYgKzMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyV2lkZ2V0OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorY2xhc3MgUmVuZGVyRmxv
d1RocmVhZDsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xh
c3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogI2VuZGlmCkBAIC0xNjMsNiArMTY3LDEwIEBAIHB1
YmxpYzoKIAogICAgIEludFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCisgICAgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCk7CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRy
YW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDdmZjA5YzYuLjE4NjBhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzQ2LDggKzM0Niw3IEBAIFN0eWxlRGlmZmVyZW5j
ZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBj
aGFuZ2VkQ29uCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmxvd1RocmVhZCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVh
ZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9
IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQKKyAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZCAhPSBvdGhlci0+cmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkCiAgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9yZWdpb25JbmRleCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
cmVnaW9uSW5kZXgKICAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lv
bk92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25PdmVyZmxv
dykKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101462</attachid>
            <date>2011-07-20 06:43:45 -0700</date>
            <delta_ts>2011-07-21 02:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516_3.patch</filename>
            <type>text/plain</type>
            <size>32420</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmU2ZDA2Li5jNDg3ZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDct
MjAgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDctMjAgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3IgcjkxMzMxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1m
bG93LXJlbmRlcmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjgzMWNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZsb3dUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3dBJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxv
d0EiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDkxOiAiRElWMSAtIGZsb3dBIgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckZsb3dUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY1IC0gZmxvd0IiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAK
KyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkweDE4CisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNyAtIGZsb3dCIgorICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIgLSBmbG93
QiIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY2IC0gZmxvd0IiCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnIGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA5MDogIkRJVjMgLSBmbG93QyIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY4IC0gZmxvd0MiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjM0
MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZs
b3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0EnIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSA4MDB4
MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJVjMgLSBmbG93QSIKKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIg
LSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxv
dy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jNjQwNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NU
WVBFIEhUTUw+CisKKzxkaXYgaWQ9IkRJVjEiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dBJzsi
PgorICAgIERJVjEgLSBmbG93QQorICAgIDxkaXYgaWQ9IkRJVjIiIHN0eWxlPSItd2Via2l0LWZs
b3c6J2Zsb3dCJzsiPkRJVjIgLSBmbG93QjwvZGl2PgorICAgIDxwPgorICAgICAgICA8ZGl2IGlk
PSJESVYzIiBzdHlsZT0iLXdlYmtpdC1mbG93OidmbG93QSc7Ij5ESVYzIC0gZmxvd0E8L2Rpdj4K
KyAgICA8L3A+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZDgzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbApAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKworPGRpdiBpZD0iRElWMSIgc3R5bGU9Ii13ZWJr
aXQtZmxvdzonZmxvd0EnOyI+RElWMSAtIGZsb3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIiBzdHls
ZT0iLXdlYmtpdC1mbG93OidmbG93Qic7Ij5ESVYyIC0gZmxvd0I8L2Rpdj4KKzxkaXYgaWQ9IkRJ
VjMiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dDJzsiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAg
ZWwuc2V0QXR0cmlidXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7Cisg
ICAgZWwuaW5uZXJIVE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQor
ICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoYmVmb3JlKSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsKTsKK30KKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBE
SVYxIChzYW1lIGZsb3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOwor
CisvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVu
dCBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5z
ZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10
aHJlYWQpLgordGVzdCgiRElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5l
dyBlbGVtZW50IGluIGZsb3dCLCBiZWZvcmUgRElWMiAoc2FtZSBmbG93LXRocmVhZCkuCit0ZXN0
KCJESVY3IiwgImZsb3dCIiwgIkRJVjIiKTsKKworLy8gQXBwZW5kIGEgbmV3IGVsZW1lbnQgaW4g
Zmxvd0MuCit0ZXN0KCJESVY4IiwgImZsb3dDIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjMwNGEzLi4zYjM2NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDctMjAg
IEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NS
ZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVsZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTE2
CisKKyAgICAgICAgQWxsIHRoZSBSZW5kZXJPYmplY3RzIHRoYXQgaGF2ZSBhIHNwZWNpZmllZCAi
ZmxvdyIgbmFtZSBhcmUgbW92ZWQgb3V0IG9mIHRoZQorICAgICAgICBub3JtYWwgZmxvdy4gQSBS
ZW5kZXJGbG93VGhyZWFkIHdpbGwgY29sbGVjdCBhbGwgc3VjaCBSZW5kZXJPYmplY3RzLiBUaGVy
ZSBpcworICAgICAgICBhIFJlbmRlckZsb3dUaHJlYWQgZm9yIGVhY2ggZmxvdyBuYW1lLiBUaGUg
bmV3IFJlbmRlckZsb3dUaHJlYWQgaXMgYW4gYW5vbnltb3VzCisgICAgICAgIFJlbmRlckJsb2Nr
IHRoYXQgaXMgcG9zaXRpb25lZCBhYnNvbHV0ZSBhbmQgd2lsbCBub3QgcmVuZGVyIGRpcmVjdGx5
LiBJbiBhCisgICAgICAgIGRpZmZlcmVudCBidWcvcGF0Y2ggd2Ugd2lsbCBhZGQgUmVuZGVyUmVn
aW9uIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgcmVuZGVyaW5nIHRoZQorICAgICAgICBSZW5kZXJG
bG93VGhyZWFkIG9uIHNjcmVlbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5l
c3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVy
ZXIuaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZmYpOgorICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6aGFzRmxvd1RocmVhZFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50Rmxvd1JlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpwcmV2aW91c1JlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0
b1JlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJGbG93VGhyZWFkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVuZGVy
Rmxvd1RocmVhZFdpdGhOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisKIDIwMTEtMDctMTkgIFN0ZXZlIExhY2V5ICA8c2ps
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlhIHBsYXllciBjb250cm9s
cyBkbyBub3QgZmFkZSBvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDA4MzYzYjIuLmY4YjE0OGQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNDg3NCw2ICszNDg3NCwxNCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdc
UmVuZGVyRmxvd1RocmVhZC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJGbG93VGhyZWFkLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDg3Yjc1YWIuLmJiZmFhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDYsNiArMTMwNiw4IEBACiAJCTRGRDhEMEYzMTE5
QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0
R0NFdmVudC5oICovOyB9OwogCQk1MDFCQTlFMjEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNo
YXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAx
QkE5RTExMzkzQ0VBMDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FD
RUIgLyogV2luZFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUwOENDQTRGMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5oICovOyB9OworCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07
CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIw
MEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwICovOyB9OwpAQCAtNzg3NSw2ICs3ODc3LDggQEAKIAkJNTAxQkE5RTExMzkzQ0VB
MDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTV3JhcFNoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDFC
QUFBODEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2luZFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAx
QkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTV3JhcFNoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhy
ZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyRmxvd1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
NTk2LDYgKzE5NjAwLDggQEAKIAkJCQlBOENGRjA0QzBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVM
YXlvdXQuaCAqLywKIAkJCQkzN0ZDOTZEQTExMDRFRDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9h
dHNSb290SW5saW5lQm94LmggKi8sCiAJCQkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZl
cnRpY2FsUG9zaXRpb25DYWNoZS5oICovLAorCQkJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAv
KiBSZW5kZXJGbG93VGhyZWFkLmggKi8sCisJCQkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8q
IFJlbmRlckZsb3dUaHJlYWQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSByZW5kZXJpbmc7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjMyMzcsNiArMjMyNDMsNyBAQAogCQkJCUZE
N0YyOTk3MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDgyRDdGODEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxM0EyNDIxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZp
ZXJzRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYwMjMsNiArMjYwMzAs
NyBAQAogCQkJCTI0RDkxMkIwMTNDQTlBMUYwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaERlZkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQjcxM0NBOUE2OTAwRDIxOTE1IC8qIFNW
R0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQkQxM0NB
OUE5NzAwRDIxOTE1IC8qIFNWR0dseXBoUmVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyZjMwYmI3Li5jOTgyZWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0zNTcsNiArMzU3LDEyIEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRpZmYo
Y29uc3QgUmVuZGVyU3R5bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIpCiAgICAgaWYgKChz
MSAmJiBzMikgJiYgKHMxLT5oYXNUZXh0Q29tYmluZSgpICE9IHMyLT5oYXNUZXh0Q29tYmluZSgp
KSkKICAgICAgICAgY2ggPSBEZXRhY2g7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAg
Ly8gV2UgbmVlZCB0byByZWF0dGFjaCB0aGUgbm9kZSwgc28gdGhhdCBpdCBpcyBtb3ZlZCB0byB0
aGUgY29ycmVjdCBSZW5kZXJGbG93VGhyZWFkLgorICAgIGlmICgoczEgJiYgczIpICYmIChzMS0+
Zmxvd1RocmVhZCgpICE9IHMyLT5mbG93VGhyZWFkKCkpKQorICAgICAgICBjaCA9IERldGFjaDsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIGNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAzYTE3MmQwLi41Y2VhMTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4LDggKzI4LDEwIEBACiAK
ICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUg
IlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBAIC00
Myw2ICs0NSw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChO
b2RlKiBub2RlKQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCiAgICAgLCBtX2lu
Y2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKDApCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAg
ICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewogICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpA
QCAtODMsNiArODgsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICwgbV92aXN1YWxQYXJlbnRT
aGFkb3dSb290KDApCiAgICAgLCBtX2luY2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCisj
ZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArMTAxLDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6On5O
b2RlUmVuZGVyaW5nQ29udGV4dCgpCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzZXRTdHls
ZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gc3R5bGU7
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgp
OworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpyZWxlYXNlU3R5bGUoKQpAQCAtMTU0LDYgKzE2NSwxMSBAQCBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPm5leHRTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYg
KG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVy
ZXItPm5leHRSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcGhh
c2UgPT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBmb3VuZCA9IG5leHRSZW5kZXJlck9mKG1faW5jbHVkZXIsIG1fbm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZm91bmQ7CkBAIC0xNjYsOCArMTgyLDE0IEBAIFJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5uZXh0U2libGluZygpOyBub2RlOyBub2Rl
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CisgICAgICAgICAgICAvLyBEbyBub3QgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIGF0dGFjaGVk
IHRvIGEgZGlmZmVyZW50IGZsb3ctdGhyZWFkLgorICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRl
cmVyKCktPnN0eWxlKCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisjZW5kaWYKICAgICAgICAg
ICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAgICB9CiAgICAgICAgIGlmIChub2Rl
LT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZp
cnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvU2hhZG93Q29udGVudEVsZW1lbnQobm9kZSkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKQEAgLTE4Myw2ICsyMDUsMTEgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCisgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9w
YXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CisjZW5k
aWYKKwogICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQpIHsKICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBwcmV2aW91c1JlbmRlcmVyT2YobV9pbmNsdWRl
ciwgbV9ub2RlKSkKICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKQEAgLTE5Miw4ICsyMTksMTQg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigp
IGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9p
ZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQg
YWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSBt
X25vZGUtPnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJs
aW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICAgICAgLy8g
RG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBm
bG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYm
ICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxlbWVu
dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVy
T2YodG9TaGFkb3dDb250ZW50RWxlbWVudChub2RlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGxhc3Q7CkBAIC0yMTAsNiArMjQzLDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5w
YXJlbnQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYgKG1fcGFy
ZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7Cisj
ZW5kaWYKKwogICAgIEFTU0VSVChtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVkKTsK
ICAgICByZXR1cm4gbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPyBtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKSA6IDA7CiB9CkBAIC0yNDgsNiArMjg2
LDE3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK3Zv
aWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpCit7Cisg
ICAgaWYgKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhbV9zdHlsZSB8fCBtX3N0eWxlLT5m
bG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zsb3dUaHJl
YWQgPSBtX3N0eWxlLT5mbG93VGhyZWFkKCk7CisgICAgQVNTRVJUKG1fbm9kZS0+ZG9jdW1lbnQo
KS0+cmVuZGVyVmlldygpKTsKKyAgICBtX3BhcmVudEZsb3dSZW5kZXJlciA9IG1fbm9kZS0+ZG9j
dW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUobV9mbG93VGhy
ZWFkKTsKK30KKyNlbmRpZgogCiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0
b3J5KE5vZGUqIG5vZGUpCiAgICAgOiBtX2NvbnRleHQobm9kZSkKQEAgLTMxNSw2ICszNjQsMTUg
QEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAg
ICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5uZXh0UmVuZGVyZXIoKTsK
ICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgp
OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX2NvbnRleHQuaGFzRmxvd1Ro
cmVhZFBhcmVudCgpKSB7CisgICAgICAgIHBhcmVudFJlbmRlcmVyID0gbV9jb250ZXh0LnBhcmVu
dEZsb3dSZW5kZXJlcigpOworICAgICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJl
bmRlcmVyKCkgaGVyZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUgCisgICAgICAgIC8vIHRo
ZSByZW5kZXJlciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCisgICAgICAgIG5leHRSZW5k
ZXJlciA9IG1fY29udGV4dC5wYXJlbnRGbG93UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9k
ZShub2RlKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBpZiAoZG9jdW1lbnQtPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50LT53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBub2RlKQogICAgICAgICBuZXdSZW5kZXJlciA9
IHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihuZXdSZW5kZXJlciwgZG9jdW1lbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5YTYyM2U0Li4zNTYwNTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM5LDYgKzQwLDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
U2hhZG93Q29udGVudEVsZW1lbnQ7CiBjbGFzcyBTaGFkb3dSb290OwogCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKKyNlbmRpZgorCiBjbGFzcyBOb2Rl
UmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTm9kZVJlbmRlcmluZ0Nv
bnRleHQoTm9kZSopOwpAQCAtNjAsNiArNjUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBob3N0
Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgYm9vbCBo
YXNGbG93VGhyZWFkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7
IH0KKyAgICBSZW5kZXJGbG93VGhyZWFkKiBwYXJlbnRGbG93UmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsgfQorICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElm
TmVlZGVkKCk7CisjZW5kaWYKIHByaXZhdGU6CiAKICAgICBlbnVtIFRyZWVMb2NhdGlvbiB7CkBA
IC04Miw2ICs5MiwxMCBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdDsKICAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAg
IFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOworICAgIEF0b21pY1N0cmlu
ZyBtX2Zsb3dUaHJlYWQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBOb2RlKiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6bm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiNGE3
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisKKyNpbmNs
dWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCisKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChOb2RlKiBu
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpCisgICAgICA6IFJlbmRlckJsb2Nr
KG5vZGUpCisgICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQoreworICAgIHNldElzQW5v
bnltb3VzKGZhbHNlKTsKKyAgICBzZXRTdHlsZShjcmVhdGVGbG93VGhyZWFkU3R5bGUoKSk7Cit9
CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZSgpCit7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZShSZW5kZXJT
dHlsZTo6Y3JlYXRlKCkpOworICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICBu
ZXdTdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CisgICAgbmV3U3R5bGUtPnNl
dExlZnQoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldFRvcChMZW5ndGgoMCwg
Rml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOwor
ICAgIG5ld1N0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIG5ld1N0
eWxlLT5zZXRPdmVyZmxvd1goT0hJRERFTik7CisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WShP
SElEREVOKTsKKyAgICBuZXdTdHlsZS0+Zm9udCgpLnVwZGF0ZSgwKTsKKyAgICAKKyAgICByZXR1
cm4gbmV3U3R5bGUucmVsZWFzZSgpOworfQorCitSZW5kZXJPYmplY3QqIFJlbmRlckZsb3dUaHJl
YWQ6Om5leHRSZW5kZXJlckZvck5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIEFTU0VSVChjaGlsZC0+bm9kZSgpKTsKKyAgICAgICAg
dW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBub2RlLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihj
aGlsZC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9T
SVRJT05fRk9MTE9XSU5HKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkOworICAgIH0KKyAgICBy
ZXR1cm4gMDsKK30KKworUmVuZGVyT2JqZWN0KiBSZW5kZXJGbG93VGhyZWFkOjpwcmV2aW91c1Jl
bmRlcmVyRm9yTm9kZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJs
aW5nKCkpIHsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOworICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBwb3NpdGlvbiA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGNoaWxkLT5u
b2RlKCkpOworICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9Q
UkVDRURJTkcpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorICAgIHJldHVybiAw
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1JF
R0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2Y0MWM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMCwwICsx
LDkzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMg
SVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlckZsb3dU
aHJlYWRfaAorI2RlZmluZSBSZW5kZXJGbG93VGhyZWFkX2gKKworI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKKworI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJTdHls
ZTsKKworLy8gUmVuZGVyRmxvd1RocmVhZCBpcyB1c2VkIHRvIGNvbGxlY3QgYWxsIHRoZSByZW5k
ZXIgb2JqZWN0cyB0aGF0IHBhcnRpY2lwYXRlIGluIGEKKy8vIGZsb3cgdGhyZWFkLiBJdCB3aWxs
IGFsc28gaGVscCBpbiBkb2luZyB0aGUgbGF5b3V0LiBIb3dldmVyLCBpdCB3aWxsIG5vdCByZW5k
ZXIKKy8vIGRpcmVjdGx5IHRvIHNjcmVlbi4gSW5zdGVhZCwgUmVuZGVyUmVnaW9uIG9iamVjdHMg
d2lsbCByZWRpcmVjdCB0aGVpciBwYWludCAKKy8vIGFuZCBub2RlQXRQb2ludCBtZXRob2RzIHRv
IHRoaXMgb2JqZWN0LiBFYWNoIFJlbmRlclJlZ2lvbiB3aWxsIGFjdHVhbGx5IGJlIGEgdmlld1Bv
cnQKKy8vIG9mIHRoZSBSZW5kZXJGbG93VGhyZWFkLgorCitjbGFzcyBSZW5kZXJGbG93VGhyZWFk
OiBwdWJsaWMgUmVuZGVyQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlckZsb3dUaHJlYWQoTm9k
ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCk7CisgICAgCisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAg
ICBBdG9taWNTdHJpbmcgZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsg
fQorICAgIAorICAgIC8vIE92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHNvIHRoYXQg
d2UgYXZvaWQgcmVuZGVyaW5nIHRoZSBSZW5kZXJGbG93VGhyZWFkIGRpcmVjdGx5LgorICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShwb2ludEluQ29udGFpbmVyKTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlckZvck5vZGUoTm9kZSop
IGNvbnN0OworICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlckZvck5vZGUoTm9kZSop
IGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKCk7CisgICAgCisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dUaHJlYWQiOyB9CisgICAg
QXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKK307CisKK2lubGluZSBSZW5kZXJGbG93VGhyZWFk
KiB0b1JlbmRlckZsb3dUaHJlYWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJU
KCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlckZsb3dUaHJlYWQqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwg
Y2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyRmxv
d1RocmVhZChjb25zdCBSZW5kZXJGbG93VGhyZWFkKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2VuZGlmIC8vIFJlbmRlckZs
b3dUaHJlYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDk3
N2U4NzAuLjMyMDJlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
QEAgLTMxNSw2ICszMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1
bGxTY3JlZW5QbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGbG93VGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc1Jvb3Qo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBtX25vZGU7
IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0OwogICAgIGJvb2wgaXNIUigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGMyZDRl
ZmUuLmEzYTQ1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1
ZGUgIlJlbmRlckRldGFpbHNNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJ
dGVtLmgiCkBAIC0yNDMsNiArMjQ0LDEzIEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVS
ZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAg
ICAgICAgICAgICB0cyA8PCAiICplbXB0eSBvciB1bnN0eWxlZCBBcHBsZVN0eWxlU3BhbioiOwog
ICAgICAgICB9CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAo
by5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFk
JiByZW5kZXJGbG93VGhyZWFkID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyRmxvd1RocmVhZCY+
KG8pOworICAgICAgICB0cyA8PCAiIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJl
YWQuZmxvd1RocmVhZCgpIDw8ICInIjsKKyAgICB9CisjZW5kaWYKIAogICAgIGJvb2wgYWRqdXN0
Rm9yVGFibGVDZWxscyA9IG8uY29udGFpbmluZ0Jsb2NrKCktPmlzVGFibGVDZWxsKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBkY2E3M2M3Li4wYTAyYzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clNlbGVjdGlvbkluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTc4Miw0ICs3
ODMsMjIgQEAgdm9pZCBSZW5kZXJWaWV3Ojp3aWxsTW92ZU9mZnNjcmVlbigpCiAjZW5kaWYKIH0K
IAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK1JlbmRlckZsb3dUaHJlYWQqIFJlbmRlclZpZXc6
OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQp
Cit7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZmlyc3RDaGlsZCgpOyByZW5k
ZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
cmVuZGVyZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgICAgICBSZW5kZXJGbG93
VGhyZWFkKiBmbG93UmVuZGVyZXIgPSB0b1JlbmRlckZsb3dUaHJlYWQocmVuZGVyZXIpOworICAg
ICAgICAgICAgaWYgKGZsb3dSZW5kZXJlci0+Zmxvd1RocmVhZCgpID09IGZsb3dUaHJlYWQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IG5ldyAocmVuZGVyQXJlbmEoKSkg
UmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCgpLCBmbG93VGhyZWFkKTsKKyAgICBhZGRDaGlsZChm
bG93UmVuZGVyZXIpOworICAgIAorICAgIHJldHVybiBmbG93UmVuZGVyZXI7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggMGEzYWQwZS4uNjc3MDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCkBAIC0zMSw2ICszMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlcldpZGdldDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK2NsYXNzIFJlbmRlckZsb3dU
aHJlYWQ7CisjZW5kaWYKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGNsYXNz
IFJlbmRlckxheWVyQ29tcG9zaXRvcjsKICNlbmRpZgpAQCAtMTYzLDYgKzE2NywxMCBAQCBwdWJs
aWM6CiAKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorICAgIFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOworI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQ
b2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCA3ZmYwOWM2Li4xODYwYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTM0Niw4ICszNDYsNyBAQCBTdHlsZURpZmZlcmVuY2Ug
UmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyLCB1bnNpZ25lZCYgY2hh
bmdlZENvbgogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2Zsb3dUaHJlYWQgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQK
LSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZCAhPSBv
dGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkCisgICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQgIT0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZAogICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fcmVnaW9uSW5kZXggIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Jl
Z2lvbkluZGV4CiAgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25P
dmVyZmxvdyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uT3ZlcmZsb3cp
CiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101467</attachid>
            <date>2011-07-20 07:27:41 -0700</date>
            <delta_ts>2011-07-21 02:40:12 -0700</delta_ts>
            <desc>Patch with forced RenderLayer</desc>
            <filename>bug64516_4.patch</filename>
            <type>text/plain</type>
            <size>34604</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmU2ZDA2Li5jNDg3ZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDct
MjAgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDctMjAgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3IgcjkxMzMxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1m
bG93LXJlbmRlcmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjgzMWNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckZsb3dUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3dBJyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxv
d0EiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAKKyAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDkxOiAiRElWMSAtIGZsb3dBIgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckZsb3dUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY1IC0gZmxvd0IiCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgODAweDAK
KyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkweDE4CisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNyAtIGZsb3dCIgorICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIgLSBmbG93
QiIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggOTA6ICJESVY2IC0gZmxvd0IiCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnIGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA5MDogIkRJVjMgLSBmbG93QyIKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDgwMHgwCisgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA4MDB4MAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY4IC0gZmxvd0MiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjM0
MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZs
b3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0EnIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA4MDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA4MDB4MAorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSA4MDB4
MAorICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXplIDgwMHgwCisgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJVjMgLSBmbG93QSIKKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyRmxvd1RocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgODAweDAKKyAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwwKSBzaXplIDgwMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5MHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIg
LSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxv
dy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jNjQwNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NU
WVBFIEhUTUw+CisKKzxkaXYgaWQ9IkRJVjEiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dBJzsi
PgorICAgIERJVjEgLSBmbG93QQorICAgIDxkaXYgaWQ9IkRJVjIiIHN0eWxlPSItd2Via2l0LWZs
b3c6J2Zsb3dCJzsiPkRJVjIgLSBmbG93QjwvZGl2PgorICAgIDxwPgorICAgICAgICA8ZGl2IGlk
PSJESVYzIiBzdHlsZT0iLXdlYmtpdC1mbG93OidmbG93QSc7Ij5ESVYzIC0gZmxvd0E8L2Rpdj4K
KyAgICA8L3A+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZDgzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIuaHRtbApAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKworPGRpdiBpZD0iRElWMSIgc3R5bGU9Ii13ZWJr
aXQtZmxvdzonZmxvd0EnOyI+RElWMSAtIGZsb3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIiBzdHls
ZT0iLXdlYmtpdC1mbG93OidmbG93Qic7Ij5ESVYyIC0gZmxvd0I8L2Rpdj4KKzxkaXYgaWQ9IkRJ
VjMiIHN0eWxlPSItd2Via2l0LWZsb3c6J2Zsb3dDJzsiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAg
ZWwuc2V0QXR0cmlidXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7Cisg
ICAgZWwuaW5uZXJIVE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQor
ICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoYmVmb3JlKSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsKTsKK30KKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBE
SVYxIChzYW1lIGZsb3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOwor
CisvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVu
dCBmbG93LXRocmVhZCkuCit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5z
ZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10
aHJlYWQpLgordGVzdCgiRElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5l
dyBlbGVtZW50IGluIGZsb3dCLCBiZWZvcmUgRElWMiAoc2FtZSBmbG93LXRocmVhZCkuCit0ZXN0
KCJESVY3IiwgImZsb3dCIiwgIkRJVjIiKTsKKworLy8gQXBwZW5kIGEgbmV3IGVsZW1lbnQgaW4g
Zmxvd0MuCit0ZXN0KCJESVY4IiwgImZsb3dDIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjMwNGEzLi44ZTk5MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDctMjAg
IEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NS
ZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVsZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTE2
CisKKyAgICAgICAgQWxsIHRoZSBSZW5kZXJPYmplY3RzIHRoYXQgaGF2ZSBhIHNwZWNpZmllZCAi
ZmxvdyIgbmFtZSBhcmUgbW92ZWQgb3V0IG9mIHRoZQorICAgICAgICBub3JtYWwgZmxvdy4gQSBS
ZW5kZXJGbG93VGhyZWFkIHdpbGwgY29sbGVjdCBhbGwgc3VjaCBSZW5kZXJPYmplY3RzLiBUaGVy
ZSBpcworICAgICAgICBhIFJlbmRlckZsb3dUaHJlYWQgZm9yIGVhY2ggZmxvdyBuYW1lLiBUaGUg
bmV3IFJlbmRlckZsb3dUaHJlYWQgaXMgYW4gYW5vbnltb3VzCisgICAgICAgIFJlbmRlckJsb2Nr
IHRoYXQgaXMgcG9zaXRpb25lZCBhYnNvbHV0ZSBhbmQgd2lsbCBub3QgcmVuZGVyIGRpcmVjdGx5
LiBJbiBhCisgICAgICAgIGRpZmZlcmVudCBidWcvcGF0Y2ggd2Ugd2lsbCBhZGQgUmVuZGVyUmVn
aW9uIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgcmVuZGVyaW5nIHRoZQorICAgICAgICBSZW5kZXJG
bG93VGhyZWFkIG9uIHNjcmVlbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5l
c3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVy
ZXIuaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZmYpOgorICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6aGFzRmxvd1RocmVhZFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50Rmxvd1JlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpwcmV2aW91c1JlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0
b1JlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc1N0YWNraW5n
Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZW5kZXJGbG93VGhyZWFk
V2l0aE5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpkaWZmKToKKwogMjAxMS0wNy0xOSAgU3RldmUgTGFjZXkgIDxzamxAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWEgcGxheWVyIGNvbnRyb2xzIGRvIG5vdCBm
YWRlIG91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggMDgzNjNiMi4uZjhiMTQ4ZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM0ODc0LDYgKzM0ODc0LDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJGbG93
VGhyZWFkLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZsb3dUaHJlYWQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xSZW5kZXJGb3JlaWdu
T2JqZWN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdiNzVhYi4u
YmJmYWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTMwNiw2ICsxMzA2LDggQEAKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZB
ODI1IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50Lmgg
Ki87IH07CiAJCTUwMUJBOUUyMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQTlFMTEzOTND
RUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5k
UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAx
QkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8q
IFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmgg
Ki87IH07CisJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRF
MTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKIAkJNTBFNTY2
RDYxMzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8q
IENTU1dyYXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAg
Ki87IH07CkBAIC03ODc1LDYgKzc4NzcsOCBAQAogCQk1MDFCQTlFMTEzOTNDRUEwMDBGN0FDRUIg
LyogQ1NTV3JhcFNoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NX
cmFwU2hhcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMUJBQUE4MTM5NTBF
MkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXaW5kUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDFCQUFCMTEzOTUx
MTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVy
Rmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0Njcw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAx
ODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1F
cnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1OTYsNiArMTk2
MDAsOCBAQAogCQkJCUE4Q0ZGMDRDMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oICov
LAogCQkJCTM3RkM5NkRBMTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3guaCAqLywKIAkJCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3Np
dGlvbkNhY2hlLmggKi8sCisJCQkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZs
b3dUaHJlYWQuaCAqLywKKwkJCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbmRlcmluZzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzIzNyw2ICsyMzI0Myw3IEBACiAJCQkJRkQ3RjI5OTcxM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OTEzQTI0MjEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVy
Rmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjAyMyw2ICsyNjAzMCw3IEBACiAJCQkJ
MjREOTEyQjAxM0NBOUExRjAwRDIxOTE1IC8qIFNWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyNEQ5MTJCNzEzQ0E5QTY5MDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhJ
dGVtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNEQ5MTJCRDEzQ0E5QTk3MDBEMjE5
MTUgLyogU1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwOENDQTUw
MTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IDJmMzBiYjcuLmM5ODJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTM1Nyw2ICszNTcsMTIgQEAgTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlmZihjb25zdCBSZW5k
ZXJTdHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBzMikKICAgICBpZiAoKHMxICYmIHMyKSAm
JiAoczEtPmhhc1RleHRDb21iaW5lKCkgIT0gczItPmhhc1RleHRDb21iaW5lKCkpKQogICAgICAg
ICBjaCA9IERldGFjaDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAvLyBXZSBuZWVk
IHRvIHJlYXR0YWNoIHRoZSBub2RlLCBzbyB0aGF0IGl0IGlzIG1vdmVkIHRvIHRoZSBjb3JyZWN0
IFJlbmRlckZsb3dUaHJlYWQuCisgICAgaWYgKChzMSAmJiBzMikgJiYgKHMxLT5mbG93VGhyZWFk
KCkgIT0gczItPmZsb3dUaHJlYWQoKSkpCisgICAgICAgIGNoID0gRGV0YWNoOworI2VuZGlmCisK
ICAgICByZXR1cm4gY2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDNhMTcyZDAuLjVjZWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjgsOCArMjgsMTAgQEAKIAogI2luY2x1ZGUg
IkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyRmxv
d1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hhZG93Q29u
dGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTQzLDYgKzQ1LDkg
QEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUp
CiAgICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKICAgICAsIG1faW5jbHVkZXIoMCkK
ICAgICAsIG1fc3R5bGUoMCkKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgLCBtX3BhcmVu
dEZsb3dSZW5kZXJlcigwKQorI2VuZGlmCiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0g
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCkBAIC04Myw2ICs4
OCw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBu
b2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Qo
MCkKICAgICAsIG1faW5jbHVkZXIoMCkKICAgICAsIG1fc3R5bGUoc3R5bGUpCisjaWYgRU5BQkxF
KENTU19SRUdJT05TKQorICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewog
fQogCkBAIC05Myw2ICsxMDEsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6fk5vZGVSZW5kZXJp
bmdDb250ZXh0KCkKIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNldFN0eWxlKFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3R5bGUgPSBzdHlsZTsKKyNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCisgICAgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CisjZW5kaWYK
IH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVh
c2VTdHlsZSgpCkBAIC0xNTQsNiArMTY1LDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+bmV4
dFNpYmxpbmcoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9wYXJlbnRG
bG93UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlci0+bmV4dFJl
bmRlcmVyRm9yTm9kZShtX25vZGUpOworI2VuZGlmCisKICAgICBpZiAobV9waGFzZSA9PSBBdHRh
Y2hDb250ZW50Rm9yd2FyZGVkKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZvdW5kID0g
bmV4dFJlbmRlcmVyT2YobV9pbmNsdWRlciwgbV9ub2RlKSkKICAgICAgICAgICAgIHJldHVybiBm
b3VuZDsKQEAgLTE2Niw4ICsxODIsMTQgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBp
ZiAobm9kZS0+cmVuZGVyZXIoKSkgeworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAgICAg
ICAgIC8vIERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZm
ZXJlbnQgZmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKSAmJiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJu
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVu
dEVsZW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogZmlyc3QgPSBmaXJz
dFJlbmRlcmVyT2YodG9TaGFkb3dDb250ZW50RWxlbWVudChub2RlKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZpcnN0OwpAQCAtMTgzLDYgKzIwNSwxMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyLT5wcmV2aW91c1NpYmxpbmcoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAg
ICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dS
ZW5kZXJlci0+cHJldmlvdXNSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKKyNlbmRpZgorCiAgICAg
aWYgKG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkgewogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBmb3VuZCA9IHByZXZpb3VzUmVuZGVyZXJPZihtX2luY2x1ZGVyLCBtX25vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwpAQCAtMTkyLDggKzIxOSwxNCBAQCBSZW5kZXJP
YmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBu
ZXh0UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQs
IHNldmVyYWwgdGVzdHMgZmFpbGVkLgogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewot
ICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVy
KCkpIHsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgICAgICAgICAvLyBEbyBub3QgcmV0
dXJuIGVsZW1lbnRzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGZsb3ctdGhyZWFk
LgorICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkgJiYgIW5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigp
OworICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKICAg
ICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGxhc3QgPSBsYXN0UmVuZGVyZXJPZih0b1NoYWRv
d0NvbnRlbnRFbGVtZW50KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKQEAg
LTIxMCw2ICsyNDMsMTEgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFy
ZW50UmVuZGVyZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9wYXJlbnRGbG93UmVu
ZGVyZXIpCisgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKKyNlbmRpZgorCiAg
ICAgQVNTRVJUKG1fbG9jYXRpb24gIT0gTG9jYXRpb25VbmRldGVybWluZWQpOwogICAgIHJldHVy
biBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA/IG1fcGFyZW50Tm9kZUZvclJlbmRl
cmluZ0FuZFN0eWxlLT5yZW5kZXJlcigpIDogMDsKIH0KQEAgLTI0OCw2ICsyODYsMTcgQEAgYm9v
bCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQordm9pZCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6bW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1f
bm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFtX3N0eWxlIHx8IG1fc3R5bGUtPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmxvd1RocmVhZCA9IG1fc3R5
bGUtPmZsb3dUaHJlYWQoKTsKKyAgICBBU1NFUlQobV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCkpOworICAgIG1fcGFyZW50Rmxvd1JlbmRlcmVyID0gbV9ub2RlLT5kb2N1bWVudCgpLT5y
ZW5kZXJWaWV3KCktPnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShtX2Zsb3dUaHJlYWQpOworfQor
I2VuZGlmCiAKIE5vZGVSZW5kZXJlckZhY3Rvcnk6Ok5vZGVSZW5kZXJlckZhY3RvcnkoTm9kZSog
bm9kZSkKICAgICA6IG1fY29udGV4dChub2RlKQpAQCAtMzE1LDYgKzM2NCwxNSBAQCB2b2lkIE5v
ZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogICAgIFJlbmRlck9i
amVjdCogbmV4dFJlbmRlcmVyID0gbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpOwogICAgIFJlbmRl
ck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7CiAKKyNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYgKG1fY29udGV4dC5oYXNGbG93VGhyZWFkUGFyZW50
KCkpIHsKKyAgICAgICAgcGFyZW50UmVuZGVyZXIgPSBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRl
cmVyKCk7CisgICAgICAgIC8vIERvIG5vdCBjYWxsIG1fY29udGV4dC5uZXh0UmVuZGVyZXIoKSBo
ZXJlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8gaGF2ZSAKKyAgICAgICAgLy8gdGhlIHJlbmRlcmVy
IGFkZGVkIHRvIGl0cyBwYXJlbnQgYWxyZWFkeS4KKyAgICAgICAgbmV4dFJlbmRlcmVyID0gbV9j
b250ZXh0LnBhcmVudEZsb3dSZW5kZXJlcigpLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG5vZGUpOwor
ICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChkb2N1
bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQtPndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCgpID09IG5vZGUpCiAgICAgICAgIG5ld1JlbmRlcmVyID0gd3JhcFdpdGhS
ZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBkb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDlhNjIzZTQuLjM1NjA1MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzksNiArNDAsMTAgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBTaGFkb3dDb250
ZW50RWxlbWVudDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CitjbGFzcyBSZW5kZXJGbG93VGhyZWFkOworI2VuZGlmCisKIGNsYXNzIE5vZGVSZW5kZXJpbmdD
b250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
Kik7CkBAIC02MCw2ICs2NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhvc3RDaGlsZHJlbkNo
YW5nZWQoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBib29sIGhhc0Zsb3dUaHJl
YWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsgfQorICAgIFJl
bmRlckZsb3dUaHJlYWQqIHBhcmVudEZsb3dSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
ZW50Rmxvd1JlbmRlcmVyOyB9CisgICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsK
KyNlbmRpZgogcHJpdmF0ZToKIAogICAgIGVudW0gVHJlZUxvY2F0aW9uIHsKQEAgLTgyLDYgKzky
LDEwIEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
OwogICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBtX2luY2x1ZGVyOwogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbV9zdHlsZTsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgUmVuZGVyRmxv
d1RocmVhZCogbV9wYXJlbnRGbG93UmVuZGVyZXI7CisgICAgQXRvbWljU3RyaW5nIG1fZmxvd1Ro
cmVhZDsKKyNlbmRpZgogfTsKIAogaW5saW5lIE5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpu
b2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWI0YTdkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3Bw
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKKworI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKE5vZGUqIG5vZGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkKKyAgICAgIDogUmVuZGVyQmxvY2sobm9kZSkKKyAg
ICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCit7CisgICAgc2V0SXNBbm9ueW1vdXMoZmFs
c2UpOworICAgIHNldFN0eWxlKGNyZWF0ZUZsb3dUaHJlYWRTdHlsZSgpKTsKK30KKworUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxl
KCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKFJlbmRlclN0eWxlOjpjcmVh
dGUoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAgIG5ld1N0eWxlLT5z
ZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKKyAgICBuZXdTdHlsZS0+c2V0TGVmdChMZW5n
dGgoMCwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0VG9wKExlbmd0aCgwLCBGaXhlZCkpOwor
ICAgIG5ld1N0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5
bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNldE92
ZXJmbG93WChPSElEREVOKTsKKyAgICBuZXdTdHlsZS0+c2V0T3ZlcmZsb3dZKE9ISURERU4pOwor
ICAgIG5ld1N0eWxlLT5mb250KCkudXBkYXRlKDApOworICAgIAorICAgIHJldHVybiBuZXdTdHls
ZS5yZWxlYXNlKCk7Cit9CisKK1JlbmRlck9iamVjdCogUmVuZGVyRmxvd1RocmVhZDo6bmV4dFJl
bmRlcmVyRm9yTm9kZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOworICAgICAgICB1bnNpZ25lZCBz
aG9ydCBwb3NpdGlvbiA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGNoaWxkLT5ub2Rl
KCkpOworICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitSZW5kZXJPYmplY3QqIFJlbmRlckZsb3dUaHJlYWQ6OnByZXZpb3VzUmVuZGVyZXJGb3JO
b2RlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewor
ICAgICAgICBBU1NFUlQoY2hpbGQtPm5vZGUoKSk7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBv
c2l0aW9uID0gbm9kZS0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oY2hpbGQtPm5vZGUoKSk7Cisg
ICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNWI5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyRmxvd1RocmVhZF9oCisj
ZGVmaW5lIFJlbmRlckZsb3dUaHJlYWRfaAorCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorCisj
aW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclN0eWxlOworCisvLyBS
ZW5kZXJGbG93VGhyZWFkIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIHJlbmRlciBvYmplY3Rz
IHRoYXQgcGFydGljaXBhdGUgaW4gYQorLy8gZmxvdyB0aHJlYWQuIEl0IHdpbGwgYWxzbyBoZWxw
IGluIGRvaW5nIHRoZSBsYXlvdXQuIEhvd2V2ZXIsIGl0IHdpbGwgbm90IHJlbmRlcgorLy8gZGly
ZWN0bHkgdG8gc2NyZWVuLiBJbnN0ZWFkLCBSZW5kZXJSZWdpb24gb2JqZWN0cyB3aWxsIHJlZGly
ZWN0IHRoZWlyIHBhaW50IAorLy8gYW5kIG5vZGVBdFBvaW50IG1ldGhvZHMgdG8gdGhpcyBvYmpl
Y3QuIEVhY2ggUmVuZGVyUmVnaW9uIHdpbGwgYWN0dWFsbHkgYmUgYSB2aWV3UG9ydAorLy8gb2Yg
dGhlIFJlbmRlckZsb3dUaHJlYWQuCisKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ6IHB1YmxpYyBS
ZW5kZXJCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyRmxvd1RocmVhZChOb2RlKiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZs
b3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBBdG9taWNTdHJpbmcgZmxv
d1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQorCisgICAgLy8gQWx3YXlz
IGNyZWF0ZSBhIFJlbmRlckxheWVyIGZvciB0aGUgUmVuZGVyRmxvd1RocmVhZCwgc28gdGhhdCB3
ZSAKKyAgICAvLyBjYW4gZWFzaWx5IGF2b2lkIHRvIGRyYXcgaXQncyBjaGlsZHJlbiBkaXJlY3Rs
eS4KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKworICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyRm9yTm9kZShOb2RlKikgY29uc3Q7
CisgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyRm9yTm9kZShOb2RlKikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZs
b3dUaHJlYWRTdHlsZSgpOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dUaHJlYWQiOyB9CisgICAgQXRvbWljU3RyaW5nIG1f
Zmxvd1RocmVhZDsKK307CisKK2lubGluZSBSZW5kZXJGbG93VGhyZWFkKiB0b1JlbmRlckZsb3dU
aHJlYWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2Jq
ZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRl
ckZsb3dUaHJlYWQqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRv
aW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyRmxvd1RocmVhZChjb25zdCBS
ZW5kZXJGbG93VGhyZWFkKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfUkVHSU9OUykKKworI2VuZGlmIC8vIFJlbmRlckZsb3dUaHJlYWRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggN2MwY2Y0OS4uY2QzZTJi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNTQzLDYg
KzI1NDMsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9v
dExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCisgICAgLy8gRG8gbm90IGxldCB0aGUgUmVuZGVyRmxvd1RocmVhZCB0byBy
ZW5kZXIgZGlyZWN0bHkgdG8gc2NyZWVuLiBJdCB3aWxsIG9ubHkgcmVuZGVyCisgICAgLy8gaW5z
aWRlIHRoZSBSZW5kZXJSZWdpb25zLgorICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbmRlckZsb3dU
aHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICAvLyBBdm9pZCBwYWludGlu
ZyBsYXllcnMgd2hlbiBzdHlsZXNoZWV0cyBoYXZlbid0IGxvYWRlZC4gIFRoaXMgZWxpbWluYXRl
cyBGT1VDLgogICAgIC8vIEl0J3Mgb2sgbm90IHRvIGRyYXcsIGJlY2F1c2UgbGF0ZXIgb24sIHdo
ZW4gYWxsIHRoZSBzdHlsZXNoZWV0cyBkbyBsb2FkLCB1cGRhdGVTdHlsZVNlbGVjdG9yIG9uIHRo
ZSBEb2N1bWVudAogICAgIC8vIHdpbGwgZG8gYSBmdWxsIHJlcGFpbnQoKS4KQEAgLTI5NzksNiAr
Mjk4NiwxMyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogewogICAgIC8vIFRoZSBuYXR1cmFs
IHRoaW5nIHdvdWxkIGJlIHRvIGtlZXAgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlIG9uIHRoZSBz
dGFjaywgYnV0IGl0J3MgYmlnLCBzbyB3ZSBoZWFwLWFsbG9jYXRlLgogCisjaWYgRU5BQkxFKENT
U19SRUdJT05TKQorICAgIC8vIERvIG5vdCBsZXQgdGhlIFJlbmRlckZsb3dUaHJlYWQgdG8gZ2V0
IGV2ZW50cyBkaXJlY3RseS4gSXQgd2lsbCBnZXQgZXZlbnRzCisgICAgLy8gZnJvbSBpbnNpZGUg
dGhlIFJlbmRlclJlZ2lvbnMuCisgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVuZGVyRmxvd1RocmVh
ZCgpKQorICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgorCiAgICAgYm9vbCB1c2VUZW1wb3JhcnlD
bGlwUmVjdHMgPSBmYWxzZTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
dXNlVGVtcG9yYXJ5Q2xpcFJlY3RzID0gY29tcG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3YzgzYzAxLi44MDgz
Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzI0LDcgKzMy
NCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gR2V0IHRoZSBlbmNsb3Npbmcgc3RhY2tpbmcgY29udGV4
dCBmb3IgdGhpcyBsYXllci4gIEEgc3RhY2tpbmcgY29udGV4dCBpcyBhIGxheWVyCiAgICAgLy8g
dGhhdCBoYXMgYSBub24tYXV0byB6LWluZGV4LgogICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0Nv
bnRleHQoKSBjb25zdDsKLSAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gIWhhc0F1dG9aSW5kZXgoKSB8fCByZW5kZXJlcigpLT5pc1JlbmRlclZpZXcoKTsgfQorICAg
IGJvb2wgaXNTdGFja2luZ0NvbnRleHQoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHRyeWluZyB0byBtaXggZWxl
bWVudHMgZnJvbSBkaWZmZXJlbnQgZmxvd3MuCisgICAgICAgIGlmIChyZW5kZXJlcigpLT5pc1Jl
bmRlckZsb3dUaHJlYWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAg
ICAgIHJldHVybiAhaGFzQXV0b1pJbmRleCgpIHx8IHJlbmRlcmVyKCktPmlzUmVuZGVyVmlldygp
OworICAgIH0KIAogICAgIHZvaWQgZGlydHlaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgZGlydHlT
dGFja2luZ0NvbnRleHRaT3JkZXJMaXN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCmluZGV4IDk3N2U4NzAuLjMyMDJlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMxNSw2ICszMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgor
CiAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSA9PSBtX25vZGU7IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0OwogICAgIGJvb2wg
aXNIUigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCmluZGV4IGMyZDRlZmUuLmEzYTQ1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFpbHNNYXJrZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIK
ICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC0yNDMsNiArMjQ0LDEzIEBAIHZvaWQgUmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywKICAgICAgICAgICAgICAgICB0cyA8PCAiICplbXB0eSBvciB1bnN0eWxlZCBB
cHBsZVN0eWxlU3BhbioiOwogICAgICAgICB9CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKKyAgICBpZiAoby5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICBjb25z
dCBSZW5kZXJGbG93VGhyZWFkJiByZW5kZXJGbG93VGhyZWFkID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
UmVuZGVyRmxvd1RocmVhZCY+KG8pOworICAgICAgICB0cyA8PCAiIHdpdGggZmxvdy1uYW1lICci
IDw8IHJlbmRlckZsb3dUaHJlYWQuZmxvd1RocmVhZCgpIDw8ICInIjsKKyAgICB9CisjZW5kaWYK
IAogICAgIGJvb2wgYWRqdXN0Rm9yVGFibGVDZWxscyA9IG8uY29udGFpbmluZ0Jsb2NrKCktPmlz
VGFibGVDZWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRl
eCBkY2E3M2M3Li4wYTAyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgorI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogI2luY2x1ZGUgIlJlbmRlclNlbGVjdGlvbkluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJXaWRn
ZXQuaCIKQEAgLTc4Miw0ICs3ODMsMjIgQEAgdm9pZCBSZW5kZXJWaWV3Ojp3aWxsTW92ZU9mZnNj
cmVlbigpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK1JlbmRlckZsb3dU
aHJlYWQqIFJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIGZsb3dUaHJlYWQpCit7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Zmlyc3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAg
ICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSB0b1JlbmRlckZsb3dUaHJl
YWQocmVuZGVyZXIpOworICAgICAgICAgICAgaWYgKGZsb3dSZW5kZXJlci0+Zmxvd1RocmVhZCgp
ID09IGZsb3dUaHJlYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCgpLCBmbG93VGhyZWFk
KTsKKyAgICBhZGRDaGlsZChmbG93UmVuZGVyZXIpOworICAgIAorICAgIHJldHVybiBmbG93UmVu
ZGVyZXI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMGEzYWQwZS4uNjc3MDAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMSw2ICszMSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlcldpZGdldDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
K2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CisjZW5kaWYKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKIGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsKICNlbmRpZgpAQCAtMTYz
LDYgKzE2NywxMCBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0
OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIFJlbmRlckZsb3dUaHJlYWQqIHJlbmRl
ckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOworI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBt
YXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAppbmRleCA3ZmYwOWM2Li4xODYwYTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTM0Niw4ICszNDYsNyBA
QCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUqIG90
aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENvbgogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVy
ZW5jZUxheW91dDsKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2Zsb3dUaHJlYWQKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3JlZ2lvblRocmVhZCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhy
ZWFkCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQgIT0g
b3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZAogICAgICAgICAgICAg
fHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uSW5kZXggIT0gb3RoZXItPnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3JlZ2lvbkluZGV4CiAgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9yZWdpb25PdmVyZmxvdyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcmVnaW9uT3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5
b3V0Owo=
</data>
<flag name="review"
          id="96391"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="96392"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101566</attachid>
            <date>2011-07-21 02:40:12 -0700</date>
            <delta_ts>2011-07-21 04:05:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516_5.patch</filename>
            <type>text/plain</type>
            <size>34555</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVu
ZGVyZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0
MDRjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0
LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKK0Zsb3cg
VGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICAgIGxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MTgKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxvd0EiCisgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA5MTogIkRJVjEgLSBmbG93QSIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdm
bG93QicKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckZsb3dU
aHJlYWQgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgODAweDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgOTB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElW
NSAtIGZsb3dCIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA4MDB4
MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY3IC0gZmxvd0IiCisgICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDgwMHgxOAorICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMDN4MTgKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwM3gxOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDM6ICJTUEFOMiAtIGZsb3dCIgorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTA6ICJESVY2IC0gZmxvd0IiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0MnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjMg
LSBmbG93QyIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAweDE4
CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWOCAtIGZsb3dDIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5k
ZXJlci1sYXllci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWZhMzZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93
ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisgICAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhyZWFkIGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgIFJl
bmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5k
ZXJGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDE4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWMiAtIGZsb3dCIgorICBUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3dDJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBsYXll
clR5cGU6IGJhY2tncm91bmQgb25seQorICAgIGxheWVyIGF0ICgwLDM2KSBzaXplIDkweDE4Cisg
ICAgICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IC0xIHtESVZ9IGF0ICgwLDM2KSBzaXpl
IDkweDE4CisgICAgICAgIFJlbmRlclRleHQgekk6IC0xIHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5
MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNCAtIGZsb3dD
IgorICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBsYXllclR5cGU6IGZvcmVncm91bmQg
b25seQorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MzYKKyAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVYzIC0gZmxvd0MiCisgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA5MDogIkRJVjUgLSBmbG93QyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjYjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisgICAgI0RJVjEgeworICAgICAg
ICAtd2Via2l0LWZsb3c6ICdmbG93QSc7CisgICAgICAgIC8qIGZvcmNlIGEgUmVuZGVyTGF5ZXIg
Ki8KKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgICAjRElWMiB7CisgICAg
ICAgIC13ZWJraXQtZmxvdzogJ2Zsb3dCJzsKKyAgICAgICAgLyogRm9yY2UgYSBjb21wb3NpdGVk
IFJlbmRlckxheWVyLiAqLworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAx
LCAxKTsKKyAgICB9CisgICAgCisgICAgI0RJVjMgeyAtd2Via2l0LWZsb3c6ICdmbG93Qyc7IH0K
KyAgICAKKyAgICAjRElWNSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
ei1pbmRleDogLTE7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iRElWMSI+RElWMSAtIGZs
b3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIj5ESVYyIC0gZmxvd0I8L2Rpdj4KKworPGRpdiBpZD0i
RElWMyI+CisgICAgRElWMyAtIGZsb3dDCisgICAgPGRpdiBpZD0iRElWNCI+RElWNSAtIGZsb3dD
PC9kaXY+CisgICAgPGRpdiBpZD0iRElWNSI+RElWNCAtIGZsb3dDPC9kaXY+Cis8L2Rpdj4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZs
b3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2QwZmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0EnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDApIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA5MXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJ
VjEgLSBmbG93QSIKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDB4MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAorICAg
ICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTE6ICJESVYzIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIg
LSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxv
dy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42OTA3ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSwgI0RJVjMgeyAtd2Via2l0LWZsb3c6J2Zsb3dB
JzsgfQorI0RJVjIgeyAtd2Via2l0LWZsb3c6J2Zsb3dCJzsgfQorPC9zdHlsZT4KKworPGRpdiBp
ZD0iRElWMSI+CisgICAgRElWMSAtIGZsb3dBCisgICAgPGRpdiBpZD0iRElWMiI+RElWMiAtIGZs
b3dCPC9kaXY+CisgICAgPHA+CisgICAgICAgIDxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93QTwv
ZGl2PgorICAgIDwvcD4KKzwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MmY3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSB7IC13ZWJr
aXQtZmxvdzonZmxvd0EnOyB9CisjU1BBTjIgeyAtd2Via2l0LWZsb3c6ICdmbG93Qic7IH0KKyNE
SVYzIHsgLXdlYmtpdC1mbG93OiAnZmxvd0MnOyB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJESVYx
Ij5ESVYxIC0gZmxvd0E8L2Rpdj4KKzxzcGFuIGlkPSJTUEFOMiI+U1BBTjIgLSBmbG93Qjwvc3Bh
bj4KKzxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rp
b24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAgZWwuc2V0QXR0cmlidXRl
KCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7CisgICAgZWwuaW5uZXJIVE1M
ID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQorICAgICAgICBkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYmVmb3JlKSk7
CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTsKK30KKwor
Ly8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBESVYxIChzYW1lIGZsb3ct
dGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOworCisvLyBJbnNlcnQgYSBu
ZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVudCBmbG93LXRocmVhZCku
Cit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1l
bnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10aHJlYWQpLgordGVzdCgi
RElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5ldyBlbGVtZW50IGluIGZs
b3dCLCBiZWZvcmUgU1BBTjIgKHNhbWUgZmxvdy10aHJlYWQsIHNwYW4gaW5zaWRlIGFub255bW91
cyBibG9jaykuCit0ZXN0KCJESVY3IiwgImZsb3dCIiwgIlNQQU4yIik7CisKKy8vIEFwcGVuZCBh
IG5ldyBlbGVtZW50IGluIGZsb3dDLgordGVzdCgiRElWOCIsICJmbG93QyIpOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhl
YjA3ODAuLjE3NjY2N2UgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0zNDgxOCw2ICszNDgxOCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyRmxvd1RocmVhZC5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJGbG93VGhyZWFkLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcUmVuZGVyRm9yZWlnbk9iamVjdC5j
cHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhhODFhMzEuLmZiNjFkNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEzMTcsNiArMTMxNyw4IEBACiAJCTRGRDhEMEYzMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovOyB9Owog
CQk1MDFCQTlFMjEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkE5RTExMzkzQ0VBMDAwRjdB
Q0VCIC8qIENTU1dyYXBTaGFwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUE4MTM5
NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJG
bG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovOyB9Owor
CQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RTEzQ0YxMDZC
MDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07CiAJCTUwRTU2NkQ2MTM5RTM4
QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFw
U2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4
NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OwpA
QCAtNzg4OSw2ICs3ODkxLDggQEAKIAkJNTAxQkE5RTExMzkzQ0VBMDAwRjdBQ0VCIC8qIENTU1dy
YXBTaGFwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTV3JhcFNoYXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDFCQUFBODEzOTUwRTJDMDBGN0FD
RUIgLyogV2luZFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZFJ1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAxQkFBQjExMzk1MTE0QjAwRjdB
Q0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTV3JhcFNoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUw
OENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxvd1Ro
cmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4
NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjAwLDYgKzE5NjA0LDggQEAK
IAkJCQlBOENGRjA0QzBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCAqLywKIAkJCQkz
N0ZDOTZEQTExMDRFRDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmgg
Ki8sCiAJCQkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZS5oICovLAorCQkJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFk
LmggKi8sCisJCQkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQu
Y3BwICovLAogCQkJKTsKIAkJCXBhdGggPSByZW5kZXJpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMjMyNDAsNiArMjMyNDYsNyBAQAogCQkJCTQ5QzlGMzI2MTNENTc0RjkwMDUy
NjAwQSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM5RjQ4RjEz
RDU3RDMyMDA1MjYwMEEgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUM5RjQ5MTEzRDU3RDMyMDA1MjYwMEEgLyogSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYwMjUsNiArMjYwMzIsNyBAQAogCQkJCTQ5QzlG
MzI3MTNENTc0RjkwMDUyNjAwQSAvKiBNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5QzlGNDhFMTNENTdEMzIwMDUyNjAwQSAvKiBKU01lZGlhU3RyZWFtVHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDOUY0OTAxM0Q1N0QzMjAwNTI2MDBBIC8qIEpTTWVkaWFT
dHJlYW1UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTA4Q0NBNTAxM0NGMTA2QjAw
MzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggNjI4NTkyMS4uZDI0MWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzU3LDYgKzM1
NywxMiBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBz
MSwgY29uc3QgUmVuZGVyU3R5bGUqIHMyKQogICAgIGlmICgoczEgJiYgczIpICYmIChzMS0+aGFz
VGV4dENvbWJpbmUoKSAhPSBzMi0+aGFzVGV4dENvbWJpbmUoKSkpCiAgICAgICAgIGNoID0gRGV0
YWNoOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRh
Y2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxv
d1RocmVhZC4KKyAgICBpZiAoKHMxICYmIHMyKSAmJiAoczEtPmZsb3dUaHJlYWQoKSAhPSBzMi0+
Zmxvd1RocmVhZCgpKSkKKyAgICAgICAgY2ggPSBEZXRhY2g7CisjZW5kaWYKKwogICAgIHJldHVy
biBjaDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggM2ExNzJkMC4uNWNlYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIApAQCAtNDMsNiArNDUsOSBAQCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAsIG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdCgwKQogICAgICwgbV9pbmNsdWRlcigwKQogICAgICwgbV9z
dHlsZSgwKQorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRl
cmVyKDApCisjZW5kaWYKIHsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTgzLDYgKzg4LDkgQEAgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRl
clN0eWxlKiBzdHlsZSkKICAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCgwKQogICAgICwg
bV9pbmNsdWRlcigwKQogICAgICwgbV9zdHlsZShzdHlsZSkKKyNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCisgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTkz
LDYgKzEwMSw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojp+Tm9kZVJlbmRlcmluZ0NvbnRleHQo
KQogdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9IHN0eWxlOworI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKKyAgICBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKKyNlbmRpZgogfQogCiBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkK
QEAgLTE1NCw2ICsxNjUsMTEgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1f
bm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5uZXh0U2libGluZygp
OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JO
b2RlKG1fbm9kZSk7CisjZW5kaWYKKwogICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRG
b3J3YXJkZWQpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBuZXh0UmVuZGVy
ZXJPZihtX2luY2x1ZGVyLCBtX25vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwpAQCAt
MTY2LDggKzE4MiwxNCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0
UmVuZGVyZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAoTm9kZSogbm9k
ZSA9IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChub2RlLT5y
ZW5kZXJlcigpKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICAgICAgLy8gRG8g
bm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBmbG93
LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYmICFu
b2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxlbWVudCgp
KSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBmaXJzdCA9IGZpcnN0UmVuZGVyZXJP
Zih0b1NoYWRvd0NvbnRlbnRFbGVtZW50KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
Zmlyc3Q7CkBAIC0xODMsNiArMjA1LDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBy
ZXZpb3VzU2libGluZygpOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3Bh
cmVudEZsb3dSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5w
cmV2aW91c1JlbmRlcmVyRm9yTm9kZShtX25vZGUpOworI2VuZGlmCisKICAgICBpZiAobV9waGFz
ZSA9PSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IGZvdW5kID0gcHJldmlvdXNSZW5kZXJlck9mKG1faW5jbHVkZXIsIG1fbm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZm91bmQ7CkBAIC0xOTIsOCArMjE5LDE0IEBAIFJlbmRlck9iamVjdCogTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5kZXJl
ciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0
ZXN0cyBmYWlsZWQuCiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5wcmV2aW91c1NpYmxp
bmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlm
IChub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAgICAgICAgIC8vIERvIG5vdCByZXR1cm4gZWxlbWVu
dHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10aHJlYWQuCisgICAgICAg
ICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9kZS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAg
IH0KICAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mKHRvU2hhZG93Q29udGVudEVs
ZW1lbnQobm9kZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBsYXN0OwpAQCAtMjEwLDYgKzI0
MywxMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJl
cigpIGNvbnN0CiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cGFyZW50KCk7CiAgICAgfQogCisj
aWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOworI2VuZGlmCisKICAgICBBU1NFUlQo
bV9sb2NhdGlvbiAhPSBMb2NhdGlvblVuZGV0ZXJtaW5lZCk7CiAgICAgcmV0dXJuIG1fcGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID8gbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUtPnJlbmRlcmVyKCkgOiAwOwogfQpAQCAtMjQ4LDYgKzI4NiwxNyBAQCBib29sIE5vZGVSZW5k
ZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCit2b2lkIE5vZGVSZW5kZXJpbmdDb250
ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKQoreworICAgIGlmICghbV9ub2RlLT5pc0Vs
ZW1lbnROb2RlKCkgfHwgIW1fc3R5bGUgfHwgbV9zdHlsZS0+Zmxvd1RocmVhZCgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mbG93VGhyZWFkID0gbV9zdHlsZS0+Zmxvd1Ro
cmVhZCgpOworICAgIEFTU0VSVChtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7Cisg
ICAgbV9wYXJlbnRGbG93UmVuZGVyZXIgPSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KS0+cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKG1fZmxvd1RocmVhZCk7Cit9CisjZW5kaWYKIAog
Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeShOb2RlKiBub2RlKQogICAg
IDogbV9jb250ZXh0KG5vZGUpCkBAIC0zMTUsNiArMzY0LDE1IEBAIHZvaWQgTm9kZVJlbmRlcmVy
RmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0
UmVuZGVyZXIgPSBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBu
ZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsKIAorI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKKyAgICBpZiAobV9jb250ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSkgeworICAg
ICAgICBwYXJlbnRSZW5kZXJlciA9IG1fY29udGV4dC5wYXJlbnRGbG93UmVuZGVyZXIoKTsKKyAg
ICAgICAgLy8gRG8gbm90IGNhbGwgbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUsIGJlY2F1
c2UgaXQgZXhwZWN0cyB0byBoYXZlIAorICAgICAgICAvLyB0aGUgcmVuZGVyZXIgYWRkZWQgdG8g
aXRzIHBhcmVudCBhbHJlYWR5LgorICAgICAgICBuZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQucGFy
ZW50Rmxvd1JlbmRlcmVyKCktPm5leHRSZW5kZXJlckZvck5vZGUobm9kZSk7CisgICAgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50LT53ZWJr
aXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50KCkgPT0gbm9kZSkKICAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxT
Y3JlZW4obmV3UmVuZGVyZXIsIGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmgKaW5kZXggOWE2MjNlNC4uMzU2MDUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2
ICs0MCwxMCBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50
OwogY2xhc3MgU2hhZG93Um9vdDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK2NsYXNzIFJl
bmRlckZsb3dUaHJlYWQ7CisjZW5kaWYKKwogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgewog
cHVibGljOgogICAgIGV4cGxpY2l0IE5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqKTsKQEAgLTYw
LDYgKzY1LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwog
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGJvb2wgaGFzRmxvd1RocmVhZFBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOyB9CisgICAgUmVuZGVyRmxvd1Ro
cmVhZCogcGFyZW50Rmxvd1JlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVu
ZGVyZXI7IH0KKyAgICB2b2lkIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOworI2VuZGlmCiBw
cml2YXRlOgogCiAgICAgZW51bSBUcmVlTG9jYXRpb24gewpAQCAtODIsNiArOTIsMTAgQEAgcHJp
dmF0ZToKICAgICBTaGFkb3dSb290KiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CiAgICAgU2hh
ZG93Q29udGVudEVsZW1lbnQqIG1faW5jbHVkZXI7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBt
X3N0eWxlOworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBt
X3BhcmVudEZsb3dSZW5kZXJlcjsKKyAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOworI2Vu
ZGlmCiB9OwogCiBpbmxpbmUgTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5vZGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMWEyZjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTAsMCAr
MSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxB
UyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJl
YWQuaCIKKworI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5k
ZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZmxvd1RocmVhZCkKKyAgICAgIDogUmVuZGVyQmxvY2sobm9kZSkKKyAgICAgICwgbV9m
bG93VGhyZWFkKGZsb3dUaHJlYWQpCit7CisgICAgc2V0SXNBbm9ueW1vdXMoZmFsc2UpOworICAg
IHNldFN0eWxlKGNyZWF0ZUZsb3dUaHJlYWRTdHlsZSgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKCkKK3sKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7Cisg
ICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlv
bihBYnNvbHV0ZVBvc2l0aW9uKTsKKyAgICBuZXdTdHlsZS0+c2V0TGVmdChMZW5ndGgoMCwgRml4
ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0VG9wKExlbmd0aCgwLCBGaXhlZCkpOworICAgIG5ld1N0
eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNldEhl
aWdodChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WChP
SElEREVOKTsKKyAgICBuZXdTdHlsZS0+c2V0T3ZlcmZsb3dZKE9ISURERU4pOworICAgIG5ld1N0
eWxlLT5mb250KCkudXBkYXRlKDApOworICAgIAorICAgIHJldHVybiBuZXdTdHlsZS5yZWxlYXNl
KCk7Cit9CisKK1JlbmRlck9iamVjdCogUmVuZGVyRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9y
Tm9kZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIEZsb3dUaHJlYWRDaGlsZExpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmJlZ2luKCk7CisgICAgRmxvd1Ro
cmVhZENoaWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0
LmVuZCgpOworICAgIAorICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjaGlsZCA9ICppdDsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOwor
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKGNoaWxkLT5ub2RlKCkpOworICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NV
TUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAg
fQorICAgIAorICAgIHJldHVybiAwOworfQorCitSZW5kZXJPYmplY3QqIFJlbmRlckZsb3dUaHJl
YWQ6OnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYg
KG1fZmxvd1RocmVhZENoaWxkTGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIEZsb3dUaHJlYWRDaGlsZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gbV9mbG93
VGhyZWFkQ2hpbGRMaXN0LmJlZ2luKCk7CisgICAgRmxvd1RocmVhZENoaWxkTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmVuZCgpOworICAgIEZsb3dUaHJl
YWRDaGlsZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZW5kOworICAgIAorICAgIGRvIHsKKyAg
ICAgICAgLS1pdDsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9ICppdDsKKyAgICAgICAg
QVNTRVJUKGNoaWxkLT5ub2RlKCkpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9
IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGNoaWxkLT5ub2RlKCkpOworICAgICAgICBp
ZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpCisgICAgICAg
ICAgICByZXR1cm4gY2hpbGQ7CisgICAgfSB3aGlsZSAoaXQgIT0gYmVnaW4pOworICAgIAorICAg
IHJldHVybiAwOworfQorCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZENoaWxkKFJlbmRlck9i
amVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCit7CisgICAgaWYgKGJl
Zm9yZUNoaWxkKQorICAgICAgICBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuaW5zZXJ0QmVmb3JlKGJl
Zm9yZUNoaWxkLCBuZXdDaGlsZCk7CisgICAgZWxzZQorICAgICAgICBtX2Zsb3dUaHJlYWRDaGls
ZExpc3QuYWRkKG5ld0NoaWxkKTsKKyAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkKTsKK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkKQoreworICAgIG1fZmxvd1RocmVhZENoaWxkTGlzdC5yZW1vdmUo
Y2hpbGQpOworICAgIFJlbmRlckJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjU3OTMwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICog
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyRmxvd1RocmVhZF9oCisjZGVm
aW5lIFJlbmRlckZsb3dUaHJlYWRfaAorCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorCisjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlbmRlclN0eWxlOworCisvLyBSZW5kZXJGbG93VGhyZWFkIGlzIHVzZWQgdG8gY29s
bGVjdCBhbGwgdGhlIHJlbmRlciBvYmplY3RzIHRoYXQgcGFydGljaXBhdGUgaW4gYQorLy8gZmxv
dyB0aHJlYWQuIEl0IHdpbGwgYWxzbyBoZWxwIGluIGRvaW5nIHRoZSBsYXlvdXQuIEhvd2V2ZXIs
IGl0IHdpbGwgbm90IHJlbmRlcgorLy8gZGlyZWN0bHkgdG8gc2NyZWVuLiBJbnN0ZWFkLCBSZW5k
ZXJSZWdpb24gb2JqZWN0cyB3aWxsIHJlZGlyZWN0IHRoZWlyIHBhaW50IAorLy8gYW5kIG5vZGVB
dFBvaW50IG1ldGhvZHMgdG8gdGhpcyBvYmplY3QuIEVhY2ggUmVuZGVyUmVnaW9uIHdpbGwgYWN0
dWFsbHkgYmUgYSB2aWV3UG9ydAorLy8gb2YgdGhlIFJlbmRlckZsb3dUaHJlYWQuCisKK2NsYXNz
IFJlbmRlckZsb3dUaHJlYWQ6IHB1YmxpYyBSZW5kZXJCbG9jayB7CitwdWJsaWM6CisgICAgUmVu
ZGVyRmxvd1RocmVhZChOb2RlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBBdG9taWNTdHJpbmcgZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxv
d1RocmVhZDsgfQorCisgICAgLy8gQWx3YXlzIGNyZWF0ZSBhIFJlbmRlckxheWVyIGZvciB0aGUg
UmVuZGVyRmxvd1RocmVhZCwgc28gdGhhdCB3ZSAKKyAgICAvLyBjYW4gZWFzaWx5IGF2b2lkIHRv
IGRyYXcgaXQncyBjaGlsZHJlbiBkaXJlY3RseS4KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRlck9iamVjdCogbmV4dFJl
bmRlcmVyRm9yTm9kZShOb2RlKikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1Jl
bmRlcmVyRm9yTm9kZShOb2RlKikgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAw
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kik7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRT
dHlsZSgpOworICAgIAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJGbG93VGhyZWFkIjsgfQorICAgIAorICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxvd1RocmVhZENoaWxkTGlzdDsKKyAgICBGbG93VGhyZWFk
Q2hpbGRMaXN0IG1fZmxvd1RocmVhZENoaWxkTGlzdDsKKyAgICAKKyAgICBBdG9taWNTdHJpbmcg
bV9mbG93VGhyZWFkOworfTsKKworaW5saW5lIFJlbmRlckZsb3dUaHJlYWQqIHRvUmVuZGVyRmxv
d1RocmVhZChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBv
YmplY3QtPmlzUmVuZGVyRmxvd1RocmVhZCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVu
ZGVyRmxvd1RocmVhZCo+KG9iamVjdCk7Cit9CisKK2lubGluZSBjb25zdCBSZW5kZXJGbG93VGhy
ZWFkKiB0b1JlbmRlckZsb3dUaHJlYWQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqPihvYmplY3QpOworfQor
CisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2
b2lkIHRvUmVuZGVyRmxvd1RocmVhZChjb25zdCBSZW5kZXJGbG93VGhyZWFkKik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2Vu
ZGlmIC8vIFJlbmRlckZsb3dUaHJlYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggNmI4ZmQ0Yi4uMzdhMTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zODc4LDYgKzM4NzgsMTMgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y29sbGVjdExheWVycyhWZWN0b3I8UmVuZGVyTGF5ZXIqPiomIHBvc0J1ZmZlciwgVmVjdG9y
PFJlbmRlckwKIHsKICAgICB1cGRhdGVWaXNpYmlsaXR5U3RhdHVzKCk7CiAKKyNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCisgICAgLy8gRG8gbm90IGxldCB0aGUgUmVuZGVyRmxvd1RocmVhZCB0byBy
ZW5kZXIgZGlyZWN0bHkgdG8gc2NyZWVuLiBJdCB3aWxsIG9ubHkgcmVuZGVyCisgICAgLy8gaW5z
aWRlIHRoZSBSZW5kZXJSZWdpb24gb2JqZWN0cywgc28gYXZvaWQgY29sbGVjdGluZyBpdC4KKyAg
ICBpZiAocmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAgIHJldHVybjsK
KyNlbmRpZgorCiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFyZSBqdXN0IHBhaW50ZWQgYnkgdGhl
aXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBnZXQgcHV0IGluIHpvcmRlciBsaXN0
cy4KICAgICBpZiAoKG1faGFzVmlzaWJsZUNvbnRlbnQgfHwgKG1faGFzVmlzaWJsZURlc2NlbmRh
bnQgJiYgaXNTdGFja2luZ0NvbnRleHQoKSkpICYmICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAg
ICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGJ1ZmZlciB0aGUgY2hpbGQgc2hvdWxkIGJlIGluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDUwYWZiODIuLjgyMzFl
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMxNSw2ICsz
MTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW5QbGFj
ZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJl
dHVybiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBtX25vZGU7IH0KICAgICBib29s
IGlzQm9keSgpIGNvbnN0OwogICAgIGJvb2wgaXNIUigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGMyZDRlZmUuLjc2OTRkMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckRl
dGFpbHNNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgorI2lu
Y2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC0y
NDMsNyArMjQ0LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAgICAgICAgIHRz
IDw8ICIgKmVtcHR5IG9yIHVuc3R5bGVkIEFwcGxlU3R5bGVTcGFuKiI7CiAgICAgICAgIH0KICAg
ICB9Ci0KKyAgICAKICAgICBib29sIGFkanVzdEZvclRhYmxlQ2VsbHMgPSBvLmNvbnRhaW5pbmdC
bG9jaygpLT5pc1RhYmxlQ2VsbCgpOwogCiAgICAgSW50UmVjdCByOwpAQCAtNzA1LDYgKzcwNiwy
NiBAQCBzdGF0aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpICE9IHBvc0xpc3QtPnNpemUoKTsgKytpKQogICAgICAgICAgICAgd3JpdGVMYXllcnModHMs
IHJvb3RMYXllciwgcG9zTGlzdC0+YXQoaSksIHBhaW50RGlydHlSZWN0LCBjdXJySW5kZW50LCBi
ZWhhdmlvcik7CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAvLyBB
bHRvdWdoIHRoZSBSZW5kZXJGbG93VGhyZWFkIHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBj
b2xsZWN0ZWQgYnkgaXRzIHBhcmVudCwKKyAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFz
IGEgc3BlY2lhbCBjYXNlLgorICAgIGJvb2wgZmlyc3RSZW5kZXJGbG93VGhyZWFkID0gdHJ1ZTsK
KyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsLT5yZW5kZXJlcigpLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChj
aGlsZC0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGlmIChmaXJzdFJlbmRl
ckZsb3dUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICBmaXJzdFJlbmRlckZsb3dUaHJlYWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICAgICAg
ICAgICAgICB0cyA8PCAiRmxvdyBUaHJlYWRzXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxv
d1RocmVhZChjaGlsZCk7CisgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7
CisgICAgICAgICAgICB0cyA8PCAiVGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZs
b3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKKyAgICAgICAgICAgIFJlbmRlckxheWVy
KiBsYXllciA9IHJlbmRlckZsb3dUaHJlYWQtPmxheWVyKCk7CisgICAgICAgICAgICB3cml0ZUxh
eWVycyh0cywgcm9vdExheWVyLCBsYXllciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCArIDIsIGJl
aGF2aW9yKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiBzdGF0aWMgU3RyaW5nIG5v
ZGVQb3NpdGlvbihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCmluZGV4IDBlMmNhMmYuLmE5YjlmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2VsZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIlJl
bmRlcldpZGdldC5oIgpAQCAtNzgyLDQgKzc4MywyMiBAQCB2b2lkIFJlbmRlclZpZXc6OndpbGxN
b3ZlT2Zmc2NyZWVuKCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVu
ZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkKK3sKKyAgICBmb3IgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkp
IHsKKyAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVuZGVy
Rmxvd1RocmVhZChyZW5kZXJlcik7CisgICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93
VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvd1JlbmRl
cmVyOworICAgICAgICB9CisgICAgfQorCisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRl
cmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50KCksIGZs
b3dUaHJlYWQpOworICAgIGFkZENoaWxkKGZsb3dSZW5kZXJlcik7CisgICAgCisgICAgcmV0dXJu
IGZsb3dSZW5kZXJlcjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA5NWQxZTYzLi40Y2JmNzQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTMxLDYgKzMxLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyV2lkZ2V0OwogCisjaWYgRU5BQkxFKENTU19S
RUdJT05TKQorY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogI2VuZGlm
CkBAIC0xNjMsNiArMTY3LDEwIEBAIHB1YmxpYzoKIAogICAgIEludFJlY3QgZG9jdW1lbnRSZWN0
KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgUmVuZGVyRmxvd1RocmVh
ZCogcmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVh
ZCk7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRy
YW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDM1YmEzZTQuLjZhMzI4NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzQ5LDgg
KzM0OSw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJT
dHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29uCiAgICAgICAgICAgICByZXR1cm4gU3R5
bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZCAhPSBvdGhlci0+cmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9y
ZWdpb25UaHJlYWQKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRo
cmVhZCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkCiAgICAg
ICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25JbmRleCAhPSBvdGhlci0+
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uSW5kZXgKICAgICAgICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbk92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9yZWdpb25PdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZl
cmVuY2VMYXlvdXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101570</attachid>
            <date>2011-07-21 04:05:15 -0700</date>
            <delta_ts>2011-07-25 23:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug64516_6.patch</filename>
            <type>text/plain</type>
            <size>38397</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YzhjZWFhLi45YjRmMjNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDct
MjEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIt
bGF5ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJl
bmRlcmVyLW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTIx
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
W1dlYktpdCBBUEldIEltcGxlbWVudCBXZWJDb3JlOjpkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5k
ZXJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ct
cmVuZGVyZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU0MDRjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Vi
a2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKK0Zs
b3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICAgIGxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MTgK
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxvd0EiCisgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA5MTogIkRJVjEgLSBmbG93QSIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdmbG93QicKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckZs
b3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgODAweDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgOTB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAi
RElWNSAtIGZsb3dCIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA4
MDB4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY3IC0gZmxvd0IiCisg
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDgwMHgxOAorICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMDN4MTgKKyAgICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwM3gxOAorICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDM6ICJTUEFOMiAtIGZsb3dCIgorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggOTA6ICJESVY2IC0gZmxvd0IiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0MnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93
VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJ
VjMgLSBmbG93QyIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAw
eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWOCAtIGZsb3dDIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxh
eWVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1y
ZW5kZXJlci1sYXllci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWZhMzZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6
ZSA3ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisg
ICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhyZWFkIGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAg
IFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZs
b3ctbmFtZSAnZmxvd0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBS
ZW5kZXJGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDE4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWMiAtIGZsb3dCIgorICBUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJ2Zsb3dDJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBs
YXllclR5cGU6IGJhY2tncm91bmQgb25seQorICAgIGxheWVyIGF0ICgwLDM2KSBzaXplIDkweDE4
CisgICAgICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IC0xIHtESVZ9IGF0ICgwLDM2KSBz
aXplIDkweDE4CisgICAgICAgIFJlbmRlclRleHQgekk6IC0xIHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA5MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNCAtIGZs
b3dDIgorICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBsYXllclR5cGU6IGZvcmVncm91
bmQgb25seQorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MzYKKyAgICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVYzIC0gZmxvd0MiCisgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA5MDogIkRJVjUgLSBmbG93QyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjYjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisgICAgI0RJVjEgeworICAg
ICAgICAtd2Via2l0LWZsb3c6ICdmbG93QSc7CisgICAgICAgIC8qIGZvcmNlIGEgUmVuZGVyTGF5
ZXIgKi8KKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgICAjRElWMiB7Cisg
ICAgICAgIC13ZWJraXQtZmxvdzogJ2Zsb3dCJzsKKyAgICAgICAgLyogRm9yY2UgYSBjb21wb3Np
dGVkIFJlbmRlckxheWVyLiAqLworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgx
LCAxLCAxKTsKKyAgICB9CisgICAgCisgICAgI0RJVjMgeyAtd2Via2l0LWZsb3c6ICdmbG93Qyc7
IH0KKyAgICAKKyAgICAjRElWNSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
ICAgei1pbmRleDogLTE7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iRElWMSI+RElWMSAt
IGZsb3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIj5ESVYyIC0gZmxvd0I8L2Rpdj4KKworPGRpdiBp
ZD0iRElWMyI+CisgICAgRElWMyAtIGZsb3dDCisgICAgPGRpdiBpZD0iRElWNCI+RElWNSAtIGZs
b3dDPC9kaXY+CisgICAgPGRpdiBpZD0iRElWNSI+RElWNCAtIGZsb3dDPC9kaXY+Cis8L2Rpdj4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRl
cmVyLW5lc3RlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0
LWZsb3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42M2QwZmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0EnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93
VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDApIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5MXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MTog
IkRJVjEgLSBmbG93QSIKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAor
ICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggOTE6ICJESVYzIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93
VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJ
VjIgLSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42OTA3ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSwgI0RJVjMgeyAtd2Via2l0LWZsb3c6J2Zs
b3dBJzsgfQorI0RJVjIgeyAtd2Via2l0LWZsb3c6J2Zsb3dCJzsgfQorPC9zdHlsZT4KKworPGRp
diBpZD0iRElWMSI+CisgICAgRElWMSAtIGZsb3dBCisgICAgPGRpdiBpZD0iRElWMiI+RElWMiAt
IGZsb3dCPC9kaXY+CisgICAgPHA+CisgICAgICAgIDxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93
QTwvZGl2PgorICAgIDwvcD4KKzwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MmY3YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSB7IC13
ZWJraXQtZmxvdzonZmxvd0EnOyB9CisjU1BBTjIgeyAtd2Via2l0LWZsb3c6ICdmbG93Qic7IH0K
KyNESVYzIHsgLXdlYmtpdC1mbG93OiAnZmxvd0MnOyB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJE
SVYxIj5ESVYxIC0gZmxvd0E8L2Rpdj4KKzxzcGFuIGlkPSJTUEFOMiI+U1BBTjIgLSBmbG93Qjwv
c3Bhbj4KKzxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAgZWwuc2V0QXR0cmli
dXRlKCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7CisgICAgZWwuaW5uZXJI
VE1MID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQorICAgICAgICBkb2N1
bWVudC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYmVmb3Jl
KSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTsKK30K
KworLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBESVYxIChzYW1lIGZs
b3ctdGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOworCisvLyBJbnNlcnQg
YSBuZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVudCBmbG93LXRocmVh
ZCkuCit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5zZXJ0IGEgbmV3IGVs
ZW1lbnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10aHJlYWQpLgordGVz
dCgiRElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5ldyBlbGVtZW50IGlu
IGZsb3dCLCBiZWZvcmUgU1BBTjIgKHNhbWUgZmxvdy10aHJlYWQsIHNwYW4gaW5zaWRlIGFub255
bW91cyBibG9jaykuCit0ZXN0KCJESVY3IiwgImZsb3dCIiwgIlNQQU4yIik7CisKKy8vIEFwcGVu
ZCBhIG5ldyBlbGVtZW50IGluIGZsb3dDLgordGVzdCgiRElWOCIsICJmbG93QyIpOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzFhZTBlZS4uYTExZWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU4IEBACisyMDExLTA3LTIxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNv
bT4KKworICAgICAgICBbQ1NTUmVnaW9uc10gQ29sbGVjdCBmbG93ZWQgZWxlbWVudHMgaW4gZGlm
ZmVyZW50IHJlbmRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDUxNgorCisgICAgICAgIEFsbCB0aGUgUmVuZGVyT2JqZWN0cyB0aGF0
IGhhdmUgYSBzcGVjaWZpZWQgImZsb3ciIG5hbWUgYXJlIG1vdmVkIG91dCBvZiB0aGUKKyAgICAg
ICAgbm9ybWFsIGZsb3cuIEEgUmVuZGVyRmxvd1RocmVhZCB3aWxsIGNvbGxlY3QgYWxsIHN1Y2gg
UmVuZGVyT2JqZWN0cy4gVGhlcmUgaXMKKyAgICAgICAgYSBSZW5kZXJGbG93VGhyZWFkIGZvciBl
YWNoIGZsb3cgbmFtZS4gVGhlIG5ldyBSZW5kZXJGbG93VGhyZWFkIGlzIGFuIGFub255bW91cwor
ICAgICAgICBSZW5kZXJCbG9jayB0aGF0IGlzIHBvc2l0aW9uZWQgYWJzb2x1dGUgYW5kIHdpbGwg
bm90IHJlbmRlciBkaXJlY3RseS4gSW4gYQorICAgICAgICBkaWZmZXJlbnQgYnVnL3BhdGNoIHdl
IHdpbGwgYWRkIFJlbmRlclJlZ2lvbiB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIHJlbmRlcmluZyB0
aGUKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCBvbiBzY3JlZW4uCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMv
d2Via2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGlmZik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2V0U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5k
ZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpoYXNGbG93VGhyZWFkUGFyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRGbG93UmVu
ZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpuZXh0UmVuZGVyZXJGb3JO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnByZXZpb3VzUmVuZGVy
ZXJGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZUNoaWxkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvUmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmlzUmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6
d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorCiAyMDExLTA3LTIwICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhIFZhbGdyaW5kIGZh
aWx1cmUgY2F1c2VkIGJ5IHI5MTQzNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggOGViMDc4MC4uMTc2NjY3ZSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM0ODE4LDYgKzM0ODE4LDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJGbG93VGhyZWFkLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZsb3dUaHJlYWQuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2
Z1xSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGE4MWEzMS4uZmI2MWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMxNyw2ICsxMzE3LDggQEAKIAkJNEZEOEQw
RjMxMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmggKi87IH07CiAJCTUwMUJBOUUyMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NX
cmFwU2hhcGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDFCQTlFMTEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwMUJBQUE5MTM5NTBFMkMw
MEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTAxQkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTA4Q0NBNEYxM0NG
MTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5k
ZXJGbG93VGhyZWFkLmggKi87IH07CisJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5k
ZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAq
LzsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1
MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2OTBCMDg2
MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAx
ODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC03ODg5LDYgKzc4OTEsOCBAQAogCQk1MDFCQTlFMTEz
OTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXaW5kUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZs
b3dUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1Ro
cmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDhDQ0E0RTEzQ0YxMDZCMDAz
MTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTk2MDAsNiArMTk2MDQsOCBAQAogCQkJCUE4Q0ZGMDRDMEExNTRGMDkwMDBBNDIzNCAvKiBU
YWJsZUxheW91dC5oICovLAogCQkJCTM3RkM5NkRBMTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGlu
Z0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLywKIAkJCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0Qg
LyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi8sCisJCQkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLywKKwkJCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUx
RjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbmRlcmlu
ZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzI0MCw2ICsyMzI0Niw3IEBACiAJ
CQkJNDlDOUYzMjYxM0Q1NzRGOTAwNTI2MDBBIC8qIE1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5QzlGNDhGMTNENTdEMzIwMDUyNjAwQSAvKiBKU01lZGlhU3RyZWFtVHJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzlGNDkxMTNENTdEMzIwMDUyNjAwQSAvKiBKU01l
ZGlhU3RyZWFtVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDhDQ0E0RjEzQ0YxMDZC
MDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjAyNSw2
ICsyNjAzMiw3IEBACiAJCQkJNDlDOUYzMjcxM0Q1NzRGOTAwNTI2MDBBIC8qIE1lZGlhU3RyZWFt
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDOUY0OEUxM0Q1N0QzMjAwNTI2MDBBIC8q
IEpTTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM5RjQ5MDEzRDU3
RDMyMDA1MjYwMEEgLyogSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2Mjg1OTIxLi5kMjQxY2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0zNTcsNiArMzU3LDEyIEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRp
ZmYoY29uc3QgUmVuZGVyU3R5bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIpCiAgICAgaWYg
KChzMSAmJiBzMikgJiYgKHMxLT5oYXNUZXh0Q29tYmluZSgpICE9IHMyLT5oYXNUZXh0Q29tYmlu
ZSgpKSkKICAgICAgICAgY2ggPSBEZXRhY2g7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisg
ICAgLy8gV2UgbmVlZCB0byByZWF0dGFjaCB0aGUgbm9kZSwgc28gdGhhdCBpdCBpcyBtb3ZlZCB0
byB0aGUgY29ycmVjdCBSZW5kZXJGbG93VGhyZWFkLgorICAgIGlmICgoczEgJiYgczIpICYmIChz
MS0+Zmxvd1RocmVhZCgpICE9IHMyLT5mbG93VGhyZWFkKCkpKQorICAgICAgICBjaCA9IERldGFj
aDsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAzYTE3MmQwLi41Y2VhMTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4LDggKzI4LDEwIEBA
CiAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1
ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBA
IC00Myw2ICs0NSw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4
dChOb2RlKiBub2RlKQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCiAgICAgLCBt
X2luY2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKDApCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQor
ICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyNlbmRpZgogewogICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIGlmICghcGFyZW50
KQpAQCAtODMsNiArODgsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICwgbV92aXN1YWxQYXJl
bnRTaGFkb3dSb290KDApCiAgICAgLCBtX2luY2x1ZGVyKDApCiAgICAgLCBtX3N0eWxlKHN0eWxl
KQorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDAp
CisjZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArMTAxLDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCgpCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzZXRT
dHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gc3R5
bGU7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRl
ZCgpOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpyZWxlYXNlU3R5bGUoKQpAQCAtMTU0LDYgKzE2NSwxMSBAQCBSZW5kZXJPYmplY3Qq
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
cmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAg
aWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVu
ZGVyZXItPm5leHRSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG1f
cGhhc2UgPT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkgewogICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBmb3VuZCA9IG5leHRSZW5kZXJlck9mKG1faW5jbHVkZXIsIG1fbm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZm91bmQ7CkBAIC0xNjYsOCArMTgyLDE0IEBAIFJlbmRlck9iamVjdCogTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5uZXh0U2libGluZygpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCisgICAgICAgICAgICAvLyBEbyBub3QgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIGF0dGFj
aGVkIHRvIGEgZGlmZmVyZW50IGZsb3ctdGhyZWFkLgorICAgICAgICAgICAgaWYgKG5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJl
YWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisjZW5kaWYKICAgICAg
ICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAgICAgICB9CiAgICAgICAgIGlmIChu
b2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvU2hhZG93Q29udGVudEVsZW1lbnQobm9kZSkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKQEAgLTE4Myw2ICsyMDUsMTEgQEAgUmVuZGVy
T2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCisgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4g
bV9wYXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7Cisj
ZW5kaWYKKwogICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQpIHsKICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBwcmV2aW91c1JlbmRlcmVyT2YobV9pbmNs
dWRlciwgbV9ub2RlKSkKICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKQEAgLTE5Miw4ICsyMTks
MTQgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJl
cigpIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBh
dm9pZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJp
ZWQgYWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBtX25vZGUtPnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChu
b2RlLT5yZW5kZXJlcigpKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICAgICAg
Ly8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVu
dCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgp
ICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbm9k
ZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxl
bWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRl
cmVyT2YodG9TaGFkb3dDb250ZW50RWxlbWVudChub2RlKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGxhc3Q7CkBAIC0yMTAsNiArMjQzLDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5wYXJlbnQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgaWYgKG1f
cGFyZW50Rmxvd1JlbmRlcmVyKQorICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7
CisjZW5kaWYKKwogICAgIEFTU0VSVChtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVk
KTsKICAgICByZXR1cm4gbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPyBtX3BhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKSA6IDA7CiB9CkBAIC0yNDgsNiAr
Mjg2LDE3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVy
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
K3ZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpCit7
CisgICAgaWYgKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhbV9zdHlsZSB8fCBtX3N0eWxl
LT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zsb3dU
aHJlYWQgPSBtX3N0eWxlLT5mbG93VGhyZWFkKCk7CisgICAgQVNTRVJUKG1fbm9kZS0+ZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICBtX3BhcmVudEZsb3dSZW5kZXJlciA9IG1fbm9kZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUobV9mbG93
VGhyZWFkKTsKK30KKyNlbmRpZgogCiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJG
YWN0b3J5KE5vZGUqIG5vZGUpCiAgICAgOiBtX2NvbnRleHQobm9kZSkKQEAgLTMxNSw2ICszNjQs
MTUgQEAgdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkK
ICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5uZXh0UmVuZGVyZXIo
KTsKICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXJBbmRTdHls
ZSgpOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX2NvbnRleHQuaGFzRmxv
d1RocmVhZFBhcmVudCgpKSB7CisgICAgICAgIHBhcmVudFJlbmRlcmVyID0gbV9jb250ZXh0LnBh
cmVudEZsb3dSZW5kZXJlcigpOworICAgICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4
dFJlbmRlcmVyKCkgaGVyZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUgCisgICAgICAgIC8v
IHRoZSByZW5kZXJlciBhZGRlZCB0byBpdHMgcGFyZW50IGFscmVhZHkuCisgICAgICAgIG5leHRS
ZW5kZXJlciA9IG1fY29udGV4dC5wYXJlbnRGbG93UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9y
Tm9kZShub2RlKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICBpZiAoZG9jdW1lbnQtPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50LT53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBub2RlKQogICAgICAgICBuZXdSZW5kZXJl
ciA9IHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihuZXdSZW5kZXJlciwgZG9jdW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5YTYyM2U0Li4zNTYw
NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM5LDYgKzQwLDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xh
c3MgU2hhZG93Q29udGVudEVsZW1lbnQ7CiBjbGFzcyBTaGFkb3dSb290OwogCisjaWYgRU5BQkxF
KENTU19SRUdJT05TKQorY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKKyNlbmRpZgorCiBjbGFzcyBO
b2RlUmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTm9kZVJlbmRlcmlu
Z0NvbnRleHQoTm9kZSopOwpAQCAtNjAsNiArNjUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBo
b3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgYm9v
bCBoYXNGbG93VGhyZWFkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVy
ZXI7IH0KKyAgICBSZW5kZXJGbG93VGhyZWFkKiBwYXJlbnRGbG93UmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsgfQorICAgIHZvaWQgbW92ZVRvRmxvd1RocmVh
ZElmTmVlZGVkKCk7CisjZW5kaWYKIHByaXZhdGU6CiAKICAgICBlbnVtIFRyZWVMb2NhdGlvbiB7
CkBAIC04Miw2ICs5MiwxMCBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFy
ZW50U2hhZG93Um9vdDsKICAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQor
ICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOworICAgIEF0b21pY1N0
cmluZyBtX2Zsb3dUaHJlYWQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBOb2RlKiBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6bm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYx
YTJmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorCisj
aW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgorCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoTm9k
ZSogbm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKQorICAgICAgOiBSZW5kZXJC
bG9jayhub2RlKQorICAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKK3sKKyAgICBzZXRJ
c0Fub255bW91cyhmYWxzZSk7CisgICAgc2V0U3R5bGUoY3JlYXRlRmxvd1RocmVhZFN0eWxlKCkp
OworfQorCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVG
bG93VGhyZWFkU3R5bGUoKQoreworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUoUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7Cisg
ICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOworICAgIG5ld1N0eWxl
LT5zZXRMZWZ0KExlbmd0aCgwLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRUb3AoTGVuZ3Ro
KDAsIEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldFdpZHRoKExlbmd0aCgxMDAsIFBlcmNlbnQp
KTsKKyAgICBuZXdTdHlsZS0+c2V0SGVpZ2h0KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBu
ZXdTdHlsZS0+c2V0T3ZlcmZsb3dYKE9ISURERU4pOworICAgIG5ld1N0eWxlLT5zZXRPdmVyZmxv
d1koT0hJRERFTik7CisgICAgbmV3U3R5bGUtPmZvbnQoKS51cGRhdGUoMCk7CisgICAgCisgICAg
cmV0dXJuIG5ld1N0eWxlLnJlbGVhc2UoKTsKK30KKworUmVuZGVyT2JqZWN0KiBSZW5kZXJGbG93
VGhyZWFkOjpuZXh0UmVuZGVyZXJGb3JOb2RlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgRmxv
d1RocmVhZENoaWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Zsb3dUaHJlYWRDaGlsZExp
c3QuYmVnaW4oKTsKKyAgICBGbG93VGhyZWFkQ2hpbGRMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuZW5kKCk7CisgICAgCisgICAgZm9yICg7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gKml0OworICAgICAgICBB
U1NFUlQoY2hpbGQtPm5vZGUoKSk7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0g
bm9kZS0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oY2hpbGQtPm5vZGUoKSk7CisgICAgICAgIGlm
IChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykKKyAgICAgICAg
ICAgIHJldHVybiBjaGlsZDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1JlbmRl
ck9iamVjdCogUmVuZGVyRmxvd1RocmVhZDo6cHJldmlvdXNSZW5kZXJlckZvck5vZGUoTm9kZSog
bm9kZSkgY29uc3QKK3sKKyAgICBpZiAobV9mbG93VGhyZWFkQ2hpbGRMaXN0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgRmxvd1RocmVhZENoaWxkTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4gPSBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuYmVnaW4oKTsKKyAgICBGbG93
VGhyZWFkQ2hpbGRMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Zsb3dUaHJlYWRDaGlsZExp
c3QuZW5kKCk7CisgICAgRmxvd1RocmVhZENoaWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBl
bmQ7CisgICAgCisgICAgZG8geworICAgICAgICAtLWl0OworICAgICAgICBSZW5kZXJPYmplY3Qq
IGNoaWxkID0gKml0OworICAgICAgICBBU1NFUlQoY2hpbGQtPm5vZGUoKSk7CisgICAgICAgIHVu
c2lnbmVkIHNob3J0IHBvc2l0aW9uID0gbm9kZS0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oY2hp
bGQtPm5vZGUoKSk7CisgICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lU
SU9OX1BSRUNFRElORykKKyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICB9IHdoaWxlIChp
dCAhPSBiZWdpbik7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCkKK3sKKyAgICBpZiAoYmVmb3JlQ2hpbGQpCisgICAgICAgIG1fZmxvd1RocmVhZENo
aWxkTGlzdC5pbnNlcnRCZWZvcmUoYmVmb3JlQ2hpbGQsIG5ld0NoaWxkKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fZmxvd1RocmVhZENoaWxkTGlzdC5hZGQobmV3Q2hpbGQpOworICAgIFJlbmRlckJs
b2NrOjphZGRDaGlsZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOworfQorCit2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogY2hpbGQpCit7CisgICAgbV9mbG93
VGhyZWFkQ2hpbGRMaXN0LnJlbW92ZShjaGlsZCk7CisgICAgUmVuZGVyQmxvY2s6OnJlbW92ZUNo
aWxkKGNoaWxkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENTU19SRUdJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5MzBmYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgK
QEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisg
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
ZW5kZXJGbG93VGhyZWFkX2gKKyNkZWZpbmUgUmVuZGVyRmxvd1RocmVhZF9oCisKKyNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCisKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyU3R5bGU7CisKKy8vIFJlbmRlckZs
b3dUaHJlYWQgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgcmVuZGVyIG9iamVjdHMgdGhhdCBw
YXJ0aWNpcGF0ZSBpbiBhCisvLyBmbG93IHRocmVhZC4gSXQgd2lsbCBhbHNvIGhlbHAgaW4gZG9p
bmcgdGhlIGxheW91dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgcmVuZGVyCisvLyBkaXJlY3RseSB0
byBzY3JlZW4uIEluc3RlYWQsIFJlbmRlclJlZ2lvbiBvYmplY3RzIHdpbGwgcmVkaXJlY3QgdGhl
aXIgcGFpbnQgCisvLyBhbmQgbm9kZUF0UG9pbnQgbWV0aG9kcyB0byB0aGlzIG9iamVjdC4gRWFj
aCBSZW5kZXJSZWdpb24gd2lsbCBhY3R1YWxseSBiZSBhIHZpZXdQb3J0CisvLyBvZiB0aGUgUmVu
ZGVyRmxvd1RocmVhZC4KKworY2xhc3MgUmVuZGVyRmxvd1RocmVhZDogcHVibGljIFJlbmRlckJs
b2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJGbG93VGhyZWFkKE5vZGUqLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZsb3dUaHJlYWQpOworCisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRmxvd1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEF0b21pY1N0cmluZyBmbG93VGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CisKKyAgICAvLyBBbHdheXMgY3JlYXRl
IGEgUmVuZGVyTGF5ZXIgZm9yIHRoZSBSZW5kZXJGbG93VGhyZWFkLCBzbyB0aGF0IHdlIAorICAg
IC8vIGNhbiBlYXNpbHkgYXZvaWQgdG8gZHJhdyBpdCdzIGNoaWxkcmVuIGRpcmVjdGx5LgorICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJGb3JOb2RlKE5vZGUqKSBjb25zdDsKKyAgICBS
ZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKE5vZGUqKSBjb25zdDsKKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKCk7CisgICAgCisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dUaHJlYWQiOyB9Cisg
ICAgCisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJPYmplY3QqPiBGbG93VGhyZWFkQ2hp
bGRMaXN0OworICAgIEZsb3dUaHJlYWRDaGlsZExpc3QgbV9mbG93VGhyZWFkQ2hpbGRMaXN0Owor
ICAgIAorICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7Cit9OworCitpbmxpbmUgUmVuZGVy
Rmxvd1RocmVhZCogdG9SZW5kZXJGbG93VGhyZWFkKFJlbmRlck9iamVjdCogb2JqZWN0KQorewor
ICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJGbG93VGhyZWFkKCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4ob2JqZWN0KTsKK30KKworaW5s
aW5lIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIHRvUmVuZGVyRmxvd1RocmVhZChjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzUmVu
ZGVyRmxvd1RocmVhZCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyRmxv
d1RocmVhZCo+KG9iamVjdCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcg
YW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJGbG93VGhyZWFkKGNvbnN0IFJlbmRl
ckZsb3dUaHJlYWQqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENTU19SRUdJT05TKQorCisjZW5kaWYgLy8gUmVuZGVyRmxvd1RocmVhZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2YjhmZDRiLi4zN2ExNWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM4NzgsNiArMzg3
OCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKFZlY3RvcjxSZW5kZXJMYXll
cio+KiYgcG9zQnVmZmVyLCBWZWN0b3I8UmVuZGVyTAogewogICAgIHVwZGF0ZVZpc2liaWxpdHlT
dGF0dXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAvLyBEbyBub3QgbGV0IHRo
ZSBSZW5kZXJGbG93VGhyZWFkIHRvIHJlbmRlciBkaXJlY3RseSB0byBzY3JlZW4uIEl0IHdpbGwg
b25seSByZW5kZXIKKyAgICAvLyBpbnNpZGUgdGhlIFJlbmRlclJlZ2lvbiBvYmplY3RzLCBzbyBh
dm9pZCBjb2xsZWN0aW5nIGl0LgorICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJl
YWQoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICAvLyBPdmVyZmxvdyBsYXllcnMg
YXJlIGp1c3QgcGFpbnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0
IGdldCBwdXQgaW4gem9yZGVyIGxpc3RzLgogICAgIGlmICgobV9oYXNWaXNpYmxlQ29udGVudCB8
fCAobV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiBpc1N0YWNraW5nQ29udGV4dCgpKSkgJiYgIWlz
Tm9ybWFsRmxvd09ubHkoKSkgewogICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggYnVmZmVyIHRo
ZSBjaGlsZCBzaG91bGQgYmUgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggNTBhZmI4Mi4uODIzMWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaApAQCAtMzE1LDYgKzMxNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBi
b29sIGlzUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgp
ID09IG1fbm9kZTsgfQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0hSKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
aW5kZXggYzJkNGVmZS4uNzY5NGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJS
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGV0YWlsc01hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1
ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTI0Myw3ICsyNDQsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1Rl
eHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3Qm
IG8sCiAgICAgICAgICAgICAgICAgdHMgPDwgIiAqZW1wdHkgb3IgdW5zdHlsZWQgQXBwbGVTdHls
ZVNwYW4qIjsKICAgICAgICAgfQogICAgIH0KLQorICAgIAogICAgIGJvb2wgYWRqdXN0Rm9yVGFi
bGVDZWxscyA9IG8uY29udGFpbmluZ0Jsb2NrKCktPmlzVGFibGVDZWxsKCk7CiAKICAgICBJbnRS
ZWN0IHI7CkBAIC03MDUsNiArNzA2LDI2IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gcG9zTGlzdC0+c2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVyLCBwb3NMaXN0LT5hdChpKSwgcGFpbnRE
aXJ0eVJlY3QsIGN1cnJJbmRlbnQsIGJlaGF2aW9yKTsKICAgICB9CisgICAgCisjaWYgRU5BQkxF
KENTU19SRUdJT05TKQorICAgIC8vIEFsdG91Z2ggdGhlIFJlbmRlckZsb3dUaHJlYWQgcmVxdWly
ZXMgYSBsYXllciwgaXQgaXMgbm90IGNvbGxlY3RlZCBieSBpdHMgcGFyZW50LAorICAgIC8vIHNv
IHdlIGhhdmUgdG8gdHJlYXQgaXQgYXMgYSBzcGVjaWFsIGNhc2UuCisgICAgYm9vbCBmaXJzdFJl
bmRlckZsb3dUaHJlYWQgPSB0cnVlOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGwt
PnJlbmRlcmVyKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAg
ICAgICAgICAgaWYgKGZpcnN0UmVuZGVyRmxvd1RocmVhZCkgeworICAgICAgICAgICAgICAgIGZp
cnN0UmVuZGVyRmxvd1RocmVhZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHdyaXRlSW5kZW50
KHRzLCBpbmRlbnQpOworICAgICAgICAgICAgICAgIHRzIDw8ICJGbG93IFRocmVhZHNcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiByZW5kZXJG
bG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKGNoaWxkKTsKKyAgICAgICAgICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIHRzIDw8ICJUaHJlYWQgd2l0aCBm
bG93LW5hbWUgJyIgPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICInXG4iOwor
ICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+bGF5ZXIo
KTsKKyAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCByb290TGF5ZXIsIGxheWVyLCBwYWludERp
cnR5UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOworICAgICAgICB9CisgICAgfQorI2VuZGlm
CiB9CiAKIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMGUyY2EyZi4uYTliOWZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJGbG93VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTZWxlY3Rp
b25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC03ODIsNCArNzgzLDIyIEBA
IHZvaWQgUmVuZGVyVmlldzo6d2lsbE1vdmVPZmZzY3JlZW4oKQogI2VuZGlmCiB9CiAKKyNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCitSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJWaWV3OjpyZW5kZXJG
bG93VGhyZWFkV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKQoreworICAg
IGZvciAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZpcnN0Q2hpbGQoKTsgcmVuZGVyZXI7IHJl
bmRlcmVyID0gcmVuZGVyZXItPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVy
LT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1JlbmRlcmVyID0gdG9SZW5kZXJGbG93VGhyZWFkKHJlbmRlcmVyKTsKKyAgICAgICAgICAg
IGlmIChmbG93UmVuZGVyZXItPmZsb3dUaHJlYWQoKSA9PSBmbG93VGhyZWFkKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmbG93UmVuZGVyZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckZs
b3dUaHJlYWQoZG9jdW1lbnQoKSwgZmxvd1RocmVhZCk7CisgICAgYWRkQ2hpbGQoZmxvd1JlbmRl
cmVyKTsKKyAgICAKKyAgICByZXR1cm4gZmxvd1JlbmRlcmVyOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4
IDk1ZDFlNjMuLjRjYmY3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApA
QCAtMzEsNiArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJXaWRn
ZXQ7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCitjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwor
I2VuZGlmCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBjbGFzcyBSZW5kZXJM
YXllckNvbXBvc2l0b3I7CiAjZW5kaWYKQEAgLTE2Myw2ICsxNjcsMTAgQEAgcHVibGljOgogCiAg
ICAgSW50UmVjdCBkb2N1bWVudFJlY3QoKSBjb25zdDsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKKyAgICBSZW5kZXJGbG93VGhyZWFkKiByZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3Rh
dGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9v
bCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzVi
YTNlNC4uNmEzMjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0zNDksOCArMzQ5LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0
eWxlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb24K
ICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhy
ZWFkICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkCi0gICAgICAg
ICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQgIT0gb3RoZXItPnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZAorICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9yZWdpb25UaHJlYWQKICAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3JlZ2lvbkluZGV4ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25JbmRl
eAogICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uT3ZlcmZsb3cg
IT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbk92ZXJmbG93KQogICAgICAg
ICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsK
</data>
<flag name="review"
          id="96532"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="96533"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101974</attachid>
            <date>2011-07-25 23:32:04 -0700</date>
            <delta_ts>2011-07-26 10:11:21 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug64516_7.patch</filename>
            <type>text/plain</type>
            <size>38407</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OGYwZTExLi4xMmIwOGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDct
MjEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb2xsZWN0IGZsb3dlZCBlbGVtZW50cyBpbiBkaWZmZXJlbnQgcmVuZGVyIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXIt
bGF5ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJl
bmRlcmVyLW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy93ZWJraXQtZmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTI1
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCB0aHJl
ZSBtb3JlIHRlc3RzIHRoYXQgcmVsaWVkIG9uIGZvbnRzIGxvYWRpbmcgc3luY2hyb25vdXNseS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVu
ZGVyZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0
MDRjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0
LWZsb3ctcmVuZGVyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKK0Zsb3cg
VGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICAgIGxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MTgKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVY0IC0gZmxvd0EiCisgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA5MTogIkRJVjEgLSBmbG93QSIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdm
bG93QicKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckZsb3dU
aHJlYWQgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgODAweDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgOTB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElW
NSAtIGZsb3dCIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA4MDB4
MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVY3IC0gZmxvd0IiCisgICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDgwMHgxOAorICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMDN4MTgKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwM3gxOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDM6ICJTUEFOMiAtIGZsb3dCIgorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTA6ICJESVY2IC0gZmxvd0IiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0MnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjMg
LSBmbG93QyIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAweDE4
CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWOCAtIGZsb3dDIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5k
ZXJlci1sYXllci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWZhMzZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93
ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisgICAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhyZWFkIGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDApIHNpemUgOTF4MTgKKyAgICAgIFJl
bmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDkxeDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggOTE6ICJESVYxIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5k
ZXJGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDE4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWMiAtIGZsb3dCIgorICBUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3dDJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBsYXll
clR5cGU6IGJhY2tncm91bmQgb25seQorICAgIGxheWVyIGF0ICgwLDM2KSBzaXplIDkweDE4Cisg
ICAgICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IC0xIHtESVZ9IGF0ICgwLDM2KSBzaXpl
IDkweDE4CisgICAgICAgIFJlbmRlclRleHQgekk6IC0xIHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5
MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDkwOiAiRElWNCAtIGZsb3dD
IgorICAgIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMCBsYXllclR5cGU6IGZvcmVncm91bmQg
b25seQorICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA4MDB4MzYKKyAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTB4MTgKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggOTA6ICJESVYzIC0gZmxvd0MiCisgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMTgpIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA5MDogIkRJVjUgLSBmbG93QyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjYjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisgICAgI0RJVjEgeworICAgICAg
ICAtd2Via2l0LWZsb3c6ICdmbG93QSc7CisgICAgICAgIC8qIGZvcmNlIGEgUmVuZGVyTGF5ZXIg
Ki8KKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgICAjRElWMiB7CisgICAg
ICAgIC13ZWJraXQtZmxvdzogJ2Zsb3dCJzsKKyAgICAgICAgLyogRm9yY2UgYSBjb21wb3NpdGVk
IFJlbmRlckxheWVyLiAqLworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgxLCAx
LCAxKTsKKyAgICB9CisgICAgCisgICAgI0RJVjMgeyAtd2Via2l0LWZsb3c6ICdmbG93Qyc7IH0K
KyAgICAKKyAgICAjRElWNSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
ei1pbmRleDogLTE7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iRElWMSI+RElWMSAtIGZs
b3dBPC9kaXY+Cis8ZGl2IGlkPSJESVYyIj5ESVYyIC0gZmxvd0I8L2Rpdj4KKworPGRpdiBpZD0i
RElWMyI+CisgICAgRElWMyAtIGZsb3dDCisgICAgPGRpdiBpZD0iRElWNCI+RElWNSAtIGZsb3dD
PC9kaXY+CisgICAgPGRpdiBpZD0iRElWNSI+RElWNCAtIGZsb3dDPC9kaXY+Cis8L2Rpdj4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVy
LW5lc3RlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvd2Via2l0LWZs
b3ctcmVuZGVyZXItbmVzdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2QwZmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0EnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDApIHNpemUgODAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA5MXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MTogIkRJ
VjEgLSBmbG93QSIKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDB4MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAorICAg
ICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MAorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggOTE6ICJESVYzIC0gZmxvd0EiCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0InCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJGbG93VGhy
ZWFkIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDgwMHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDkweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5MDogIkRJVjIg
LSBmbG93QiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxv
dy1yZW5kZXJlci1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42OTA3ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3dlYmtpdC1mbG93LXJlbmRlcmVyLW5lc3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSwgI0RJVjMgeyAtd2Via2l0LWZsb3c6J2Zsb3dB
JzsgfQorI0RJVjIgeyAtd2Via2l0LWZsb3c6J2Zsb3dCJzsgfQorPC9zdHlsZT4KKworPGRpdiBp
ZD0iRElWMSI+CisgICAgRElWMSAtIGZsb3dBCisgICAgPGRpdiBpZD0iRElWMiI+RElWMiAtIGZs
b3dCPC9kaXY+CisgICAgPHA+CisgICAgICAgIDxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93QTwv
ZGl2PgorICAgIDwvcD4KKzwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MmY3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisjRElWMSB7IC13ZWJr
aXQtZmxvdzonZmxvd0EnOyB9CisjU1BBTjIgeyAtd2Via2l0LWZsb3c6ICdmbG93Qic7IH0KKyNE
SVYzIHsgLXdlYmtpdC1mbG93OiAnZmxvd0MnOyB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJESVYx
Ij5ESVYxIC0gZmxvd0E8L2Rpdj4KKzxzcGFuIGlkPSJTUEFOMiI+U1BBTjIgLSBmbG93Qjwvc3Bh
bj4KKzxkaXYgaWQ9IkRJVjMiPkRJVjMgLSBmbG93QzwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rp
b24gdGVzdChuYW1lLCBmbG93LCBiZWZvcmUpIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IG5hbWU7CisgICAgZWwuc2V0QXR0cmlidXRl
KCJzdHlsZSIsICItd2Via2l0LWZsb3c6JyIrIGZsb3cgKyInIik7CisgICAgZWwuaW5uZXJIVE1M
ID0gbmFtZSArICIgLSAiICsgZmxvdzsKKyAgICBpZiAoYmVmb3JlKQorICAgICAgICBkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShlbCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYmVmb3JlKSk7
CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTsKK30KKwor
Ly8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW4gZmxvd0EsIGJlZm9yZSBESVYxIChzYW1lIGZsb3ct
dGhyZWFkKS4KK3Rlc3QoIkRJVjQiLCAiZmxvd0EiLCAiRElWMSIpOworCisvLyBJbnNlcnQgYSBu
ZXcgZWxlbWVudCBpbiBmbG93QiwgYmVmb3JlIERJVjEgKGRpZmZlcmVudCBmbG93LXRocmVhZCku
Cit0ZXN0KCJESVY1IiwgImZsb3dCIiwgIkRJVjEiKTsKKworLy8gSW5zZXJ0IGEgbmV3IGVsZW1l
bnQgaW4gZmxvd0IsIGJlZm9yZSBESVYzIChkaWZmZXJlbnQgZmxvdy10aHJlYWQpLgordGVzdCgi
RElWNiIsICJmbG93QiIsICJESVYzIik7CisKKy8vIEluc2VydCBhIG5ldyBlbGVtZW50IGluIGZs
b3dCLCBiZWZvcmUgU1BBTjIgKHNhbWUgZmxvdy10aHJlYWQsIHNwYW4gaW5zaWRlIGFub255bW91
cyBibG9jaykuCit0ZXN0KCJESVY3IiwgImZsb3dCIiwgIlNQQU4yIik7CisKKy8vIEFwcGVuZCBh
IG5ldyBlbGVtZW50IGluIGZsb3dDLgordGVzdCgiRElWOCIsICJmbG93QyIpOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZmE0YTUzZS4uNWVhOTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDExLTA3LTIxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4K
KworICAgICAgICBbQ1NTUmVnaW9uc10gQ29sbGVjdCBmbG93ZWQgZWxlbWVudHMgaW4gZGlmZmVy
ZW50IHJlbmRlciBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDUxNgorCisgICAgICAgIEFsbCB0aGUgUmVuZGVyT2JqZWN0cyB0aGF0IGhh
dmUgYSBzcGVjaWZpZWQgImZsb3ciIG5hbWUgYXJlIG1vdmVkIG91dCBvZiB0aGUKKyAgICAgICAg
bm9ybWFsIGZsb3cuIEEgUmVuZGVyRmxvd1RocmVhZCB3aWxsIGNvbGxlY3QgYWxsIHN1Y2ggUmVu
ZGVyT2JqZWN0cy4gVGhlcmUgaXMKKyAgICAgICAgYSBSZW5kZXJGbG93VGhyZWFkIGZvciBlYWNo
IGZsb3cgbmFtZS4gVGhlIG5ldyBSZW5kZXJGbG93VGhyZWFkIGlzIGFuIGFub255bW91cworICAg
ICAgICBSZW5kZXJCbG9jayB0aGF0IGlzIHBvc2l0aW9uZWQgYWJzb2x1dGUgYW5kIHdpbGwgbm90
IHJlbmRlciBkaXJlY3RseS4gSW4gYQorICAgICAgICBkaWZmZXJlbnQgYnVnL3BhdGNoIHdlIHdp
bGwgYWRkIFJlbmRlclJlZ2lvbiB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIHJlbmRlcmluZyB0aGUK
KyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCBvbiBzY3JlZW4uCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy93ZWJraXQt
Zmxvdy1yZW5kZXJlci1sYXllci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvd2Vi
a2l0LWZsb3ctcmVuZGVyZXItbmVzdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9u
cy93ZWJraXQtZmxvdy1yZW5kZXJlci5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlm
Zik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJl
cklmTmVlZGVkKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpoYXNGbG93VGhyZWFkUGFyZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRGbG93UmVuZGVy
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpuZXh0UmVuZGVyZXJGb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnByZXZpb3VzUmVuZGVyZXJG
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZUNoaWxkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvUmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzUmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorCiAyMDExLTA3LTI1ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQ01BS0VdIFNwbGl0IEpT
QyByZWxhdGVkIGZpbGVzIGZyb20gV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMzJjN2E2Li4wNjg2ZTU4
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
MzQ4NzQsNiArMzQ4NzQsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZsb3dUaHJlYWQuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
Rmxvd1RocmVhZC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFJlbmRlckZvcmVpZ25PYmplY3QuY3BwIgogCQkJCT4KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYWE3OGMyLi4zOTE4NTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzE5LDYg
KzEzMTksOCBAQAogCQk0RkQ4RDBGMzExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEOEQwRjEx
MTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCAqLzsgfTsKIAkJNTAxQkE5RTIxMzkz
Q0VBMDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFw
U2hhcGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFBODEzOTUwRTJDMDBGN0FDRUIg
LyogV2luZFJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NG
MTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKKwkJNTA4Q0NBNTAxM0NG
MTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuY3BwICovOyB9OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyog
Q1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87
IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4
MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTc4OTQsNiArNzg5
Niw4IEBACiAJCTUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1dyYXBTaGFwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAxQkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRSdWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMUJBQUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFw
U2hhcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1dyYXBT
aGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDhDQ0E0RDEzQ0YxMDZC
MDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAv
KiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEyRDEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTYxMCw2ICsxOTYxNCw4IEBACiAJCQkJQThDRkYwNEMw
QTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggKi8sCiAJCQkJMzdGQzk2REExMTA0RUQ3
MTAwM0UxRkFEIC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovLAogCQkJCUJDQTI1
NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLywKKwkJCQk1
MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovLAorCQkJCTUw
OENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcmVuZGVyaW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIz
MjUxLDYgKzIzMjU3LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDhDQ0E0RjEzQ0YxMDZCMDAz
MTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjAzNyw2ICsy
NjA0NCw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggNjI4NTkyMS4uZDI0MWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzU3LDYgKzM1Nywx
MiBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBzMSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHMyKQogICAgIGlmICgoczEgJiYgczIpICYmIChzMS0+aGFzVGV4
dENvbWJpbmUoKSAhPSBzMi0+aGFzVGV4dENvbWJpbmUoKSkpCiAgICAgICAgIGNoID0gRGV0YWNo
OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2gg
dGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1Ro
cmVhZC4KKyAgICBpZiAoKHMxICYmIHMyKSAmJiAoczEtPmZsb3dUaHJlYWQoKSAhPSBzMi0+Zmxv
d1RocmVhZCgpKSkKKyAgICAgICAgY2ggPSBEZXRhY2g7CisjZW5kaWYKKwogICAgIHJldHVybiBj
aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggZTI3OWE3OS4uNzE5YTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgpAQCAtNDQsNiArNDYsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCgw
KQogICAgICwgbV9pbmNsdWRlcigwKQogICAgICwgbV9zdHlsZSgwKQorI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKKyAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCisjZW5kaWYKIHsKICAgICBD
b250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKICAgICBp
ZiAoIXBhcmVudCkKQEAgLTg0LDYgKzg5LDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAsIG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdCgwKQogICAgICwgbV9pbmNsdWRlcigwKQogICAgICwgbV9z
dHlsZShzdHlsZSkKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgLCBtX3BhcmVudEZsb3dS
ZW5kZXJlcigwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTk0LDYgKzEwMiw5IEBAIE5vZGVSZW5kZXJp
bmdDb250ZXh0Ojp+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKQogdm9pZCBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgbV9z
dHlsZSA9IHN0eWxlOworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBtb3ZlVG9GbG93VGhy
ZWFkSWZOZWVkZWQoKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2Rl
UmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkKQEAgLTE1NSw2ICsxNjYsMTEgQEAgUmVu
ZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyLT5uZXh0U2libGluZygpOwogCisjaWYgRU5BQkxFKENTU19SRUdJ
T05TKQorICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG1fcGFy
ZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CisjZW5kaWYKKwog
ICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQpIHsKICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogZm91bmQgPSBuZXh0UmVuZGVyZXJPZihtX2luY2x1ZGVyLCBtX25vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwpAQCAtMTY3LDggKzE4MywxNCBAQCBSZW5kZXJP
YmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+bmV4dFNpYmxpbmco
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUt
PnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKSB7CisjaWYgRU5BQkxF
KENTU19SRUdJT05TKQorICAgICAgICAgICAgLy8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0
IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlm
IChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgp
LT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgfQogICAg
ICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBmaXJzdCA9IGZpcnN0UmVuZGVyZXJPZih0b1NoYWRvd0NvbnRlbnRFbGVtZW50
KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CkBAIC0xODQsNiArMjA2LDEx
IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIo
KSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOwogCisjaWYg
RU5BQkxFKENTU19SRUdJT05TKQorICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5wcmV2aW91c1JlbmRlcmVyRm9yTm9kZSht
X25vZGUpOworI2VuZGlmCisKICAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hDb250ZW50Rm9yd2Fy
ZGVkKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZvdW5kID0gcHJldmlvdXNSZW5kZXJl
ck9mKG1faW5jbHVkZXIsIG1fbm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZm91bmQ7CkBAIC0x
OTMsOCArMjIwLDE0IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZp
b3VzUmVuZGVyZXIoKSBjb25zdAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2Ft
ZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwg
d2hlbiBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCiAgICAgZm9yIChO
b2RlKiBub2RlID0gbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
PnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQorICAg
ICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAg
ICAgICAgICAgIC8vIERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8g
YSBkaWZmZXJlbnQgZmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIo
KS0+c3R5bGUoKSAmJiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmlz
Q29udGVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogbGFzdCA9
IGxhc3RSZW5kZXJlck9mKHRvU2hhZG93Q29udGVudEVsZW1lbnQobm9kZSkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBsYXN0OwpAQCAtMjExLDYgKzI0NCwxMSBAQCBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVy
biByZW5kZXJlci0+cGFyZW50KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQor
ICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxv
d1JlbmRlcmVyOworI2VuZGlmCisKICAgICBBU1NFUlQobV9sb2NhdGlvbiAhPSBMb2NhdGlvblVu
ZGV0ZXJtaW5lZCk7CiAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxl
ID8gbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCkgOiAwOwogfQpA
QCAtMjQ5LDYgKzI4NywxNyBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVh
dGVSZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCit2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZO
ZWVkZWQoKQoreworICAgIGlmICghbV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIW1fc3R5bGUg
fHwgbV9zdHlsZS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9mbG93VGhyZWFkID0gbV9zdHlsZS0+Zmxvd1RocmVhZCgpOworICAgIEFTU0VSVChtX25v
ZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgbV9wYXJlbnRGbG93UmVuZGVyZXIg
PSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+cmVuZGVyRmxvd1RocmVhZFdpdGhO
YW1lKG1fZmxvd1RocmVhZCk7Cit9CisjZW5kaWYKIAogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9k
ZVJlbmRlcmVyRmFjdG9yeShOb2RlKiBub2RlKQogICAgIDogbV9jb250ZXh0KG5vZGUpCkBAIC0z
MTYsNiArMzY1LDE1IEBAIHZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJ
Zk5lZWRlZCgpCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQubmV4
dFJlbmRlcmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRl
cmVyQW5kU3R5bGUoKTsKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBpZiAobV9jb250
ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSkgeworICAgICAgICBwYXJlbnRSZW5kZXJlciA9IG1f
Y29udGV4dC5wYXJlbnRGbG93UmVuZGVyZXIoKTsKKyAgICAgICAgLy8gRG8gbm90IGNhbGwgbV9j
b250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUsIGJlY2F1c2UgaXQgZXhwZWN0cyB0byBoYXZlIAor
ICAgICAgICAvLyB0aGUgcmVuZGVyZXIgYWRkZWQgdG8gaXRzIHBhcmVudCBhbHJlYWR5LgorICAg
ICAgICBuZXh0UmVuZGVyZXIgPSBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCktPm5leHRS
ZW5kZXJlckZvck5vZGUobm9kZSk7CisgICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1
bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gbm9kZSkKICAgICAgICAg
bmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4obmV3UmVuZGVyZXIsIGRvY3Vt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOWE2
MjNlNC4uMzU2MDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MCwxMCBAQCBjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50OwogY2xhc3MgU2hhZG93Um9vdDsKIAor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CisjZW5kaWYK
KwogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgogICAgIGV4cGxpY2l0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqKTsKQEAgLTYwLDYgKzY1LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCisjaWYgRU5BQkxFKENTU19SRUdJT05T
KQorICAgIGJvb2wgaGFzRmxvd1RocmVhZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50
Rmxvd1JlbmRlcmVyOyB9CisgICAgUmVuZGVyRmxvd1RocmVhZCogcGFyZW50Rmxvd1JlbmRlcmVy
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7IH0KKyAgICB2b2lkIG1vdmVU
b0Zsb3dUaHJlYWRJZk5lZWRlZCgpOworI2VuZGlmCiBwcml2YXRlOgogCiAgICAgZW51bSBUcmVl
TG9jYXRpb24gewpAQCAtODIsNiArOTIsMTAgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dSb290KiBt
X3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CiAgICAgU2hhZG93Q29udGVudEVsZW1lbnQqIG1faW5j
bHVkZXI7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOworI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKKyAg
ICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOworI2VuZGlmCiB9OwogCiBpbmxpbmUgTm9kZSog
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjVmMWEyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmln
aHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKKworI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKKworI2luY2x1ZGUgIk5vZGUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93
VGhyZWFkKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkKKyAgICAg
IDogUmVuZGVyQmxvY2sobm9kZSkKKyAgICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCit7
CisgICAgc2V0SXNBbm9ueW1vdXMoZmFsc2UpOworICAgIHNldFN0eWxlKGNyZWF0ZUZsb3dUaHJl
YWRTdHlsZSgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRmxvd1RocmVh
ZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5l
d1N0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXko
QkxPQ0spOworICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKKyAg
ICBuZXdTdHlsZS0+c2V0TGVmdChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0
VG9wKExlbmd0aCgwLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAw
LCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLCBQZXJjZW50
KSk7CisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WChPSElEREVOKTsKKyAgICBuZXdTdHlsZS0+
c2V0T3ZlcmZsb3dZKE9ISURERU4pOworICAgIG5ld1N0eWxlLT5mb250KCkudXBkYXRlKDApOwor
ICAgIAorICAgIHJldHVybiBuZXdTdHlsZS5yZWxlYXNlKCk7Cit9CisKK1JlbmRlck9iamVjdCog
UmVuZGVyRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yTm9kZShOb2RlKiBub2RlKSBjb25zdAor
eworICAgIEZsb3dUaHJlYWRDaGlsZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9mbG93VGhy
ZWFkQ2hpbGRMaXN0LmJlZ2luKCk7CisgICAgRmxvd1RocmVhZENoaWxkTGlzdDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmVuZCgpOworICAgIAorICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9ICppdDsK
KyAgICAgICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGNoaWxkLT5ub2RlKCkpOwor
ICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcp
CisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOwor
fQorCitSZW5kZXJPYmplY3QqIFJlbmRlckZsb3dUaHJlYWQ6OnByZXZpb3VzUmVuZGVyZXJGb3JO
b2RlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKG1fZmxvd1RocmVhZENoaWxkTGlzdC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEZsb3dUaHJlYWRDaGlsZExp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmJlZ2luKCk7
CisgICAgRmxvd1RocmVhZENoaWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9mbG93VGhy
ZWFkQ2hpbGRMaXN0LmVuZCgpOworICAgIEZsb3dUaHJlYWRDaGlsZExpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gZW5kOworICAgIAorICAgIGRvIHsKKyAgICAgICAgLS1pdDsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjaGlsZCA9ICppdDsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOwor
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKGNoaWxkLT5ub2RlKCkpOworICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NV
TUVOVF9QT1NJVElPTl9QUkVDRURJTkcpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAg
fSB3aGlsZSAoaXQgIT0gYmVnaW4pOworICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lkIFJl
bmRlckZsb3dUaHJlYWQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQpCit7CisgICAgaWYgKGJlZm9yZUNoaWxkKQorICAgICAgICBtX2Zs
b3dUaHJlYWRDaGlsZExpc3QuaW5zZXJ0QmVmb3JlKGJlZm9yZUNoaWxkLCBuZXdDaGlsZCk7Cisg
ICAgZWxzZQorICAgICAgICBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuYWRkKG5ld0NoaWxkKTsKKyAg
ICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKK30KKwordm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKQorewor
ICAgIG1fZmxvd1RocmVhZENoaWxkTGlzdC5yZW1vdmUoY2hpbGQpOworICAgIFJlbmRlckJsb2Nr
OjpyZW1vdmVDaGlsZChjaGlsZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTMw
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUmVuZGVyRmxvd1RocmVhZF9oCisjZGVmaW5lIFJlbmRlckZsb3dUaHJlYWRfaAor
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclN0eWxlOworCisv
LyBSZW5kZXJGbG93VGhyZWFkIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIHJlbmRlciBvYmpl
Y3RzIHRoYXQgcGFydGljaXBhdGUgaW4gYQorLy8gZmxvdyB0aHJlYWQuIEl0IHdpbGwgYWxzbyBo
ZWxwIGluIGRvaW5nIHRoZSBsYXlvdXQuIEhvd2V2ZXIsIGl0IHdpbGwgbm90IHJlbmRlcgorLy8g
ZGlyZWN0bHkgdG8gc2NyZWVuLiBJbnN0ZWFkLCBSZW5kZXJSZWdpb24gb2JqZWN0cyB3aWxsIHJl
ZGlyZWN0IHRoZWlyIHBhaW50IAorLy8gYW5kIG5vZGVBdFBvaW50IG1ldGhvZHMgdG8gdGhpcyBv
YmplY3QuIEVhY2ggUmVuZGVyUmVnaW9uIHdpbGwgYWN0dWFsbHkgYmUgYSB2aWV3UG9ydAorLy8g
b2YgdGhlIFJlbmRlckZsb3dUaHJlYWQuCisKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyRmxvd1RocmVhZChOb2RlKiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
ckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBBdG9taWNTdHJpbmcg
Zmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQorCisgICAgLy8gQWx3
YXlzIGNyZWF0ZSBhIFJlbmRlckxheWVyIGZvciB0aGUgUmVuZGVyRmxvd1RocmVhZCwgc28gdGhh
dCB3ZSAKKyAgICAvLyBjYW4gZWFzaWx5IGF2b2lkIHRvIGRyYXcgaXQncyBjaGlsZHJlbiBkaXJl
Y3RseS4KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyRm9yTm9kZShOb2RlKikgY29u
c3Q7CisgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyRm9yTm9kZShOb2RlKikgY29u
c3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZSgpOworICAgIAorICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJGbG93VGhy
ZWFkIjsgfQorICAgIAorICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxv
d1RocmVhZENoaWxkTGlzdDsKKyAgICBGbG93VGhyZWFkQ2hpbGRMaXN0IG1fZmxvd1RocmVhZENo
aWxkTGlzdDsKKyAgICAKKyAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOworfTsKKworaW5s
aW5lIFJlbmRlckZsb3dUaHJlYWQqIHRvUmVuZGVyRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzUmVuZGVyRmxvd1RocmVh
ZCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyRmxvd1RocmVhZCo+KG9iamVjdCk7
Cit9CisKK2lubGluZSBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiB0b1JlbmRlckZsb3dUaHJlYWQo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2Jq
ZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFJlbmRlckZsb3dUaHJlYWQqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55
b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyRmxvd1RocmVhZChj
b25zdCBSZW5kZXJGbG93VGhyZWFkKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKKworI2VuZGlmIC8vIFJlbmRlckZsb3dUaHJlYWRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmI4ZmQ0Yi4u
MzdhMTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0z
ODc4LDYgKzM4NzgsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhWZWN0b3I8
UmVuZGVyTGF5ZXIqPiomIHBvc0J1ZmZlciwgVmVjdG9yPFJlbmRlckwKIHsKICAgICB1cGRhdGVW
aXNpYmlsaXR5U3RhdHVzKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgLy8gRG8g
bm90IGxldCB0aGUgUmVuZGVyRmxvd1RocmVhZCB0byByZW5kZXIgZGlyZWN0bHkgdG8gc2NyZWVu
LiBJdCB3aWxsIG9ubHkgcmVuZGVyCisgICAgLy8gaW5zaWRlIHRoZSBSZW5kZXJSZWdpb24gb2Jq
ZWN0cywgc28gYXZvaWQgY29sbGVjdGluZyBpdC4KKyAgICBpZiAocmVuZGVyZXIoKS0+aXNSZW5k
ZXJGbG93VGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgLy8gT3ZlcmZs
b3cgbGF5ZXJzIGFyZSBqdXN0IHBhaW50ZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxheWVycywgc28g
dGhleSBkb24ndCBnZXQgcHV0IGluIHpvcmRlciBsaXN0cy4KICAgICBpZiAoKG1faGFzVmlzaWJs
ZUNvbnRlbnQgfHwgKG1faGFzVmlzaWJsZURlc2NlbmRhbnQgJiYgaXNTdGFja2luZ0NvbnRleHQo
KSkpICYmICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNo
IGJ1ZmZlciB0aGUgY2hpbGQgc2hvdWxkIGJlIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCmluZGV4IDAyMmViN2YuLjkzNDI3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMxNiw2ICszMTYsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRp
ZgorCiAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSA9PSBtX25vZGU7IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0OwogICAgIGJv
b2wgaXNIUigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IGMyZDRlZmUuLjc2OTRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFpbHNNYXJrZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQu
aCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC0yNDMsNyArMjQ0LDcgQEAgdm9pZCBSZW5k
ZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLAogICAgICAgICAgICAgICAgIHRzIDw8ICIgKmVtcHR5IG9yIHVuc3R5bGVk
IEFwcGxlU3R5bGVTcGFuKiI7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICBib29sIGFk
anVzdEZvclRhYmxlQ2VsbHMgPSBvLmNvbnRhaW5pbmdCbG9jaygpLT5pc1RhYmxlQ2VsbCgpOwog
CiAgICAgSW50UmVjdCByOwpAQCAtNzA1LDYgKzcwNiwyNiBAQCBzdGF0aWMgdm9pZCB3cml0ZUxh
eWVycyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVy
TGF5ZQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IHBvc0xpc3QtPnNpemUoKTsg
KytpKQogICAgICAgICAgICAgd3JpdGVMYXllcnModHMsIHJvb3RMYXllciwgcG9zTGlzdC0+YXQo
aSksIHBhaW50RGlydHlSZWN0LCBjdXJySW5kZW50LCBiZWhhdmlvcik7CiAgICAgfQorICAgIAor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICAvLyBBbHRvdWdoIHRoZSBSZW5kZXJGbG93VGhy
ZWFkIHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBjb2xsZWN0ZWQgYnkgaXRzIHBhcmVudCwK
KyAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFzIGEgc3BlY2lhbCBjYXNlLgorICAgIGJv
b2wgZmlyc3RSZW5kZXJGbG93VGhyZWFkID0gdHJ1ZTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2hpbGQgPSBsLT5yZW5kZXJlcigpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpIHsKKyAgICAgICAgICAgIGlmIChmaXJzdFJlbmRlckZsb3dUaHJlYWQpIHsKKyAgICAgICAg
ICAgICAgICBmaXJzdFJlbmRlckZsb3dUaHJlYWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB3
cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICAgICAgICAgICAgICB0cyA8PCAiRmxvdyBUaHJl
YWRzXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgUmVuZGVyRmxvd1RocmVh
ZCogcmVuZGVyRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChjaGlsZCk7CisgICAgICAg
ICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgICAgICB0cyA8PCAiVGhy
ZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8
PCAiJ1xuIjsKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlckZsb3dUaHJl
YWQtPmxheWVyKCk7CisgICAgICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVyLCBsYXll
ciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCArIDIsIGJlaGF2aW9yKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgogfQogCiBzdGF0aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDBlMmNhMmYuLmE5Yjlm
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiUmVu
ZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2VsZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgpAQCAtNzgyLDQg
Kzc4MywyMiBAQCB2b2lkIFJlbmRlclZpZXc6OndpbGxNb3ZlT2Zmc2NyZWVuKCkKICNlbmRpZgog
fQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmll
dzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVh
ZCkKK3sKKyAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJl
bmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
IChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcik7Cisg
ICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmxvd1JlbmRlcmVyOworICAgICAgICB9CisgICAgfQor
CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRlcmVyID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50KCksIGZsb3dUaHJlYWQpOworICAgIGFkZENoaWxk
KGZsb3dSZW5kZXJlcik7CisgICAgCisgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaAppbmRleCA5NWQxZTYzLi40Y2JmNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTMxLDYgKzMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyV2lkZ2V0OwogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorY2xhc3MgUmVuZGVyRmxv
d1RocmVhZDsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xh
c3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogI2VuZGlmCkBAIC0xNjMsNiArMTY3LDEwIEBAIHB1
YmxpYzoKIAogICAgIEludFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCisgICAgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCk7CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRy
YW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDM1YmEzZTQuLjZhMzI4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzQ5LDggKzM0OSw3IEBAIFN0eWxlRGlmZmVyZW5j
ZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBj
aGFuZ2VkQ29uCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmxvd1RocmVhZCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVh
ZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkICE9
IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQKKyAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZCAhPSBvdGhlci0+cmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkCiAgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9yZWdpb25JbmRleCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
cmVnaW9uSW5kZXgKICAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lv
bk92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25PdmVyZmxv
dykKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>