<?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>58638</bug_id>
          
          <creation_ts>2011-04-14 23:42:53 -0700</creation_ts>
          <short_desc>Full Screen from within an &lt;iframe&gt; does not cause &lt;iframe&gt; to resize.</short_desc>
          <delta_ts>2011-04-22 16:53:08 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386413</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-14 23:42:53 -0700</bug_when>
    <thetext>The end result is an element which has been resized to occupy the entirety of its &lt;iframe&gt; but not the root document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386878</commentid>
    <comment_count>1</comment_count>
      <attachid>89843</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-15 13:40:34 -0700</bug_when>
    <thetext>Created attachment 89843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388687</commentid>
    <comment_count>2</comment_count>
      <attachid>89843</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 12:10:03 -0700</bug_when>
    <thetext>Comment on attachment 89843
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4853
&gt; +    Element* element = m_fullScreenElement.get();
&gt; +    while (HTMLFrameOwnerElement* ownerElement = element-&gt;document()-&gt;ownerElement()) {
&gt; +        if (!ownerElement-&gt;isFrameElement())
&gt; +            continue;
&gt; +        
&gt; +        static_cast&lt;HTMLFrameElementBase*&gt;(ownerElement)-&gt;setContainsFullScreenElement(false);
&gt; +        element = ownerElement;
&gt; +    }

ewww, duplicate code. This code and the code in Document::webkitWillEnterFullScreenForElement() differs only by the boolean value we pass to setContainsFullScreenElement(). I suggest we extract this code into a common function, maybe called setContainsFullScreenElementOnElementAndItsOwners()? or use a similar idea to RenderObject::setNeedsLayout() and have setContainsFullScreenElement() take an optional markOwners argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388690</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 12:14:29 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt;[...] or use a similar idea to RenderObject::setNeedsLayout() and have setContainsFullScreenElement() take an optional markOwners argument.

I meant to write &quot;...and have the extracted setContainsFullScreenElement() take an optional markOwners argument.&quot; That is, don&apos;t add an optional markOwners argument to HTMLFrameElementBase::setContainsFullScreenElement().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388700</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 12:28:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt;[...] or use a similar idea to RenderObject::setNeedsLayout() and have setContainsFullScreenElement() take an optional markOwners argument.
&gt; 
&gt; I meant to write &quot;...and have the extracted setContainsFullScreenElement() take an optional markOwners argument.&quot; That is, don&apos;t add an optional markOwners argument to HTMLFrameElementBase::setContainsFullScreenElement().

Let me make sure I understand.  Modify the HTMLFrameElementBase to look like:

    virtual void setContainsFullScreenElement(bool);
    virtual void setContainsFullScreenElement(bool, bool markOwners);

or:

    virtual void setContainsFullScreenElement(bool, bool markOwners = false);

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388711</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 12:43:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt;[...] or use a similar idea to RenderObject::setNeedsLayout() and have setContainsFullScreenElement() take an optional markOwners argument.
&gt; &gt; 
&gt; &gt; I meant to write &quot;...and have the extracted setContainsFullScreenElement() take an optional markOwners argument.&quot; That is, don&apos;t add an optional markOwners argument to HTMLFrameElementBase::setContainsFullScreenElement().
&gt; 
&gt; Let me make sure I understand.  Modify the HTMLFrameElementBase to look like:
&gt; 
&gt;     virtual void setContainsFullScreenElement(bool);
&gt;     virtual void setContainsFullScreenElement(bool, bool markOwners);
&gt; 
&gt; or:
&gt; 
&gt;     virtual void setContainsFullScreenElement(bool, bool markOwners = false);
&gt; 
&gt; ?

You could do this, but this doesn&apos;t seem like it would make the call sites cleaner unless you can assume that m_fullScreenElement is always a HTMLFrameElementBase element or an element derived from it.

Instead, I was implying that one idea is to add a static local function to Document that has the form:

enum DoesContainFullScreenElement = {DoesNotContainFullScreenElement, ContainsFullScreenElement};
enum ShouldMarkOwnerElements = {MarkOwnerElements, DoNotMarkOwnerElements};
static void setContainsFullScreenElement(Element*, DoesContainFullScreenElement, ShouldMarkOwnerElements)
{
...
}

Then the call site in Document::webkitWillEnterFullScreenForElement() and Document::webkitDidEnterFullScreenForElement() become:

setContainsFullScreenElement(m_fullScreenElement.get(), ContainsFullScreenElement, MarkOwnerElements);

AND

setContainsFullScreenElement(m_fullScreenElement.get(), DoesNotContainFullScreenElement, MarkOwnerElements);

respectively.

Clearly, the use of enums make this a bit verbose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388726</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 13:04:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; You could do this, but this doesn&apos;t seem like it would make the call sites cleaner unless you can assume that m_fullScreenElement is always a HTMLFrameElementBase element or an element derived from it.
&gt; 
&gt; Instead, I was implying that one idea is to add a static local function to Document that has the form:
&gt; 
&gt; enum DoesContainFullScreenElement = {DoesNotContainFullScreenElement, ContainsFullScreenElement};
&gt; enum ShouldMarkOwnerElements = {MarkOwnerElements, DoNotMarkOwnerElements};
&gt; static void setContainsFullScreenElement(Element*, DoesContainFullScreenElement, ShouldMarkOwnerElements)

Ah, this makes much more sense.  I&apos;ll implement it and submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388733</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 13:12:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; You could do this, but this doesn&apos;t seem like it would make the call sites cleaner unless you can assume that m_fullScreenElement is always a HTMLFrameElementBase element or an element derived from it.
&gt; &gt; 
&gt; &gt; Instead, I was implying that one idea is to add a static local function to Document that has the form:
&gt; &gt; 
&gt; &gt; enum DoesContainFullScreenElement = {DoesNotContainFullScreenElement, ContainsFullScreenElement};
&gt; &gt; enum ShouldMarkOwnerElements = {MarkOwnerElements, DoNotMarkOwnerElements};
&gt; &gt; static void setContainsFullScreenElement(Element*, DoesContainFullScreenElement, ShouldMarkOwnerElements)
&gt; 
&gt; Ah, this makes much more sense.  I&apos;ll implement it and submit a new patch.

Actually, it seems presumptuous to add that enum that will probably never be used.  How about just a:

    static void setContainsFullScreenElementRecursively();

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388736</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 13:15:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt;     static void setContainsFullScreenElementRecursively();

(with parameters, natch.) ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388740</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 13:19:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt;     static void setContainsFullScreenElementRecursively();
&gt; 
&gt; (with parameters, natch.) ;-)

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388741</commentid>
    <comment_count>10</comment_count>
      <attachid>90243</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 13:22:37 -0700</bug_when>
    <thetext>Created attachment 90243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388808</commentid>
    <comment_count>11</comment_count>
      <attachid>90243</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 14:42:08 -0700</bug_when>
    <thetext>Comment on attachment 90243
Patch

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

The addition of isFrameElement() and it usage makes this patch also applicable to &lt;frame&gt;s (i.e frames within a frameset document). With the exception of the remarks for WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector() in the change log, the change log text and bug description talk about the HTML IFrame element. I take it this patch is also applicable to frames within a frameset document? If so, as far as I can tell we don&apos;t have existing test coverage with respect to an HTML frameset document and this patch doesn&apos;t provide a test case for such a document.

&gt; LayoutTests/fullscreen/full-screen-iframe-allowed.html:10
&gt;              consoleWrite(&quot;SUCCEED - entered full screen!&quot;); 

I suggest removing this line since you call test() below, which calls consoleWrite() to write an OK or FAIL result.

&gt; Source/WebCore/ChangeLog:1
&gt; +2011-04-14  Jer Noble  &lt;jer.noble@apple.com&gt;

This change log is out of date and is missing the entry for the added function setContainsFullScreenElementRecursively().

&gt; Source/WebCore/dom/Document.cpp:4813
&gt; +    } while ((element = element-&gt;document()-&gt;ownerElement()));

Nit: The parentheses around the expression &quot;element = element-&gt;document()-&gt;ownerElement()&quot; are unnecessary. I suggest removing them.

&gt; Source/WebCore/dom/Element.h:323
&gt; +    virtual bool isFrameElement() const { return false; }

Note, the name of this method is a bit disingenuous since it&apos;s true whenever the element is either a &lt;frame&gt; or an &lt;iframe&gt;. Maybe isFrameOrIFrameElement()? That being said, I don&apos;t have a strong preference against the current name.

We should consider using isFrameElement() in more places throughout the code base. It&apos;s probably best to do this in a follow up bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388861</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 15:47:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 90243 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90243&amp;action=review
&gt; 
&gt; The addition of isFrameElement() and it usage makes this patch also applicable to &lt;frame&gt;s (i.e frames within a frameset document). With the exception of the remarks for WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector() in the change log, the change log text and bug description talk about the HTML IFrame element. I take it this patch is also applicable to frames within a frameset document? If so, as far as I can tell we don&apos;t have existing test coverage with respect to an HTML frameset document and this patch doesn&apos;t provide a test case for such a document.

Yes, it should be equally applicable to a frame within a frame set.  I can add some test cases for frame sets; they&apos;ll be very simple clones of the iframe cases.

&gt; &gt; LayoutTests/fullscreen/full-screen-iframe-allowed.html:10
&gt; &gt;              consoleWrite(&quot;SUCCEED - entered full screen!&quot;); 
&gt; 
&gt; I suggest removing this line since you call test() below, which calls consoleWrite() to write an OK or FAIL result.

Sure.

&gt; &gt; Source/WebCore/ChangeLog:1
&gt; &gt; +2011-04-14  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; 
&gt; This change log is out of date and is missing the entry for the added function setContainsFullScreenElementRecursively().

You&apos;re right; I forgot to update the ChangeLog.

&gt; &gt; Source/WebCore/dom/Document.cpp:4813
&gt; &gt; +    } while ((element = element-&gt;document()-&gt;ownerElement()));
&gt; 
&gt; Nit: The parentheses around the expression &quot;element = element-&gt;document()-&gt;ownerElement()&quot; are unnecessary. I suggest removing them.

Some compliers will generate warnings when assignments happen within single parentheses.  The double-parens will avoid these warnings.

&gt; &gt; Source/WebCore/dom/Element.h:323
&gt; &gt; +    virtual bool isFrameElement() const { return false; }
&gt; 
&gt; Note, the name of this method is a bit disingenuous since it&apos;s true whenever the element is either a &lt;frame&gt; or an &lt;iframe&gt;. Maybe isFrameOrIFrameElement()? That being said, I don&apos;t have a strong preference against the current name.

It could also be &quot;isFrameElementBase()&quot;, since we&apos;re using it to cast to a HTMLFrameElementBase.  Neither HTMLIFrameElement nor HTMLFrameElement are particularly useful classes from an API standpoint, so it&apos;s unlikely anyone will want to cast directly to one or the other.

&gt; We should consider using isFrameElement() in more places throughout the code base. It&apos;s probably best to do this in a follow up bug.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389057</commentid>
    <comment_count>13</comment_count>
      <attachid>90306</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-19 22:01:28 -0700</bug_when>
    <thetext>Created attachment 90306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389334</commentid>
    <comment_count>14</comment_count>
      <attachid>90306</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-20 10:36:21 -0700</bug_when>
    <thetext>Comment on attachment 90306
Patch

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

Thanks Jer for the additional test cases. This patch looks sane to me. I&apos;m not as familiar with the changes to WKFullScreenWindowController.mm/Core Animation but they look reasonable. If you have any doubt about this change then feel free to ask someone more familiar with this area of the code to review it.

r=me

&gt; LayoutTests/fullscreen/full-screen-frameset-not-allowed.html:22
&gt; +            consoleWrite(&quot;SUCCEED - did not enter full screen!&quot;); 

What you have here is sufficient as is. That being said, could we strengthen this test case by checking that &quot;document.getElementById(&apos;frame&apos;).contentDocument.width != document.width&quot; here as opposed to just assuming we succeeded on timeout? I mean, outputting success here would be a false positive if the webkitfullscreenchange event isn&apos;t dispatched.

Note, if the webkitfullscreenchange event isn&apos;t dispatched then we would detect such a regression using the test case LayoutTests/fullscreen/full-screen-frameset-allowed.html (because it only succeeds when the webkitfullscreenchange event is dispatched among other criterion).

&gt; LayoutTests/fullscreen/resources/not-allowed.html:7
&gt; +&lt;p&gt;Test for &lt;a href=&quot;http://bugs.webkit.org/show_bug.cgi?id=56264&quot;&gt;bug 56264&lt;/a&gt;: 
&gt; +Handle entering full screen security restrictions&lt;/p&gt;
&gt; +&lt;p&gt;To test manually, click the &quot;Go full screen&quot; button - the page should not enter full screen mode.&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; +&lt;script&gt;
&gt; +    top.console = document.getElementById(&apos;console&apos;);
&gt; +&lt;/script&gt;

This is sufficient as is.

If we really wanted to, we could have one file, called frame-test-description-and-console.html, that accepts a query string for the text such that we don&apos;t have to have two files, LayoutTests/fullscreen/resources/allowed.html and LayoutTests/fullscreen/resources/not-allowed.html, which are almost identical.

&gt; Source/WebCore/ChangeLog:21
&gt; +        (WebCore::Document::fullScreenIsAllowedForElement): Use the new Element::isFrameElement

Nit: isFrameElement() =&gt; isFrameElementBase()

&gt; Source/WebCore/ChangeLog:27
&gt; +        (WebCore::Element::isFrameElement): Added.

Ditto.

&gt; Source/WebCore/ChangeLog:32
&gt; +        (WebCore::HTMLFrameElementBase::isFrameElement): Added.

Ditto.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2907
&gt;                  // that element. Also, an &lt;iframe&gt;, &lt;object&gt; or &lt;embed&gt; element whose child browsing 

We should update this comment since this logic also applies to &lt;frame&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390957</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 12:12:32 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 90306 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90306&amp;action=review
&gt; 
&gt; Thanks Jer for the additional test cases. This patch looks sane to me. 

Unfortunately, in coming up with the changes you recommend above, it&apos;s become clear that entering full screen from within a frameset will not work correctly.  This method relies on resizing frame elements with CSS, and a frame within a frameset cannot be resized that way.

Since the &lt;frameset&gt; and &lt;frame&gt; element are deprecated in HTML5, I don&apos;t feel too bad about disallowing full screen from an element within a &lt;frame&gt; element.  I&apos;ll update my patch to reflect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391022</commentid>
    <comment_count>16</comment_count>
      <attachid>90751</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 13:43:42 -0700</bug_when>
    <thetext>Created attachment 90751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391023</commentid>
    <comment_count>17</comment_count>
      <attachid>90751</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 13:44:32 -0700</bug_when>
    <thetext>Comment on attachment 90751
Patch

Gah! webkit-patch upload is totally broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391119</commentid>
    <comment_count>18</comment_count>
      <attachid>90773</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 15:06:40 -0700</bug_when>
    <thetext>Created attachment 90773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391228</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 16:40:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/9327313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391238</commentid>
    <comment_count>20</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-22 16:53:08 -0700</bug_when>
    <thetext>Committed r84706: &lt;http://trac.webkit.org/changeset/84706&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89843</attachid>
            <date>2011-04-15 13:40:34 -0700</date>
            <delta_ts>2011-04-19 13:22:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58638-20110415134032.patch</filename>
            <type>text/plain</type>
            <size>15817</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5OTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NDdkNTJjNGQxNzdmZjQ4ZDgxODdm
NjhmN2U2NzRjZjE0MzRjMzZiLi4xMGUzNzM1ODNmOWY1ZTY3MjMzMTRmMjE3NTNiZGIwNTJjNTY5
OGNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMTUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1
c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAgICAgICAqIGZ1bGxzY3JlZW4vY29udGVudC9pbm5l
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1h
bGxvd2VkLmh0bWw6IEFkZCBhIGJ1dHRvbiB3aXRoIHdoaWNoIHRvIHRyaWdnZXIKKyAgICAgICAg
ICAgIGZ1bGwgc2NyZWVuIG1vZGUgaW4gU2FmYXJpLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVs
bC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLmh0bWw6IERpdHRvLgorCiAyMDExLTA0LTA1ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9jb250ZW50
L2lubmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2NvbnRlbnQvaW5uZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OWUzOGEzODQyYjM0NWZiYzJmNDBiMjNjYTZiOGRjYTIyNmY1OTQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9jb250ZW50L2lubmVyLmh0bWwK
QEAgLTAsMCArMSwzIEBACis8Ym9keT4KKyAgICA8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpIj5HbyBmdWxsIHNjcmVlbjwv
YnV0dG9uPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sCmluZGV4IGEyZWM4YWQxYzA4MWU4MGM5NmY0ZjZl
ZWI5Yjc5NDU3NTcyYWNkMGQuLjc5YzRlYWYxYWFmYmQzODcxODhlNzM4ZTNiODhmOGRmOTA5OTQ3
MTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1l
LWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlm
cmFtZS1hbGxvd2VkLmh0bWwKQEAgLTEsNiArMSw2IEBACiA8cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI2NCI+YnVnIDU2MjY0PC9h
PjogCiBIYW5kbGUgZW50ZXJpbmcgZnVsbCBzY3JlZW4gc2VjdXJpdHkgcmVzdHJpY3Rpb25zPC9w
PgotPHA+VG8gdGVzdCBtYW51YWxseSwgcHJlc3MgU3BhY2UgLSB0aGUgcGFnZSBzaG91bGQgZW50
ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+Cis8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUg
IkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3Jl
ZW4gbW9kZS48L3A+CiA8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpIHsKQEAgLTgsNiArOCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CiAKICAgICB3YWl0Rm9yRXZlbnQoZnJhbWUuY29udGVudERvY3VtZW50LCAn
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiU1VDQ0VFRCAtIGVudGVyZWQgZnVsbCBzY3JlZW4hIik7IAorICAgICAgICAgICAg
dGVzdCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50Lndp
ZHRoPT1kb2N1bWVudC53aWR0aCIpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgfSk7CiAK
QEAgLTIyLDUgKzIzLDUgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB9KTsKIH0KIDwvc2Ny
aXB0PgotPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iYWJvdXQ6YmxhbmsiIG9ubG9hZD0icnVuVGVz
dCgpIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW4+Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJjb250
ZW50L2lubmVyLmh0bWwiIHdpZHRoPSIzMDAiIGhlaWdodD0iMTAwIiBvbmxvYWQ9InJ1blRlc3Qo
KSIgd2Via2l0YWxsb3dmdWxsc2NyZWVuPgogPC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1ub3QtYWxsb3dlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQuaHRtbApp
bmRleCBhZjk3ZDBmMmJhNjYwYTEzZjQwMTU5OTVmZDhlNmYwNGRmZTUwOTM1Li42NzQ2ODc4MWM4
MzdjNmRjOGYwYTRjNTJmYWIzMDBlOTJmNjM5YTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1ub3QtYWxsb3dlZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLmh0bWwKQEAg
LTEsNiArMSw2IEBACiA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjI2NCI+YnVnIDU2MjY0PC9hPjogCiBIYW5kbGUgZW50ZXJpbmcg
ZnVsbCBzY3JlZW4gc2VjdXJpdHkgcmVzdHJpY3Rpb25zPC9wPgotPHA+VG8gdGVzdCBtYW51YWxs
eSwgcHJlc3MgU3BhY2UgLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuPC9wPgorPHA+VG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIg
YnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4K
IDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBm
dW5jdGlvbiBydW5UZXN0KCkgewpAQCAtMjIsNSArMjIsNSBAQCBmdW5jdGlvbiBydW5UZXN0KCkg
ewogICAgIH0pOwogfQogPC9zY3JpcHQ+Ci08aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJhYm91dDpi
bGFuayIgb25sb2FkPSJydW5UZXN0KCkiPgorPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iY29udGVu
dC9pbm5lci5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8L2lmcmFtZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiNTMwOTE2YzUxMWE1YjA0NmVhZmZhYjJiNmM1Nzc5NmQ3NTNkNjUwLi41YTI4NTk4NTU4N2Vh
YmM5MjY0M2ZhOTFmZTIxZDdiNzM3YmE1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTEtMDQtMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3
aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IEFkZCB0aGUg
CisgICAgICAgICAgICAtd2Via2l0LWZ1bGwtc2NyZWVuIHBzZXVkbyBjbGFzcyB0byBmcmFtZSBl
bGVtZW50cyB3aGljaCBjb250YWluCisgICAgICAgICAgICBmdWxsIHNjcmVlbiBlbGVtZW50cy4K
KyAgICAgICAgKiBjc3MvZnVsbHNjcmVlbi5jc3M6CisgICAgICAgIChpZnJhbWU6LXdlYmtpdC1m
dWxsLXNjcmVlbik6IEFkZCBpZnJhbWUtc3BlY2lmaWMgc3R5bGluZyBydWxlcy4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3Jl
ZW5Jc0FsbG93ZWRGb3JFbGVtZW50KTogVXNlIHRoZSBuZXcgRWxlbWVudDo6aXNGcmFtZUVsZW1l
bnQKKyAgICAgICAgICAgIGNhbGwgaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgZWxlbWVudCdzIHRh
ZyBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KTogTWFyayBhbnkgY29udGFpbmluZworICAgICAgICAgICAgaWZyYW1l
cyBhcyBjb250YWluaW5nIGEgZnVsbCBzY3JlZW4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8uCisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRnJh
bWVFbGVtZW50KTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVF
bGVtZW50QmFzZTo6aXNGcmFtZUVsZW1lbnQpOiBBZGRlZC4KKwogMjAxMS0wNC0xNCAgWmhlbnlh
byBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVz
c2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA0MDRhM2I3
YjA5NTEzMGYwN2RmNmU1NTY3MmZkOWJlNzY2YzdkMjg2Li41ZGI0MWU1NmIxZDc0OWQ1Yzk3YmYw
ZTM4YzA3YTVkY2IzZDE1MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
RnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCkBAIC0y
OTA1LDYgKzI5MDYsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgICAg
IC8vIGVsZW1lbnQgaXMgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsIHRoZSAnZnVsbC1zY3Jl
ZW4nIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBlbGVt
ZW50LiBBbHNvLCBhbiA8aWZyYW1lPiwgPG9iamVjdD4gb3IgPGVtYmVkPiBlbGVtZW50IHdob3Nl
IGNoaWxkIGJyb3dzaW5nIAogICAgICAgICAgICAgICAgIC8vIGNvbnRleHQncyBEb2N1bWVudCBp
cyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBoYXMgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xh
c3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICBpZiAoZS0+aXNGcmFtZUVsZW1lbnQoKSAmJiBz
dGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KGUpLT5jb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
ICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1
bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9mdWxs
c2NyZWVuLmNzcwppbmRleCA1MzcwMjRjNTI5NzkwZDBhM2RlOWMwMDNlNTc1MTJmOWFhM2QxNTA5
Li42NzQyY2QxNDg3ZjM1Zjc3NWE0MmFiYmMzZjJmYjhhOGI3M2EwNmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2Z1bGxzY3JlZW4uY3NzCkBAIC0yMiw2ICsyMiwxNyBAQCBpbWc6LXdlYmtpdC1mdWxsLXNjcmVl
biB7CiAgICAgbWF4LXdpZHRoOiAxMDAlOwogfQogCitpZnJhbWU6LXdlYmtpdC1mdWxsLXNjcmVl
biB7CisgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CisgICAgcGFkZGluZzogMCAhaW1wb3J0YW50
OworICAgIGJvcmRlcjogMCAhaW1wb3J0YW50OworICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0
YW50OworICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIHdpZHRoOiAxMDAlICFpbXBv
cnRhbnQ7CisgICAgbGVmdDogMCAhaW1wb3J0YW50OworICAgIHRvcDogMCAhaW1wb3J0YW50Owor
fQorCiB2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTotd2Via2l0LWZ1bGwtc2NyZWVuOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKICAgICBib3R0b206IDBweDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDY0MDgyZTNmYjk5YTQ2YTNhYTJjMmEzYTM0ZmJmMDliZGJl
NGNkNGYuLjQyYTIzNDg1YzZmMjQ0YjJhOTdmMTc5YTdlNzFkODcyNWI0YjFlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNDc1OCw3ICs0NzU4LDcgQEAgYm9vbCBEb2N1bWVudDo6ZnVs
bFNjcmVlbklzQWxsb3dlZEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZWxlbWVudCk7CiAgICAgd2hpbGUgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAg
ICAgaWYgKCFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpICYmICFvd25lckVsZW1l
bnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkKKyAgICAgICAgaWYgKCFvd25lckVsZW1lbnQtPmlz
RnJhbWVFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIXN0
YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4ob3duZXJFbGVtZW50KS0+YWxsb3dGdWxs
U2NyZWVuKCkpCkBAIC00ODA4LDYgKzQ4MDgsMTUgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0V2ls
bEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAobV9m
dWxsU2NyZWVuRWxlbWVudCAhPSBkb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudC0+ZGV0YWNoKCk7CiAKKyAgICBlbGVtZW50ID0gbV9mdWxsU2NyZWVuRWxlbWVu
dC5nZXQoKTsKKyAgICB3aGlsZSAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQg
PSBlbGVtZW50LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkgeworICAgICAgICBpZiAoIW93
bmVyRWxlbWVudC0+aXNGcmFtZUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihvd25lckVs
ZW1lbnQpLT5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KHRydWUpOworICAgICAgICBlbGVt
ZW50ID0gb3duZXJFbGVtZW50OworICAgIH0KKyAgICAKICAgICByZWNhbGNTdHlsZShGb3JjZSk7
CiAgICAgCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRlcmVyKSB7CkBAIC00ODM0LDYgKzQ4NDMs
MTUgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50KikKIAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChFbGVtZW50KikKIHsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9mdWxsU2NyZWVuRWxl
bWVudC5nZXQoKTsKKyAgICB3aGlsZSAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkgeworICAgICAgICBpZiAo
IW93bmVyRWxlbWVudC0+aXNGcmFtZUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihvd25l
ckVsZW1lbnQpLT5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZhbHNlKTsKKyAgICAgICAg
ZWxlbWVudCA9IG93bmVyRWxlbWVudDsKKyAgICB9CisgICAgCiAgICAgaWYgKG1fZnVsbFNjcmVl
blJlbmRlcmVyKSB7CiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVyLT5zZXRBbmltYXRpbmco
dHJ1ZSk7CiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVyLT5zZXRBbmltYXRpbmcodHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBkMjY5ZGJlNmU5OWExNjQ1NzY1MjczN2QzOTlmYmQ4Nzhj
ZTJlZWUwLi5jYzdlY2ZlNTU4ZWE0ZmYzMTkyOGQ4OWQ0NjhmZDU5MDg1Yjg0M2ZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTMyMCw2ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGhhc1VuYWNjZXB0YWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNJblJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNPdXRPZlJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNGcmFtZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCBib29sIGZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1Jl
bmRlcmVyKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcAppbmRleCAwOGI2YTY0ZDA2MzdkYjI5MmI3ODcyY2Y4Njg3OTRiMjc0MDI0ZGViLi5j
ZGY4NTRhNzQ3MDZjN2NjNWNiNjM1MWUyMGM1YjE1NGFkM2Y0MjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCBi
b29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphbGxvd0Z1bGxTY3JlZW4oKSBjb25zdAogewogICAg
IHJldHVybiBoYXNBdHRyaWJ1dGUod2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0cik7CiB9CisKK3Zv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9v
bCBjb250YWlucykKK3sKKyAgICBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSBjb250YWlu
czsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKK30KICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggOTkyMmZkMTViOTNlMmRjZmEwZjkyN2M4ZTJjNzg4ZmQx
YTI1ZWI1NS4uZDM3NjljMjNmMzcyZDJlNzlmNmFhMWJmNDM5MGY3M2E1MzYwMGZmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNDUsNiArNDUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZShib29s
KTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdmlydHVhbCBib29sIGFsbG93RnVs
bFNjcmVlbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50KGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OyB9OwogI2VuZGlm
CiAKIHByb3RlY3RlZDoKQEAgLTYxLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Rm9jdXMoYm9vbCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CiAg
ICAgdm9pZCBjaGVja0luRG9jdW1lbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxGcmFtZUVsZW1lbnRC
YXNlPiopOwpAQCAtOTMsNiArOTYsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV92aWV3U291
cmNlOwogICAgIGJvb2wgbV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZTsKKworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGVkNjAxNmUzMzBhM2EwZDQ3Njg5MTk3MTNjYjEzYjk3NTdkMjUwZjguLmRiN2ExNjNkY2Q0
YTIxYmI2MDMxZjdjNWQzOWNmN2M2ZmM4YWY3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0wNC0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxsIFNjcmVl
biBmcm9tIHdpdGhpbiBhbiA8aWZyYW1lPiBkb2VzIG5vdCBjYXVzZSA8aWZyYW1lPiB0byByZXNp
emUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYz
OAorCisgICAgICAgIFJldHVybiB0aGUgX2VsZW1lbnQncyBkb2N1bWVudCBpbnN0ZWFkIG9mIHRo
ZSBXS1ZpZXcncyBkb2N1bWVudCwgd2hpY2ggCisgICAgICAgIHdpbGwgYmUgZGlmZmVyZW50IGlu
IHRoZSBjYXNlIG9mIGVsZW1lbnRzIHdpdGhpbiA8aWZyYW1lPnMuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJGdWxsU2NyZWVu
Q29udHJvbGxlciBfZG9jdW1lbnRdKToKKwogMjAxMS0wNC0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIu
bW0KaW5kZXggM2NjODM1NWNiNDhlODM5MzQwNWE1ZDFhN2RlMTlhNjViNmU5ZjZjNS4uZmQzNzlk
MjRlN2JhNGY0NjMzNzNmOTE0ZjI5NzJlYWFlZjIzZmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCkBAIC03NjksNyAr
NzY5LDcgQEAgcHJpdmF0ZToKIAogLSAoRG9jdW1lbnQqKV9kb2N1bWVudCAKIHsKLSAgICByZXR1
cm4gY29yZShbW1tzZWxmIHdlYlZpZXddIG1haW5GcmFtZV0gRE9NRG9jdW1lbnRdKTsKKyAgICBy
ZXR1cm4gX2VsZW1lbnQtPmRvY3VtZW50KCk7CiB9CiAKIC0gKENGVGltZUludGVydmFsKV9hbmlt
YXRpb25EdXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRkMjU0ZWE4NWIwNGZlYjU5MTNmNWY1NTE4YTE2
NGYxNWRkNjEyN2QuLjgzNjY0ZjMwYTIyYWQ0ODU4OGRmMDU3MmJlY2I1MzA3ODY5ZTY2ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0xNSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGdWxsIFNjcmVlbiBmcm9tIHdpdGhpbiBhbiA8aWZyYW1lPiBkb2VzIG5vdCBjYXVz
ZSA8aWZyYW1lPiB0byByZXNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODYzOAorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOiBDYW5jZWwgdGhlIGJh
Y2tncm91bmQgYW5pbWF0aW9uCisgICAgICAgICAgICBpZiB0aGUgZnVsbCBzY3JlZW4gYW5pbWF0
aW9uIGZpbmlzaGVzIGZpcnN0LgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMv
V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyk6IG1fZnVsbFNjcmVlblJvb3RM
YXllciB3YXMgdW5pbml0aWFsaXplZC4KKwogMjAxMS0wNC0wNSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5tbQppbmRleCA5MTBhODFlZGZjNmIyNTFjMDRmYWUzYjE0ODg0ZmU4
OTgxYWNlZDc4Li5jYjM2MzZiOTAwOTE4ODNkNWMzOGI3NjhhYTQzNTUyNzYzMjk5NzFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC0yNjUsNiArMjY1LDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogICAgICAgICBOU1ZpZXcqIGFuaW1hdGlvblZpZXcgPSBbW3NlbGYgX2Z1bGxT
Y3JlZW5XaW5kb3ddIGFuaW1hdGlvblZpZXddOwogICAgICAgICBbYW5pbWF0aW9uVmlldyBhZGRT
dWJ2aWV3Ol93ZWJWaWV3IHBvc2l0aW9uZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOl9sYXll
ckhvc3RpbmdWaWV3LmdldCgpXTsKICAgICAgICAgW193ZWJWaWV3IHNldEZyYW1lOlthbmltYXRp
b25WaWV3IGJvdW5kc11dOworCisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICAgICAgW1tbc2Vs
ZiBfZnVsbFNjcmVlbldpbmRvd10gYmFja2dyb3VuZExheWVyXSBzZXRIaWRkZW46WUVTXTsKKyAg
ICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1F
OiBJbiBCYXJvbG8sIG9yZGVySW4gd2lsbCBhbmltYXRlLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3
YW50LiAgRmluZCBhIHdheQogICAgICAgICAvLyB0byB3b3JrIGFyb3VuZCB0aGlzIGJlaGF2aW9y
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9X
ZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0KaW5kZXggMmVlZDAyMThlODVm
MWIwY2YyNmUzZmJhNmVkMTg5ZjBiOGE5NDcyZi4uNjg2OTdiMDQ2Nzg2YTRhMzQwMDJiM2Q0MzAz
ZjE4NWVjZWFkZmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCkBA
IC0xMTcsNiArMTE3LDcgQEAgUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlck1hYz4gV2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWM6OmNyZWF0ZShXZWJQYWdlKiBwYWcKIAogV2ViRnVsbFNjcmVl
bk1hbmFnZXJNYWM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjKFdlYlBhZ2UqIHBhZ2UpCiAgICAg
OiBXZWJGdWxsU2NyZWVuTWFuYWdlcihwYWdlKQorICAgICwgbV9mdWxsU2NyZWVuUm9vdExheWVy
KDApCiB7CiAgICAgbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lci5hZG9wdE5TKFtbV2ViRnVsbFNj
cmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhNYW5hZ2VyOnRoaXMg
YmVnYW46JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpiZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbiBmaW5pc2hlZDomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmZpbmlzaGVkRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uXSk7CiAgICAgbV9leGl0RnVsbFNjcmVlbkxpc3RlbmVyLmFkb3B0TlMo
W1tXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aE1h
bmFnZXI6dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2FuRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb24gZmluaXNoZWQ6JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpmaW5pc2hl
ZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90243</attachid>
            <date>2011-04-19 13:22:37 -0700</date>
            <delta_ts>2011-04-19 22:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58638-20110419132236.patch</filename>
            <type>text/plain</type>
            <size>15954</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyNjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMzIyNGViMGJmZWJiNGRjM2I5ZWQy
MmRlODg0MjYxMjVmZDgxMWEzLi5hZjVjNDA4ZjNmOTFmY2Q0ZTUwODY2MTA2YjVhZTkwN2ZjOTI0
ZWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMTUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1
c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAgICAgICAqIGZ1bGxzY3JlZW4vY29udGVudC9pbm5l
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1h
bGxvd2VkLmh0bWw6IEFkZCBhIGJ1dHRvbiB3aXRoIHdoaWNoIHRvIHRyaWdnZXIKKyAgICAgICAg
ICAgIGZ1bGwgc2NyZWVuIG1vZGUgaW4gU2FmYXJpLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVs
bC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLmh0bWw6IERpdHRvLgorCiAyMDExLTA0LTE5ICBL
cmlzdMOzZiBLb3N6dHnDsyAgPEtvc3p0eW8uS3Jpc3RvZkBzdHVkLnUtc3plZ2VkLmh1PgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2NvbnRlbnQvaW5uZXIuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
Y29udGVudC9pbm5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTM4YTM4NDJiMzQ1ZmJjMmY0MGIyM2Nh
NmI4ZGNhMjI2ZjU5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2NvbnRlbnQvaW5uZXIuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorICAgIDxidXR0b24g
b25jbGljaz0iZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
KCkiPkdvIGZ1bGwgc2NyZWVuPC9idXR0b24+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1hbGxvd2VkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1hbGxvd2VkLmh0bWwKaW5kZXggYTJl
YzhhZDFjMDgxZTgwYzk2ZjRmNmVlYjliNzk0NTc1NzJhY2QwZC4uNzljNGVhZjFhYWZiZDM4NzE4
OGU3MzhlM2I4OGY4ZGY5MDk5NDcxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxw
PlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2MjY0Ij5idWcgNTYyNjQ8L2E+OiAKIEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1
cml0eSByZXN0cmljdGlvbnM8L3A+Ci08cD5UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFjZSAt
IHRoZSBwYWdlIHNob3VsZCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4KKzxwPlRvIHRlc3Qg
bWFudWFsbHksIGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNo
b3VsZCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4KIDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVl
bi10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkgewpAQCAt
OCw2ICs4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAogICAgIHdhaXRGb3JFdmVudChmcmFt
ZS5jb250ZW50RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7
IAogICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTVUNDRUVEIC0gZW50ZXJlZCBmdWxsIHNjcmVl
biEiKTsgCisgICAgICAgICAgICB0ZXN0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUn
KS5jb250ZW50RG9jdW1lbnQud2lkdGg9PWRvY3VtZW50LndpZHRoIikKICAgICAgICAgICAgIGVu
ZFRlc3QoKTsKICAgICB9KTsKIApAQCAtMjIsNSArMjMsNSBAQCBmdW5jdGlvbiBydW5UZXN0KCkg
ewogICAgIH0pOwogfQogPC9zY3JpcHQ+Ci08aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJhYm91dDpi
bGFuayIgb25sb2FkPSJydW5UZXN0KCkiIHdlYmtpdGFsbG93ZnVsbHNjcmVlbj4KKzxpZnJhbWUg
aWQ9ImZyYW1lIiBzcmM9ImNvbnRlbnQvaW5uZXIuaHRtbCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIx
MDAiIG9ubG9hZD0icnVuVGVzdCgpIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW4+CiA8L2lmcmFtZT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5v
dC1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFt
ZS1ub3QtYWxsb3dlZC5odG1sCmluZGV4IGFmOTdkMGYyYmE2NjBhMTNmNDAxNTk5NWZkOGU2ZjA0
ZGZlNTA5MzUuLjY3NDY4NzgxYzgzN2M2ZGM4ZjBhNGM1MmZhYjMwMGU5MmY2MzlhMTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxv
d2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUt
bm90LWFsbG93ZWQuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjY0Ij5idWcgNTYyNjQ8L2E+
OiAKIEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1cml0eSByZXN0cmljdGlvbnM8L3A+
Ci08cD5UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFjZSAtIHRoZSBwYWdlIHNob3VsZCBub3Qg
ZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+Cis8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0
aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1
bGwgc2NyZWVuIG1vZGUuPC9wPgogPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkBAIC0yMiw1ICsyMiw1IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfSk7CiB9CiA8L3NjcmlwdD4KLTxpZnJhbWUgaWQ9
ImZyYW1lIiBzcmM9ImFib3V0OmJsYW5rIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8aWZyYW1lIGlk
PSJmcmFtZSIgc3JjPSJjb250ZW50L2lubmVyLmh0bWwiIG9ubG9hZD0icnVuVGVzdCgpIj4KIDwv
aWZyYW1lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ4YjNkYTM0ODA1OGU2OGEwZDg5ZjFmOGQ0ODJkYzhkMTdh
NDhkZWQuLmRjYzE5OTgxY2I0MWM3MmY2ZDE0ZDRiY2Q3OTA2ZDY3NDk0ZTQ2NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wNC0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGdWxsIFNjcmVlbiBmcm9tIHdpdGhpbiBhbiA8aWZyYW1lPiBkb2VzIG5vdCBjYXVzZSA8aWZy
YW1lPiB0byByZXNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODYzOAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogQWRkIHRoZSAKKyAgICAgICAgICAgIC13ZWJraXQtZnVsbC1zY3JlZW4gcHNl
dWRvIGNsYXNzIHRvIGZyYW1lIGVsZW1lbnRzIHdoaWNoIGNvbnRhaW4KKyAgICAgICAgICAgIGZ1
bGwgc2NyZWVuIGVsZW1lbnRzLgorICAgICAgICAqIGNzcy9mdWxsc2NyZWVuLmNzczoKKyAgICAg
ICAgKGlmcmFtZTotd2Via2l0LWZ1bGwtc2NyZWVuKTogQWRkIGlmcmFtZS1zcGVjaWZpYyBzdHls
aW5nIHJ1bGVzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZnVsbFNjcmVlbklzQWxsb3dlZEZvckVsZW1lbnQpOiBVc2UgdGhlIG5ldyBF
bGVtZW50Ojppc0ZyYW1lRWxlbWVudAorICAgICAgICAgICAgY2FsbCBpbnN0ZWFkIG9mIGNoZWNr
aW5nIHRoZSBlbGVtZW50J3MgdGFnIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBNYXJrIGFueSBjb250YWluaW5n
CisgICAgICAgICAgICBpZnJhbWVzIGFzIGNvbnRhaW5pbmcgYSBmdWxsIHNjcmVlbiBlbGVtZW50
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6aXNGcmFtZUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1l
bnRCYXNlOjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
RWxlbWVudEJhc2U6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppc0ZyYW1lRWxlbWVudCk6IEFkZGVkLgor
CiAyMDExLTA0LTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCmluZGV4IDQwNGEzYjdiMDk1MTMwZjA3ZGY2ZTU1NjcyZmQ5YmU3NjZjN2QyODYu
LjVkYjQxZTU2YjFkNzQ5ZDVjOTdiZjBlMzhjMDdhNWRjYjNkMTUxMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
ZXh0QXJlYUVsZW1lbnQuaCIKQEAgLTI5MDUsNiArMjkwNiw4IEBAIGJvb2wgQ1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWws
IEVsZW1lCiAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBhbiBlbGVtZW50IGluIHRoZSBk
b2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBwbGllcyB0byAKICAgICAg
ICAgICAgICAgICAvLyB0aGF0IGVsZW1lbnQuIEFsc28sIGFuIDxpZnJhbWU+LCA8b2JqZWN0PiBv
ciA8ZW1iZWQ+IGVsZW1lbnQgd2hvc2UgY2hpbGQgYnJvd3NpbmcgCiAgICAgICAgICAgICAgICAg
Ly8gY29udGV4dCdzIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGhhcyB0aGUg
J2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVkLgorICAgICAgICAgICAgICAgIGlmIChl
LT5pc0ZyYW1lRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4o
ZSktPmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1
bGxTY3JlZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzIGIv
U291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCmluZGV4IDUzNzAyNGM1Mjk3OTBkMGEz
ZGU5YzAwM2U1NzUxMmY5YWEzZDE1MDkuLjY3NDJjZDE0ODdmMzVmNzc1YTQyYWJiYzNmMmZiOGE4
YjczYTA2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKQEAgLTIyLDYgKzIyLDE3IEBA
IGltZzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKICAgICBtYXgtd2lkdGg6IDEwMCU7CiB9CiAKK2lm
cmFtZTotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKKyAg
ICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CisgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CisgICAg
cG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CisgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7
CisgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKKyAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7Cisg
ICAgdG9wOiAwICFpbXBvcnRhbnQ7Cit9CisKIHZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlh
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgewogICAg
IGJvdHRvbTogMHB4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzg0YzYxMzI5MTI3
NDJkNDZhNmU2MTA4MTU1NmU4M2IxZTYxZjI3Mi4uM2M2ODRkNzA2NDY5ZGEyOWE5ZDIxZWYzOGU3
NTg2NzQ0NTM2OTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzYzLDcgKzQ3NjMs
NyBAQCBib29sIERvY3VtZW50OjpmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICB3aGlsZSAoSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5v
d25lckVsZW1lbnQoKSkgewotICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShm
cmFtZVRhZykgJiYgIW93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKQorICAgICAg
ICBpZiAoIW93bmVyRWxlbWVudC0+aXNGcmFtZUVsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihv
d25lckVsZW1lbnQpLT5hbGxvd0Z1bGxTY3JlZW4oKSkKQEAgLTQ4MDEsNyArNDgwMSwxOCBAQCB2
b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKICAgICAKICAgICBwYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVl
bkVsZW1lbnQuZ2V0KCkpOwogfQotICAgIAorCitzdGF0aWMgdm9pZCBzZXRDb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50UmVjdXJzaXZlbHkoRWxlbWVudCogZWxlbWVudCwgYm9vbCBjb250YWlucykK
K3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgZG8geworICAgICAgICBpZiAoIWVsZW1lbnQt
PmlzRnJhbWVFbGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4oZWxlbWVudCktPnNldENvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoY29udGFpbnMpOworICAgIH0gd2hpbGUgKChlbGVtZW50ID0g
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpKTsKK30KKwogdm9pZCBEb2N1bWVu
dDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBBU1NFUlQoZWxlbWVudCk7CkBAIC00ODEyLDYgKzQ4MjMsOCBAQCB2b2lkIERvY3Vt
ZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50
KQogICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50ICE9IGRvY3VtZW50RWxlbWVudCgpKQogICAg
ICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kZXRhY2goKTsKIAorICAgIHNldENvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnRSZWN1cnNpdmVseShtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgp
LT5vd25lckVsZW1lbnQoKSwgdHJ1ZSk7CisgICAgCiAgICAgcmVjYWxjU3R5bGUoRm9yY2UpOwog
ICAgIAogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikgewpAQCAtNDgzOCw2ICs0ODUxLDgg
QEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KikKIAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50KikKIHsKKyAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50UmVjdXJzaXZl
bHkobV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCksIGZhbHNl
KTsKKyAgICAKICAgICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpIHsKICAgICAgICAgbV9mdWxs
U2NyZWVuUmVuZGVyZXItPnNldEFuaW1hdGluZyh0cnVlKTsKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkMjY5ZGJlNmU5OWExNjQ1NzY1Mjcz
N2QzOTlmYmQ4NzhjZTJlZWUwLi5jYzdlY2ZlNTU4ZWE0ZmYzMTkyOGQ4OWQ0NjhmZDU5MDg1Yjg0
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMyMCw2ICszMjAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGhhc1VuYWNjZXB0YWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZlJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCBib29sIGZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JtQ29udHJvbFZh
bHVlTWF0Y2hlc1JlbmRlcmVyKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCAwOGI2YTY0ZDA2MzdkYjI5MmI3ODcyY2Y4Njg3OTRi
Mjc0MDI0ZGViLi5jZGY4NTRhNzQ3MDZjN2NjNWNiNjM1MWUyMGM1YjE1NGFkM2Y0MjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMjg4LDYg
KzI4OCwxMiBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphbGxvd0Z1bGxTY3JlZW4oKSBj
b25zdAogewogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUod2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0
cik7CiB9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldENvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQoYm9vbCBjb250YWlucykKK3sKKyAgICBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQgPSBjb250YWluczsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hh
bmdlKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggOTkyMmZkMTViOTNlMmRjZmEwZjky
N2M4ZTJjNzg4ZmQxYTI1ZWI1NS4uZDM3NjljMjNmMzcyZDJlNzlmNmFhMWJmNDM5MGY3M2E1MzYw
MGZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NDUsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZW1haW5zQWxpdmVPblJlbW92YWxG
cm9tVHJlZShib29sKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdmlydHVhbCBi
b29sIGFsbG93RnVsbFNjcmVlbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
OyB9OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKQEAgLTYxLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1l
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVtb3ZlKCk7CiAgICAgdm9pZCBjaGVja0luRG9jdW1lbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxG
cmFtZUVsZW1lbnRCYXNlPiopOwpAQCAtOTMsNiArOTYsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV92aWV3U291cmNlOwogICAgIGJvb2wgbV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJl
ZTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIG1fY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGFmMDFkOTc1OTBhZmE2OTE3MTdhN2FjMjRiNTMzODVlMjZlN2FiYWYu
Ljk3NDc3NTlkNjE5MWMwMTc4NTE2NzkzM2ZhYjAzOWQyMTg3NDgzMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGdWxsIFNjcmVlbiBmcm9tIHdpdGhpbiBhbiA8aWZyYW1lPiBkb2VzIG5vdCBjYXVzZSA8aWZy
YW1lPiB0byByZXNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODYzOAorCisgICAgICAgIFJldHVybiB0aGUgX2VsZW1lbnQncyBkb2N1bWVudCBp
bnN0ZWFkIG9mIHRoZSBXS1ZpZXcncyBkb2N1bWVudCwgd2hpY2ggCisgICAgICAgIHdpbGwgYmUg
ZGlmZmVyZW50IGluIHRoZSBjYXNlIG9mIGVsZW1lbnRzIHdpdGhpbiA8aWZyYW1lPnMuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlciBfZG9jdW1lbnRdKToKKwogMjAxMS0wNC0xOSAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggM2NjODM1NWNiNDhlODM5MzQwNWE1ZDFhN2RlMTlh
NjViNmU5ZjZjNS4uZmQzNzlkMjRlN2JhNGY0NjMzNzNmOTE0ZjI5NzJlYWFlZjIzZmNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tCkBAIC03NjksNyArNzY5LDcgQEAgcHJpdmF0ZToKIAogLSAoRG9jdW1lbnQqKV9kb2N1
bWVudCAKIHsKLSAgICByZXR1cm4gY29yZShbW1tzZWxmIHdlYlZpZXddIG1haW5GcmFtZV0gRE9N
RG9jdW1lbnRdKTsKKyAgICByZXR1cm4gX2VsZW1lbnQtPmRvY3VtZW50KCk7CiB9CiAKIC0gKENG
VGltZUludGVydmFsKV9hbmltYXRpb25EdXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU4OTMyNmI1MGZi
YTlhNGViZjM3MDhhMzIzMmI3YjQ1OWJmZmZkNzguLmMzOTcyZjc2N2U1YTFlNjZiNTk2ZmE4ZDc1
NDEyY2ZhMjA3YWUzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0xNSAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxsIFNjcmVlbiBmcm9tIHdpdGhpbiBhbiA8aWZy
YW1lPiBkb2VzIG5vdCBjYXVzZSA8aWZyYW1lPiB0byByZXNpemUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOAorCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
Ol0pOiBDYW5jZWwgdGhlIGJhY2tncm91bmQgYW5pbWF0aW9uCisgICAgICAgICAgICBpZiB0aGUg
ZnVsbCBzY3JlZW4gYW5pbWF0aW9uIGZpbmlzaGVzIGZpcnN0LgorICAgICAgICAqIFdlYlByb2Nl
c3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyk6
IG1fZnVsbFNjcmVlblJvb3RMYXllciB3YXMgdW5pbml0aWFsaXplZC4KKwogMjAxMS0wNC0xOSAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDkxMGE4MWVk
ZmM2YjI1MWMwNGZhZTNiMTQ4ODRmZTg5ODFhY2VkNzguLmNiMzYzNmI5MDA5MTg4M2Q1YzM4Yjc2
OGFhNDM1NTI3NjMyOTk3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTI2NSw2ICsy
NjUsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIE5TVmlldyogYW5pbWF0
aW9uVmlldyA9IFtbc2VsZiBfZnVsbFNjcmVlbldpbmRvd10gYW5pbWF0aW9uVmlld107CiAgICAg
ICAgIFthbmltYXRpb25WaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXcgcG9zaXRpb25lZDpOU1dpbmRv
d0JlbG93IHJlbGF0aXZlVG86X2xheWVySG9zdGluZ1ZpZXcuZ2V0KCldOwogICAgICAgICBbX3dl
YlZpZXcgc2V0RnJhbWU6W2FuaW1hdGlvblZpZXcgYm91bmRzXV07CisKKyAgICAgICAgW0NBVHJh
bnNhY3Rpb24gYmVnaW5dOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9u
czpZRVNdOworICAgICAgICBbW1tzZWxmIF9mdWxsU2NyZWVuV2luZG93XSBiYWNrZ3JvdW5kTGF5
ZXJdIHNldEhpZGRlbjpZRVNdOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogICAg
ICAgICAKICAgICAgICAgLy8gRklYTUU6IEluIEJhcm9sbywgb3JkZXJJbiB3aWxsIGFuaW1hdGUs
IHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQuICBGaW5kIGEgd2F5CiAgICAgICAgIC8vIHRvIHdv
cmsgYXJvdW5kIHRoaXMgYmVoYXZpb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yy5tbQppbmRleCAyZWVkMDIxOGU4NWYxYjBjZjI2ZTNmYmE2ZWQxODlmMGI4YTk0NzJmLi42ODY5
N2IwNDY3ODZhNGEzNDAwMmIzZDQzMDNmMTg1ZWNlYWRmZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVs
bFNjcmVlbk1hbmFnZXJNYWMubW0KQEAgLTExNyw2ICsxMTcsNyBAQCBQYXNzUmVmUHRyPFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyTWFjPiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Y3JlYXRlKFdlYlBh
Z2UqIHBhZwogCiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6V2ViRnVsbFNjcmVlbk1hbmFnZXJN
YWMoV2ViUGFnZSogcGFnZSkKICAgICA6IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2UpCisgICAg
LCBtX2Z1bGxTY3JlZW5Sb290TGF5ZXIoMCkKIHsKICAgICBtX2VudGVyRnVsbFNjcmVlbkxpc3Rl
bmVyLmFkb3B0TlMoW1tXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aE1hbmFnZXI6dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJl
Z2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYzo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25dKTsKICAgICBtX2V4aXRGdWxs
U2NyZWVuTGlzdGVuZXIuYWRvcHROUyhbW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoTWFuYWdlcjp0aGlzIGJlZ2FuOiZXZWJGdWxsU2NyZWVuTWFu
YWdlck1hYzo6YmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbiBmaW5pc2hlZDomV2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWM6OmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25dKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90306</attachid>
            <date>2011-04-19 22:01:28 -0700</date>
            <delta_ts>2011-04-22 13:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58638-20110419220126.patch</filename>
            <type>text/plain</type>
            <size>24168</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyNjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMzIyNGViMGJmZWJiNGRjM2I5ZWQy
MmRlODg0MjYxMjVmZDgxMWEzLi4zYmRkMzdiMTU5YWY0OTAyNmQ1YjNmYjJkNDI3ZWVjMTlhZmRl
NGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQtMTkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1
c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
ZnJhbWVzZXQtYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFtZXNldC1ub3QtYWxs
b3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2NvbnRlbnQvaW5uZXIuaHRt
bDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxsb3dl
ZC1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1pZnJhbWUtYWxsb3dlZC5odG1sOiBBZGQgYSBidXR0b24gd2l0aCB3aGljaCB0byB0cmlnZ2Vy
CisgICAgICAgICAgICBmdWxsIHNjcmVlbiBtb2RlIGluIFNhZmFyaS4KKyAgICAgICAgKiBmdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQu
aHRtbDogRGl0dG8uCisgICAgICAgICogZnVsbHNjcmVlbi9yZXNvdXJjZXMvYWxsb3dlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL3Jlc291cmNlcy9pbm5lci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL3Jlc291cmNlcy9ub3QtYWxsb3dlZC5odG1sOiBBZGRl
ZC4KKwogMjAxMS0wNC0xOSAgS3Jpc3TDs2YgS29zenR5w7MgIDxLb3N6dHlvLktyaXN0b2ZAc3R1
ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFtZXNldC1hbGxv
d2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJh
bWVzZXQtYWxsb3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJmMjBhNzE3NTE3YzFiZWM4
M2U4MjU3MjlhOTE4NzliMWRlMWU3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtYWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorCisKKy0tLS0tLS0tCitGcmFtZTogJ2hlYWRlcicKKy0tLS0tLS0tCitUZXN0
IGZvciBidWcgNTYyNjQ6IEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1cml0eSByZXN0
cmljdGlvbnMKKworVG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIg
YnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUuCisKK0VWRU5U
KHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitURVNUKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm
cmFtZScpLmNvbnRlbnREb2N1bWVudC53aWR0aD09ZG9jdW1lbnQud2lkdGgpIE9LCitFTkQgT0Yg
VEVTVAorCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0dvIGZ1bGwgc2Ny
ZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1l
c2V0LWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJh
bWVzZXQtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZjYzOGI3MmE2NWRjMzZhOGE1N2UwZWYz
M2MyOTBjZGYwYjczZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWZyYW1lc2V0LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8c2Ny
aXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKwordmFyIHdhaXRpbmdGb3IgPSAyOworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAoLS13YWl0aW5nRm9yKQorICAgICAgICByZXR1cm47CisgICAgdmFy
IGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJyk7CisKKyAgICB3YWl0Rm9y
RXZlbnQoZnJhbWUuY29udGVudERvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1
bmN0aW9uKCkgeyAKKyAgICAgICAgICAgIHRlc3QoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm
cmFtZScpLmNvbnRlbnREb2N1bWVudC53aWR0aD09ZG9jdW1lbnQud2lkdGgiKQorICAgICAgICAg
ICAgZW5kVGVzdCgpOworICAgIH0pOworCisgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKSB7
CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgCisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIkZBSUwgLSBkaWQgbm90IGVudGVyIGZ1bGwgc2NyZWVuISIpOyAKKyAgICAgICAgICAg
IGVuZFRlc3QoKTsgCisgICAgICAgIH0sIDUwKTsKKworICAgICAgICBmcmFtZS5jb250ZW50RG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgfSk7
Cit9Cis8L3NjcmlwdD4KKzxmcmFtZXNldCByb3dzPSIxNTAsKiI+CisgICAgPGZyYW1lIG5hbWU9
ImhlYWRlciIgc3JjPSJyZXNvdXJjZXMvYWxsb3dlZC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgPGZyYW1lIGlkPSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvaW5uZXIuaHRtbCIgb25sb2Fk
PSJydW5UZXN0KCkiIHdlYmtpdGFsbG93ZnVsbHNjcmVlbj4KKzwvZnJhbWVzZXQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxv
d2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJh
bWVzZXQtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZDFiNmM3ZTI2YzQ5
MmJkN2EwZDg4ZjIwNmRjOTVlNWMwYzQ2ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE3IEBACisKKworLS0tLS0tLS0KK0ZyYW1lOiAnaGVhZGVyJworLS0tLS0t
LS0KK1Rlc3QgZm9yIGJ1ZyA1NjI2NDogSGFuZGxlIGVudGVyaW5nIGZ1bGwgc2NyZWVuIHNlY3Vy
aXR5IHJlc3RyaWN0aW9ucworCitUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwg
c2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuCisKK1NVQ0NFRUQgLSBkaWQgbm90IGVudGVyIGZ1bGwgc2NyZWVuIQorRU5EIE9GIFRFU1QK
KworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitHbyBmdWxsIHNjcmVlbgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFtZXNldC1u
b3QtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFt
ZXNldC1ub3QtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMDMyOTA2MDJkZjQwN2FjZjVhNjg5
NDRjYzkzNTgyYjcwZjdmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwzNSBA
QAorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisKK3ZhciB3YWl0aW5nRm9yID0gMjsKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKC0td2FpdGluZ0ZvcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpOworCisgICAg
d2FpdEZvckV2ZW50KGZyYW1lLmNvbnRlbnREb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UnLCBmdW5jdGlvbigpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkZBSUwgLSBlbnRl
cmVkIGZ1bGwgc2NyZWVuISIpOworICAgICAgICAgICAgZW5kVGVzdCgpOyAKKyAgICAgICAgICAg
IGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKKyAgICB9KTsKKworICAgIHJ1bldpdGhLZXlEb3du
KGZ1bmN0aW9uKCkgeworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IAorICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJTVUNDRUVEIC0gZGlkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiEi
KTsgCisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICBpZiAobGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOyAgICAgCisgICAgICAgIH0sIDUwKTsKKworICAgICAgICBmcmFtZS5jb250ZW50RG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgfSk7Cit9
Cis8L3NjcmlwdD4KKzxmcmFtZXNldCByb3dzPSIxNTAsKiI+CisgICAgPGZyYW1lIG5hbWU9Imhl
YWRlciIgc3JjPSJyZXNvdXJjZXMvbm90LWFsbG93ZWQuaHRtbCIgb25sb2FkPSJydW5UZXN0KCki
PgorICAgIDxmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lubmVyLmh0bWwiIG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzwvZnJhbWVzZXQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGI3M2JkNjhjYWJiNWM5NjAxODQwMGIyZjQ0OGU4YTk1ZTdhYTZiZWUuLjIxMzRiNjZhZmUx
Nzc1ZmIzZjA4OGEzMTdiYWEyYTg2MmY0OTg3ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQtZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsOCBAQAogVGVzdCBmb3IgYnVnIDU2MjY0OiBIYW5kbGUgZW50ZXJpbmcg
ZnVsbCBzY3JlZW4gc2VjdXJpdHkgcmVzdHJpY3Rpb25zCiAKLVRvIHRlc3QgbWFudWFsbHksIHBy
ZXNzIFNwYWNlIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUuCitUbyB0
ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFn
ZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KIAogRVZFTlQod2Via2l0ZnVsbHNjcmVl
bmNoYW5nZSkKLVNVQ0NFRUQgLSBlbnRlcmVkIGZ1bGwgc2NyZWVuIQorVEVTVChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9jdW1lbnQud2lkdGg9PWRvY3VtZW50Lndp
ZHRoKSBPSwogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sCmluZGV4IGEyZWM4YWQxYzA4MWU4MGM5
NmY0ZjZlZWI5Yjc5NDU3NTcyYWNkMGQuLmQ1ZWIxMTg4NzlhNzI3Nzc4NThkMDZhNDBjMWJjMzFh
YzM1YWY2MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
aWZyYW1lLWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWlmcmFtZS1hbGxvd2VkLmh0bWwKQEAgLTEsMTMgKzEsMTMgQEAKIDxwPlRlc3QgZm9yIDxh
IGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjY0Ij5idWcg
NTYyNjQ8L2E+OiAKIEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1cml0eSByZXN0cmlj
dGlvbnM8L3A+Ci08cD5UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFjZSAtIHRoZSBwYWdlIHNo
b3VsZCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4KKzxwPlRvIHRlc3QgbWFudWFsbHksIGNs
aWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3VsZCBlbnRlciBm
dWxsIHNjcmVlbiBtb2RlLjwvcD4KIDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHZhciBmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpOwogCiAgICAgd2FpdEZvckV2ZW50KGZy
YW1lLmNvbnRlbnREb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigp
IHsgCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNVQ0NFRUQgLSBlbnRlcmVkIGZ1bGwgc2Ny
ZWVuISIpOyAKKyAgICAgICAgICAgIHRlc3QoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFt
ZScpLmNvbnRlbnREb2N1bWVudC53aWR0aD09ZG9jdW1lbnQud2lkdGgiKQogICAgICAgICAgICAg
ZW5kVGVzdCgpOwogICAgIH0pOwogCkBAIC0yMiw1ICsyMiw1IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CiAgICAgfSk7CiB9CiA8L3NjcmlwdD4KLTxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImFib3V0
OmJsYW5rIiBvbmxvYWQ9InJ1blRlc3QoKSIgd2Via2l0YWxsb3dmdWxsc2NyZWVuPgorPGlmcmFt
ZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lubmVyLmh0bWwiIHdpZHRoPSIzMDAiIGhlaWdo
dD0iMTAwIiBvbmxvYWQ9InJ1blRlc3QoKSIgd2Via2l0YWxsb3dmdWxsc2NyZWVuPgogPC9pZnJh
bWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFt
ZS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWlmcmFtZS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQKaW5kZXggYTRmMDAxZDE0Yzdk
Zjc2Y2UwODcxOTg4NzJmZDY0NDMxMTUxODlmOC4uODg2NDk0MTlmNTY5NTU3NTBmYTgwOWY2YTQ2
OGE1MTliZDhkYzg2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1pZnJhbWUtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDYgQEAKIFRlc3QgZm9yIGJ1ZyA1NjI2NDogSGFuZGxlIGVudGVyaW5nIGZ1bGwgc2Ny
ZWVuIHNlY3VyaXR5IHJlc3RyaWN0aW9ucwogCi1UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFj
ZSAtIHRoZSBwYWdlIHNob3VsZCBub3QgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KK1RvIHRlc3Qg
bWFudWFsbHksIGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNo
b3VsZCBub3QgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KIAogU1VDQ0VFRCAtIGRpZCBub3QgZW50
ZXIgZnVsbCBzY3JlZW4hCiBFTkQgT0YgVEVTVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLmh0bWwKaW5kZXggYWY5
N2QwZjJiYTY2MGExM2Y0MDE1OTk1ZmQ4ZTZmMDRkZmU1MDkzNS4uYTAzNzZiNDdmYmE3YmY0ZWJj
YWNmYjk3NDRmZmVlYzUzNjJiYzk1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1ub3QtYWxsb3dlZC5odG1sCkBAIC0xLDYgKzEs
NiBAQAogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYyNjQiPmJ1ZyA1NjI2NDwvYT46IAogSGFuZGxlIGVudGVyaW5nIGZ1bGwgc2Ny
ZWVuIHNlY3VyaXR5IHJlc3RyaWN0aW9uczwvcD4KLTxwPlRvIHRlc3QgbWFudWFsbHksIHByZXNz
IFNwYWNlIC0gdGhlIHBhZ2Ugc2hvdWxkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4K
KzxwPlRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAt
IHRoZSBwYWdlIHNob3VsZCBub3QgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+CiA8c2NyaXB0
IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24g
cnVuVGVzdCgpIHsKQEAgLTIyLDUgKzIyLDUgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB9
KTsKIH0KIDwvc2NyaXB0PgotPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iYWJvdXQ6YmxhbmsiIG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9pbm5l
ci5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vcmVzb3VyY2VzL2FsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vcmVzb3VyY2VzL2FsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGMzMjFlZGE5MDAz
MTNmOTZjYTczNzEzNGUxMDY5MGYxZjAwYjZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9yZXNvdXJjZXMvYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPHA+
VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTYyNjQiPmJ1ZyA1NjI2NDwvYT46IAorSGFuZGxlIGVudGVyaW5nIGZ1bGwgc2NyZWVuIHNlY3Vy
aXR5IHJlc3RyaWN0aW9uczwvcD4KKzxwPlRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSAiR28g
ZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3VsZCBlbnRlciBmdWxsIHNjcmVlbiBt
b2RlLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICB0b3AuY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7Cis8L3NjcmlwdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL3Jlc291cmNlcy9pbm5lci5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9yZXNvdXJj
ZXMvaW5uZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWUzOGEzODQyYjM0NWZiYzJmNDBiMjNjYTZiOGRj
YTIyNmY1OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9yZXNv
dXJjZXMvaW5uZXIuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorICAgIDxidXR0b24gb25j
bGljaz0iZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCki
PkdvIGZ1bGwgc2NyZWVuPC9idXR0b24+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL3Jlc291cmNlcy9ub3QtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9yZXNvdXJjZXMvbm90LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjc0ZmM4NmQ3
N2FmZDM3N2U1YjI2YjE0NzFjNGZjMDEyNWM5YjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9yZXNvdXJjZXMvbm90LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDcg
QEAKKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2MjY0Ij5idWcgNTYyNjQ8L2E+OiAKK0hhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVl
biBzZWN1cml0eSByZXN0cmljdGlvbnM8L3A+Cis8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0
aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1
bGwgc2NyZWVuIG1vZGUuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIHRvcC5jb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ4YjNkYTM0ODA1OGU2OGEwZDg5ZjFmOGQ0ODJkYzhkMTdh
NDhkZWQuLjExOTdhOGE2NzU1ODVlZGZiMDdhYTcyNjk1M2U5MWQ0N2Q1YjUxZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wNC0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGdWxsIFNjcmVlbiBmcm9tIHdpdGhpbiBhbiA8aWZyYW1lPiBkb2VzIG5vdCBjYXVzZSA8aWZy
YW1lPiB0byByZXNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODYzOAorCisgICAgICAgIFRlc3RzOiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZy
YW1lc2V0LWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1mcmFtZXNldC1ub3QtYWxsb3dlZC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBBZGQgdGhlIAorICAgICAgICAgICAgLXdlYmtpdC1m
dWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3MgdG8gZnJhbWUgZWxlbWVudHMgd2hpY2ggY29udGFpbgor
ICAgICAgICAgICAgZnVsbCBzY3JlZW4gZWxlbWVudHMuCisgICAgICAgICogY3NzL2Z1bGxzY3Jl
ZW4uY3NzOgorICAgICAgICAoaWZyYW1lOi13ZWJraXQtZnVsbC1zY3JlZW4pOiBBZGQgaWZyYW1l
LXNwZWNpZmljIHN0eWxpbmcgcnVsZXMuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50UmVj
dXJzaXZlbHkpOiBBZGRlZC4gIFdhbGsgdXAgZWFjaAorICAgICAgICAgICAgc3VjY2Vzc2l2ZSBk
b2N1bWVudCBvd25lciBlbGVtZW50LCBjYWxsaW5nIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSBpZiAKKyAgICAgICAgICAgIG93bmVyIGlzIGEgZnJhbWUgZWxlbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudCk6IFVzZSB0
aGUgbmV3IEVsZW1lbnQ6OmlzRnJhbWVFbGVtZW50CisgICAgICAgICAgICBjYWxsIGluc3RlYWQg
b2YgY2hlY2tpbmcgdGhlIGVsZW1lbnQncyB0YWcgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IE1hcmsgYW55IGNv
bnRhaW5pbmcKKyAgICAgICAgICAgIGlmcmFtZXMgYXMgY29udGFpbmluZyBhIGZ1bGwgc2NyZWVu
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0ZyYW1lRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lRWxlbWVudEJhc2U6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOiBBZGRlZC4KKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzRnJhbWVFbGVtZW50KTog
QWRkZWQuCisKIDIwMTEtMDQtMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNDA0YTNiN2IwOTUxMzBmMDdkZjZlNTU2NzJmZDliZTc2
NmM3ZDI4Ni4uYTk5YzRlMzc4Y2Q5MzI5ZDhkZDM1MGRiNzU3MWJmZGZiZWIwOTk3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgpAQCAtMjkwNSw2ICsyOTA2LDggQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1lbnQg
aW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRv
IAogICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFtZT4sIDxv
YmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAKICAgICAgICAg
ICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUg
aGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAgICAgICAg
ICAgaWYgKGUtPmlzRnJhbWVFbGVtZW50QmFzZSgpICYmIHN0YXRpY19jYXN0PEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKj4oZSktPmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgp
LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxz
Y3JlZW4uY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCmluZGV4IDUzNzAy
NGM1Mjk3OTBkMGEzZGU5YzAwM2U1NzUxMmY5YWEzZDE1MDkuLjY3NDJjZDE0ODdmMzVmNzc1YTQy
YWJiYzNmMmZiOGE4YjczYTA2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9mdWxs
c2NyZWVuLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKQEAgLTIy
LDYgKzIyLDE3IEBAIGltZzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKICAgICBtYXgtd2lkdGg6IDEw
MCU7CiB9CiAKK2lmcmFtZTotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICBtYXJnaW46IDAgIWlt
cG9ydGFudDsKKyAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CisgICAgYm9yZGVyOiAwICFpbXBv
cnRhbnQ7CisgICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CisgICAgaGVpZ2h0OiAxMDAl
ICFpbXBvcnRhbnQ7CisgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKKyAgICBsZWZ0OiAwICFp
bXBvcnRhbnQ7CisgICAgdG9wOiAwICFpbXBvcnRhbnQ7Cit9CisKIHZpZGVvOi13ZWJraXQtZnVs
bC1wYWdlLW1lZGlhOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwgewogICAgIGJvdHRvbTogMHB4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
Nzg0YzYxMzI5MTI3NDJkNDZhNmU2MTA4MTU1NmU4M2IxZTYxZjI3Mi4uMzRhMDQ4N2M0OTlmM2Y2
NThkNDc2ZmI0YTBkMTEzM2ZmMGZkMWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
NzYzLDcgKzQ3NjMsNyBAQCBib29sIERvY3VtZW50OjpmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxl
bWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAg
ICB3aGlsZSAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBlbGVtZW50LT5k
b2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+
aGFzVGFnTmFtZShmcmFtZVRhZykgJiYgIW93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVU
YWcpKQorICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aXNGcmFtZUVsZW1lbnRCYXNlKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIXN0YXRpY19jYXN0PEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKj4ob3duZXJFbGVtZW50KS0+YWxsb3dGdWxsU2NyZWVuKCkpCkBAIC00ODAx
LDcgKzQ4MDEsMjAgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpCiAg
ICAgCiAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKIH0KLSAgICAKKworc3RhdGljIHZvaWQg
c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudFJlY3Vyc2l2ZWx5KEVsZW1lbnQqIGVsZW1lbnQs
IGJvb2wgY29udGFpbnMpCit7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBkbyB7CisgICAgICAgIGlmICghZWxlbWVudC0+aXNGcmFtZUVsZW1lbnRCYXNlKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxG
cmFtZUVsZW1lbnRCYXNlKj4oZWxlbWVudCktPnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
Y29udGFpbnMpOworICAgIH0gd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
b3duZXJFbGVtZW50KCkpKTsKK30KKwogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVu
dCk7CkBAIC00ODEyLDYgKzQ4MjUsOCBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50ICE9IGRvY3VtZW50RWxlbWVudCgpKQogICAgICAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50LT5kZXRhY2goKTsKIAorICAgIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRSZWN1cnNp
dmVseShvd25lckVsZW1lbnQoKSwgdHJ1ZSk7CisgICAgCiAgICAgcmVjYWxjU3R5bGUoRm9yY2Up
OwogICAgIAogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikgewpAQCAtNDgzOCw2ICs0ODUz
LDggQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50KikKIAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChFbGVtZW50KikKIHsKKyAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50UmVjdXJz
aXZlbHkob3duZXJFbGVtZW50KCksIGZhbHNlKTsKKyAgICAKICAgICBpZiAobV9mdWxsU2NyZWVu
UmVuZGVyZXIpIHsKICAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnNldEFuaW1hdGluZyh0
cnVlKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCBkMjY5ZGJlNmU5OWExNjQ1NzY1MjczN2QzOTlmYmQ4NzhjZTJlZWUwLi40MjQ2YzVjZjE2
YWVlYWYzZmZhZDQ4YmExY2Y0MzNjZWEwY2JhODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMy
MCw2ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1VuYWNjZXB0YWJsZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZlJhbmdl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1l
bnRCYXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBmb3Jt
Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihib29sKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXgg
MDhiNmE2NGQwNjM3ZGIyOTJiNzg3MmNmODY4Nzk0YjI3NDAyNGRlYi4uY2RmODU0YTc0NzA2Yzdj
YzVjYjYzNTFlMjBjNWIxNTRhZDNmNDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgYm9vbCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6YWxsb3dGdWxsU2NyZWVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0
cmlidXRlKHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpOwogfQorCit2b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgY29udGFpbnMpCit7
CisgICAgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gY29udGFpbnM7CisgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCmluZGV4IDk5MjJmZDE1YjkzZTJkY2ZhMGY5MjdjOGUyYzc4OGZkMWEyNWViNTUuLmU5N2Zk
OWM2NDM5OTJiZjkxMzNkYjIwYzZkZDBiOWQ4NzEzNzQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUoYm9vbCk7CiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0Z1bGxTY3JlZW4oKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
CkBAIC02MSw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJv
b2wpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnRCYXNlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgICB2b2lkIGNo
ZWNrSW5Eb2N1bWVudFRpbWVyRmlyZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+Kik7CkBA
IC05Myw2ICs5NiwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3ZpZXdTb3VyY2U7CiAgICAg
Ym9vbCBtX3JlbWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlOworCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIGJvb2wgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWYwMWQ5
NzU5MGFmYTY5MTcxN2E3YWMyNGI1MzM4NWUyNmU3YWJhZi4uMGJkMWNmNDNhMWZhYThlZWI0NWRi
YTZhZDIwMjBjYmQ1MWMzM2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDExLTA0LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1bGwgU2NyZWVuIGZyb20gd2l0
aGluIGFuIDxpZnJhbWU+IGRvZXMgbm90IGNhdXNlIDxpZnJhbWU+IHRvIHJlc2l6ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjM4CisKKyAgICAg
ICAgVGVzdHM6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtYWxsb3dlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2Vk
Lmh0bWwKKworICAgICAgICBSZXR1cm4gdGhlIF9lbGVtZW50J3MgZG9jdW1lbnQgaW5zdGVhZCBv
ZiB0aGUgV0tWaWV3J3MgZG9jdW1lbnQsIHdoaWNoIAorICAgICAgICB3aWxsIGJlIGRpZmZlcmVu
dCBpbiB0aGUgY2FzZSBvZiBlbGVtZW50cyB3aXRoaW4gPGlmcmFtZT5zLgorCisgICAgICAgICog
V2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIgX2RvY3VtZW50XSk6CisKIDIwMTEtMDQtMTkgIFZzZXZvbG9kIFZsYXNv
diAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyLm1tCmluZGV4IDNjYzgzNTVjYjQ4ZTgzOTM0MDVhNWQxYTdkZTE5YTY1YjZlOWY2
YzUuLmZkMzc5ZDI0ZTdiYTRmNDYzMzczZjkxNGYyOTcyZWFhZWYyM2ZjZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpA
QCAtNzY5LDcgKzc2OSw3IEBAIHByaXZhdGU6CiAKIC0gKERvY3VtZW50KilfZG9jdW1lbnQgCiB7
Ci0gICAgcmV0dXJuIGNvcmUoW1tbc2VsZiB3ZWJWaWV3XSBtYWluRnJhbWVdIERPTURvY3VtZW50
XSk7CisgICAgcmV0dXJuIF9lbGVtZW50LT5kb2N1bWVudCgpOwogfQogCiAtIChDRlRpbWVJbnRl
cnZhbClfYW5pbWF0aW9uRHVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlODkzMjZiNTBmYmE5YTRlYmYz
NzA4YTMyMzJiN2I0NTliZmZmZDc4Li42ZTJhYmUyZTAwNWQzNDIwNDk3NjZlYTNlNmMyZjUwMDY1
NGMwMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMTkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9l
cyBub3QgY2F1c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAgICAgICBUZXN0czogZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1mcmFtZXNldC1hbGxvd2VkLmh0bWwKKyAgICAgICAgICAgICAgIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtbm90LWFsbG93ZWQuaHRtbAorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5p
bWF0aW9uOl0pOiBDYW5jZWwgdGhlIGJhY2tncm91bmQgYW5pbWF0aW9uCisgICAgICAgICAgICBp
ZiB0aGUgZnVsbCBzY3JlZW4gYW5pbWF0aW9uIGZpbmlzaGVzIGZpcnN0LgorICAgICAgICAqIFdl
YlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYyk6IG1fZnVsbFNjcmVlblJvb3RMYXllciB3YXMgdW5pbml0aWFsaXplZC4KKwogMjAxMS0w
NC0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDkx
MGE4MWVkZmM2YjI1MWMwNGZhZTNiMTQ4ODRmZTg5ODFhY2VkNzguLmNiMzYzNmI5MDA5MTg4M2Q1
YzM4Yjc2OGFhNDM1NTI3NjMyOTk3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTI2
NSw2ICsyNjUsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIE5TVmlldyog
YW5pbWF0aW9uVmlldyA9IFtbc2VsZiBfZnVsbFNjcmVlbldpbmRvd10gYW5pbWF0aW9uVmlld107
CiAgICAgICAgIFthbmltYXRpb25WaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXcgcG9zaXRpb25lZDpO
U1dpbmRvd0JlbG93IHJlbGF0aXZlVG86X2xheWVySG9zdGluZ1ZpZXcuZ2V0KCldOwogICAgICAg
ICBbX3dlYlZpZXcgc2V0RnJhbWU6W2FuaW1hdGlvblZpZXcgYm91bmRzXV07CisKKyAgICAgICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxl
QWN0aW9uczpZRVNdOworICAgICAgICBbW1tzZWxmIF9mdWxsU2NyZWVuV2luZG93XSBiYWNrZ3Jv
dW5kTGF5ZXJdIHNldEhpZGRlbjpZRVNdOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEluIEJhcm9sbywgb3JkZXJJbiB3aWxsIGFu
aW1hdGUsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQuICBGaW5kIGEgd2F5CiAgICAgICAgIC8v
IHRvIHdvcmsgYXJvdW5kIHRoaXMgYmVoYXZpb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFu
YWdlck1hYy5tbQppbmRleCAyZWVkMDIxOGU4NWYxYjBjZjI2ZTNmYmE2ZWQxODlmMGI4YTk0NzJm
Li42ODY5N2IwNDY3ODZhNGEzNDAwMmIzZDQzMDNmMTg1ZWNlYWRmZGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMv
V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0KQEAgLTExNyw2ICsxMTcsNyBAQCBQYXNzUmVmUHRy
PFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjPiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Y3JlYXRl
KFdlYlBhZ2UqIHBhZwogCiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6V2ViRnVsbFNjcmVlbk1h
bmFnZXJNYWMoV2ViUGFnZSogcGFnZSkKICAgICA6IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2Up
CisgICAgLCBtX2Z1bGxTY3JlZW5Sb290TGF5ZXIoMCkKIHsKICAgICBtX2VudGVyRnVsbFNjcmVl
bkxpc3RlbmVyLmFkb3B0TlMoW1tXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVy
IGFsbG9jXSBpbml0V2l0aE1hbmFnZXI6dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJN
YWM6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVu
TWFuYWdlck1hYzo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25dKTsKICAgICBtX2V4
aXRGdWxsU2NyZWVuTGlzdGVuZXIuYWRvcHROUyhbW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0
aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoTWFuYWdlcjp0aGlzIGJlZ2FuOiZXZWJGdWxsU2Ny
ZWVuTWFuYWdlck1hYzo6YmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbiBmaW5pc2hlZDomV2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWM6OmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25dKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90751</attachid>
            <date>2011-04-22 13:43:42 -0700</date>
            <delta_ts>2011-04-22 13:44:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58638-20110422134340.patch</filename>
            <type>text/plain</type>
            <size>2599</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MDIwNmI1ZjQ1ZDM2NmVi
MjlmNmFmMmFhNjAzODhkOWQ4MmU4OTFjLi4xNWZkNGUxMzg3MWY5OWJmMTlmM2NlMTJmNjg0NDNm
ZDFiODcxZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTEtMDQtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2ggYXQgV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYzo6YmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbiArIDc5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTIyNQorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2luRW50ZXJGdWxsU2NyZWVuQW5p
bWF0aW9uKTogR3VhcmQgYWdhaW5zdCAKKyAgICAgICAgICAgIG1fZnVsbFNjcmVlblJvb3RMYXll
ciBiZWluZyBOVUxMLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6
YmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbik6IERpdHRvLgorCisyMDExLTA0LTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2ll
aiBTdGFjaG93aWFrLgogCiAgICAgICAgIEFsbG93IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbiB0byBiZSBkaXNhYmxlZCB2aWEgYSBwcmVmZXJlbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWMubW0KaW5kZXggNjYyNDNjNWNkMTUxY2U2ZmRhNDZiZTlkMWEyYzNmZDM4
YTU4NzUyNC4uM2I2MTU2ZmVjMmNhYmYyYmYwYTdjMDJiODYyN2JhNDIwYzBiZjFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCkBAIC0xNzMsNyArMTczLDEzIEBAIHZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OnNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogbGF5CiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpiZWdp
bkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQo
bV9lbGVtZW50KTsKLSAgICBBU1NFUlQobV9mdWxsU2NyZWVuUm9vdExheWVyKTsKKyAgICAKKyAg
ICBpZiAoIW1fZnVsbFNjcmVlblJvb3RMYXllcikgeworICAgICAgICAvLyBJZiB3ZSBkb24ndCBo
YXZlIGEgcm9vdCBsYXllciwgd2UgY2FuJ3QgYW5pbWF0ZSBpbiBhbmQgb3V0IG9mIGZ1bGwgc2Ny
ZWVuCisgICAgICAgIHRoaXMtPmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCk7CisgICAg
ICAgIHRoaXMtPmZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKHRydWUpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgSW50UmVjdCBkZXN0aW5hdGlvbkZyYW1lID0gZ2V0RnVs
bFNjcmVlblJlY3QoKTsKICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5S
ZW5kZXJlclNpemUoZGVzdGluYXRpb25GcmFtZS5zaXplKCkpOwpAQCAtMjIyLDcgKzIyOCwxMyBA
QCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbihmbG9hdCBkdXJhdGlvbikKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2lu
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1f
ZWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fZnVsbFNjcmVlblJvb3RMYXllcik7CisgICAgCisgICAg
aWYgKCFtX2Z1bGxTY3JlZW5Sb290TGF5ZXIpIHsKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhIHJvb3QgbGF5ZXIsIHdlIGNhbid0IGFuaW1hdGUgaW4gYW5kIG91dCBvZiBmdWxsIHNjcmVl
bgorICAgICAgICB0aGlzLT5iZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCk7CisgICAgICAg
IHRoaXMtPmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24odHJ1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uRnJhbWUgPSBnZXRGdWxsU2Ny
ZWVuUmVjdCgpOwogICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RnVsbFNjcmVlblJlbmRl
cmVyU2l6ZShkZXN0aW5hdGlvbkZyYW1lLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90773</attachid>
            <date>2011-04-22 15:06:40 -0700</date>
            <delta_ts>2011-04-22 16:25:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58638-20110422150639.patch</filename>
            <type>text/plain</type>
            <size>21929</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NDgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMjU3ZGQxODRkNTg2Zjg1ODUzMzlh
NGQ5MzJkOWFjZjkxZDkyMzBhLi5mMzVkMzY0Zjk4YjBjY2ZjNGRlMzE3MjA2MjFkNmQ4YjM3MDIy
YzU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1
c2UgPGlmcmFtZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2MzgKKworICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
ZnJhbWVzZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWZyYW1lc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vY29udGVu
dC9pbm5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlm
cmFtZS1hbGxvd2VkLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWlmcmFtZS1hbGxvd2VkLmh0bWw6IEFkZCBhIGJ1dHRvbiB3aXRoIHdoaWNo
IHRvIHRyaWdnZXIKKyAgICAgICAgICAgIGZ1bGwgc2NyZWVuIG1vZGUgaW4gU2FmYXJpLgorICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLWV4cGVjdGVk
LnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1u
b3QtYWxsb3dlZC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBmdWxsc2NyZWVuL3Jlc291cmNlcy9h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vcmVzb3VyY2VzL2lubmVy
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA0LTIyICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZGVsZXRpbmcgLmNoZWNrc3VtIGZpbGVzIGluIHBs
YXRmb3JtL21hYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tZnJhbWVzZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1mcmFtZXNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkwMWJkMDUzMTc3YTRkOGM3
YzNjNjgzNjQ4OTczMGNjZmZlZDhlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcg
QEAKKworCistLS0tLS0tLQorRnJhbWU6ICdoZWFkZXInCistLS0tLS0tLQorVGVzdCBmb3IgYnVn
IDU4NjM4OiBEbyBub3QgYWxsb3cgZnVsbHNjcmVlbiBmcm9tIHdpdGhpbiBhIDxmcmFtZT4gZWxl
bWVudCwgZXZlbiB3aXRoIHRoZSB3ZWJraXRhbGxvd2Z1bGxzY3JlZW4gYXR0cmlidXRlIHNldC4K
KworVG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIgYnV0dG9uIC0g
dGhlIHBhZ2Ugc2hvdWxkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorCitTVUNDRUVEIC0g
ZGlkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiEKK0VORCBPRiBURVNUCisKKworLS0tLS0tLS0KK0Zy
YW1lOiAnZnJhbWUnCistLS0tLS0tLQorR28gZnVsbCBzY3JlZW4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQuaHRtbCBiL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDMwOTAx
ZWIxZGY3MWYzYmJlMGI5YjRjZDUxMjI4ZTg4MWVjMjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFtZXNldC5odG1sCkBAIC0wLDAgKzEs
MzUgQEAKKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCit2YXIgd2FpdGluZ0ZvciA9IDI7Citm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICgtLXdhaXRpbmdGb3IpCisgICAgICAgIHJldHVy
bjsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKTsKKwor
ICAgIHdhaXRGb3JFdmVudChmcmFtZS5jb250ZW50RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlJywgZnVuY3Rpb24oKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJGQUlMIC0g
ZW50ZXJlZCBmdWxsIHNjcmVlbiEiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgCisgICAgICAg
ICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCisgICAgfSk7CisKKyAgICBydW5XaXRoS2V5
RG93bihmdW5jdGlvbigpIHsKKworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU1VDQ0VFRCAtIGRpZCBub3QgZW50ZXIgZnVsbCBzY3Jl
ZW4hIik7IAorICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgaWYgKGxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsgICAgIAorICAgICAgICB9LCA1MCk7CisKKyAgICAgICAgZnJhbWUuY29udGVudERv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIH0p
OworfQorPC9zY3JpcHQ+Cis8ZnJhbWVzZXQgcm93cz0iMTUwLCoiPgorICAgIDxmcmFtZSBuYW1l
PSJoZWFkZXIiIHNyYz0icmVzb3VyY2VzL25vdC1hbGxvd2VkLmh0bWwiIHdlYmtpdGZ1bGxzY3Jl
ZW5hbGxvd2VkIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZnJhbWUgaWQ9ImZyYW1lIiBzcmM9
InJlc291cmNlcy9pbm5lci5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2ZyYW1lc2V0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxs
b3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlm
cmFtZS1hbGxvd2VkLWV4cGVjdGVkLnR4dAppbmRleCBiNzNiZDY4Y2FiYjVjOTYwMTg0MDBiMmY0
NDhlOGE5NWU3YWE2YmVlLi4yMTM0YjY2YWZlMTc3NWZiM2YwODhhMzE3YmFhMmE4NjJmNDk4N2Rl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1h
bGxvd2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWlmcmFtZS1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIFRlc3QgZm9y
IGJ1ZyA1NjI2NDogSGFuZGxlIGVudGVyaW5nIGZ1bGwgc2NyZWVuIHNlY3VyaXR5IHJlc3RyaWN0
aW9ucwogCi1UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFjZSAtIHRoZSBwYWdlIHNob3VsZCBl
bnRlciBmdWxsIHNjcmVlbiBtb2RlLgorVG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBm
dWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuCiAKIEVWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCi1TVUNDRUVEIC0gZW50ZXJlZCBm
dWxsIHNjcmVlbiEKK1RFU1QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVu
dERvY3VtZW50LndpZHRoPT1kb2N1bWVudC53aWR0aCkgT0sKIEVORCBPRiBURVNUCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWFsbG93ZWQu
aHRtbAppbmRleCBhMmVjOGFkMWMwODFlODBjOTZmNGY2ZWViOWI3OTQ1NzU3MmFjZDBkLi5kNWVi
MTE4ODc5YTcyNzc3ODU4ZDA2YTQwYzFiYzMxYWMzNWFmNjEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1hbGxvd2VkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtYWxsb3dlZC5odG1sCkBAIC0x
LDEzICsxLDEzIEBACiA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjI2NCI+YnVnIDU2MjY0PC9hPjogCiBIYW5kbGUgZW50ZXJpbmcg
ZnVsbCBzY3JlZW4gc2VjdXJpdHkgcmVzdHJpY3Rpb25zPC9wPgotPHA+VG8gdGVzdCBtYW51YWxs
eSwgcHJlc3MgU3BhY2UgLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48
L3A+Cis8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0
b24gLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+CiA8c2NyaXB0
IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24g
cnVuVGVzdCgpIHsKICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJh
bWUnKTsKIAogICAgIHdhaXRGb3JFdmVudChmcmFtZS5jb250ZW50RG9jdW1lbnQsICd3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7IAotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJTVUNDRUVEIC0gZW50ZXJlZCBmdWxsIHNjcmVlbiEiKTsgCisgICAgICAgICAgICB0ZXN0KCJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9jdW1lbnQud2lkdGg9PWRv
Y3VtZW50LndpZHRoIikKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9KTsKIApAQCAtMjIs
NSArMjIsNSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIH0pOwogfQogPC9zY3JpcHQ+Ci08
aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJhYm91dDpibGFuayIgb25sb2FkPSJydW5UZXN0KCkiIHdl
YmtpdGFsbG93ZnVsbHNjcmVlbj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9p
bm5lci5odG1sIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjEwMCIgb25sb2FkPSJydW5UZXN0KCkiIHdl
YmtpdGFsbG93ZnVsbHNjcmVlbj4KIDwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtbm90LWFsbG93ZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IGE0ZjAwMWQxNGM3ZGY3NmNlMDg3MTk4ODcyZmQ2NDQzMTE1MTg5Zjgu
Ljg4NjQ5NDE5ZjU2OTU1NzUwZmE4MDlmNmE0NjhhNTE5YmQ4ZGM4NmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxvd2VkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1u
b3QtYWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBUZXN0IGZvciBidWcgNTYy
NjQ6IEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1cml0eSByZXN0cmljdGlvbnMKIAot
VG8gdGVzdCBtYW51YWxseSwgcHJlc3MgU3BhY2UgLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVy
IGZ1bGwgc2NyZWVuIG1vZGUuCitUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwg
c2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuCiAKIFNVQ0NFRUQgLSBkaWQgbm90IGVudGVyIGZ1bGwgc2NyZWVuIQogRU5EIE9GIFRFU1QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5v
dC1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFt
ZS1ub3QtYWxsb3dlZC5odG1sCmluZGV4IGFmOTdkMGYyYmE2NjBhMTNmNDAxNTk5NWZkOGU2ZjA0
ZGZlNTA5MzUuLmEwMzc2YjQ3ZmJhN2JmNGViY2FjZmI5NzQ0ZmZlZWM1MzYyYmM5NWIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLW5vdC1hbGxv
d2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUt
bm90LWFsbG93ZWQuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjY0Ij5idWcgNTYyNjQ8L2E+
OiAKIEhhbmRsZSBlbnRlcmluZyBmdWxsIHNjcmVlbiBzZWN1cml0eSByZXN0cmljdGlvbnM8L3A+
Ci08cD5UbyB0ZXN0IG1hbnVhbGx5LCBwcmVzcyBTcGFjZSAtIHRoZSBwYWdlIHNob3VsZCBub3Qg
ZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+Cis8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0
aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgbm90IGVudGVyIGZ1
bGwgc2NyZWVuIG1vZGUuPC9wPgogPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkBAIC0yMiw1ICsyMiw1IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfSk7CiB9CiA8L3NjcmlwdD4KLTxpZnJhbWUgaWQ9
ImZyYW1lIiBzcmM9ImFib3V0OmJsYW5rIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8aWZyYW1lIGlk
PSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvaW5uZXIuaHRtbCIgb25sb2FkPSJydW5UZXN0KCkiPgog
PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL3Jlc291cmNlcy9p
bm5lci5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9yZXNvdXJjZXMvaW5uZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OWUzOGEzODQyYjM0NWZiYzJmNDBiMjNjYTZiOGRjYTIyNmY1OTQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9yZXNvdXJjZXMvaW5uZXIuaHRt
bApAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVu
PC9idXR0b24+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL3Jl
c291cmNlcy9ub3QtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9yZXNvdXJj
ZXMvbm90LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjQxMmFiZjc0NTUxYWY4ODAxZTJmMzYw
ZDQ1OGUzMzg4YTZmZmZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9yZXNvdXJjZXMvbm90LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxwPlRlc3QgZm9y
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOCI+
YnVnIDU4NjM4PC9hPjogCitEbyBub3QgYWxsb3cgZnVsbHNjcmVlbiBmcm9tIHdpdGhpbiBhICZs
dDtmcmFtZSZndDsgZWxlbWVudCwgZXZlbiB3aXRoIHRoZSA8aT53ZWJraXRhbGxvd2Z1bGxzY3Jl
ZW48L2k+IGF0dHJpYnV0ZSBzZXQuPC9wPgorPHA+VG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhl
ICJHbyBmdWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIG5vdCBlbnRlciBmdWxs
IHNjcmVlbiBtb2RlLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICB0b3AuY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhMDZjMWYzZDg3ODJkNDM0NWQ5MDgzZmIzMTc2ZDQyZTllOWIy
YmZmLi42MDk0N2ExOTA3NzY2MjAyMzE3MDNhODEwM2YxZDJjZDc4OTY4ZGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RnVsbCBTY3JlZW4gZnJvbSB3aXRoaW4gYW4gPGlmcmFtZT4gZG9lcyBub3QgY2F1c2UgPGlmcmFt
ZT4gdG8gcmVzaXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg2MzgKKworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1mcmFt
ZXNldC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IpOiBBZGQgdGhlIAorICAgICAgICAgICAgLXdlYmtpdC1mdWxsLXNjcmVlbiBwc2V1ZG8g
Y2xhc3MgdG8gZnJhbWUgZWxlbWVudHMgd2hpY2ggY29udGFpbgorICAgICAgICAgICAgZnVsbCBz
Y3JlZW4gZWxlbWVudHMuCisgICAgICAgICogY3NzL2Z1bGxzY3JlZW4uY3NzOgorICAgICAgICAo
aWZyYW1lOi13ZWJraXQtZnVsbC1zY3JlZW4pOiBBZGQgaWZyYW1lLXNwZWNpZmljIHN0eWxpbmcg
cnVsZXMuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50UmVjdXJzaXZlbHkpOiBBZGRlZC4g
IFdhbGsgdXAgZWFjaAorICAgICAgICAgICAgc3VjY2Vzc2l2ZSBkb2N1bWVudCBvd25lciBlbGVt
ZW50LCBjYWxsaW5nIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBpZiAKKyAgICAgICAg
ICAgIG93bmVyIGlzIGEgZnJhbWUgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudCk6IFVzZSB0aGUgbmV3IEVsZW1lbnQ6Omlz
RnJhbWVFbGVtZW50QmFzZQorICAgICAgICAgICAgY2FsbCBpbnN0ZWFkIG9mIGNoZWNraW5nIHRo
ZSBlbGVtZW50J3MgdGFnIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBNYXJrIGFueSBjb250YWluaW5nCisgICAg
ICAgICAgICBpZnJhbWVzIGFzIGNvbnRhaW5pbmcgYSBmdWxsIHNjcmVlbiBlbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6aXNGcmFtZUVsZW1lbnRCYXNlKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50OjphbGxv
d0Z1bGxTY3JlZW4pOiBEaXNhYmxlIGZ1bGwgc2NyZWVuIGZyb20gd2l0aGluCisgICAgICAgICAg
ICBIVE1MRnJhbWVFbGVtZW50cy4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRDb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OmNvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjppc0ZyYW1lRWxlbWVudEJhc2UpOiBBZGRlZC4KKwogMjAxMS0wNC0yMiAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApp
bmRleCA3NDNmYzQ4ZDJlYjcwMDY0Y2RiZTc3ODVmOGFhNTk5YmMwODhmNDExLi4zMTFkYTlkNDEz
ODcxNmVjN2M1MzZiOWQ5NTM0YzNhZDFhMGRkNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVt
ZW50LmgiCkBAIC0yOTQ1LDYgKzI5NDYsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZQogICAg
ICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsIHRo
ZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCiAgICAgICAgICAgICAgICAg
Ly8gdGhhdCBlbGVtZW50LiBBbHNvLCBhbiA8aWZyYW1lPiwgPG9iamVjdD4gb3IgPGVtYmVkPiBl
bGVtZW50IHdob3NlIGNoaWxkIGJyb3dzaW5nIAogICAgICAgICAgICAgICAgIC8vIGNvbnRleHQn
cyBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBoYXMgdGhlICdmdWxsLXNjcmVl
bicgcHNldWRvY2xhc3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICBpZiAoZS0+aXNGcmFtZUVs
ZW1lbnRCYXNlKCkgJiYgc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihlKS0+Y29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVl
bigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
aWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKaW5kZXggNTM3MDI0YzUyOTc5MGQwYTNkZTljMDAz
ZTU3NTEyZjlhYTNkMTUwOS4uNjc0MmNkMTQ4N2YzNWY3NzVhNDJhYmJjM2YyZmI4YThiNzNhMDZk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwpAQCAtMjIsNiArMjIsMTcgQEAgaW1nOi13
ZWJraXQtZnVsbC1zY3JlZW4gewogICAgIG1heC13aWR0aDogMTAwJTsKIH0KIAoraWZyYW1lOi13
ZWJraXQtZnVsbC1zY3JlZW4geworICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OworICAgIHBhZGRp
bmc6IDAgIWltcG9ydGFudDsKKyAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKKyAgICBwb3NpdGlv
bjogZml4ZWQgIWltcG9ydGFudDsKKyAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKKyAgICB3
aWR0aDogMTAwJSAhaW1wb3J0YW50OworICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKKyAgICB0b3A6
IDAgIWltcG9ydGFudDsKK30KKwogdmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CiAgICAgYm90dG9t
OiAwcHg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0NDA4N2ZmYjgwMDI2MTYxMGU5
YTU0OTUxMTljM2U4M2U2ZDgyZjA2Li5jNjdjNWEwZTY2YzE3OWU5MGFhODAwMjZiYzQ3MDBhZGE2
MDVmNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3NzIsNyArNDc3Miw3IEBAIGJv
b2wgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIHdoaWxlIChIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPm93bmVyRWxl
bWVudCgpKSB7Ci0gICAgICAgIGlmICghb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGZyYW1lVGFn
KSAmJiAhb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAgICAgIGlmICgh
b3duZXJFbGVtZW50LT5pc0ZyYW1lRWxlbWVudEJhc2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihvd25l
ckVsZW1lbnQpLT5hbGxvd0Z1bGxTY3JlZW4oKSkKQEAgLTQ4MTAsNyArNDgxMCwyMCBAQCB2b2lk
IERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKICAgICAKICAgICBwYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVs
ZW1lbnQuZ2V0KCkpOwogfQotICAgIAorCitzdGF0aWMgdm9pZCBzZXRDb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50UmVjdXJzaXZlbHkoRWxlbWVudCogZWxlbWVudCwgYm9vbCBjb250YWlucykKK3sK
KyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGRvIHsKKyAgICAgICAg
aWYgKCFlbGVtZW50LT5pc0ZyYW1lRWxlbWVudEJhc2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihl
bGVtZW50KS0+c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChjb250YWlucyk7CisgICAgfSB3
aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkpOwor
fQorCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKQEAgLTQ4MjEsNiArNDgz
NCw4IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgIT0gZG9jdW1l
bnRFbGVtZW50KCkpCiAgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRldGFjaCgpOwogCisg
ICAgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudFJlY3Vyc2l2ZWx5KG93bmVyRWxlbWVudCgp
LCB0cnVlKTsKKyAgICAKICAgICByZWNhbGNTdHlsZShGb3JjZSk7CiAgICAgCiAgICAgaWYgKG1f
ZnVsbFNjcmVlblJlbmRlcmVyKSB7CkBAIC00ODQ3LDYgKzQ4NjIsOCBAQCB2b2lkIERvY3VtZW50
Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQogCiB2b2lkIERv
Y3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQogewor
ICAgIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRSZWN1cnNpdmVseShvd25lckVsZW1lbnQo
KSwgZmFsc2UpOworICAgIAogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikgewogICAgICAg
ICBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+c2V0QW5pbWF0aW5nKHRydWUpOwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDE1ZmQ3ZTM3ZWQzNTVj
MjMxYzlhZWZkN2Q4ZDk0MDY3ZDVmYmRkZjQuLjVkNDAyNDFjOWQyZjU4ZjQ5ZjU4NmU1MzFjMDVk
MWNhZTZiYjgzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzIyLDYgKzMyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzVW5hY2NlcHRhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc091dE9mUmFuZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGZvcm1Db250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRG
b3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuaAppbmRleCBkOGNmNTA5ZGViZDdmOTFmYjM2YWFhZjg4MTdiMThm
OTQ5NGM3MDliLi4yYjNiN2UxMDZmNjMwMjdlY2NlMTQ3OTg0MGU3NGI4ZWFiNzY5ZWNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaApAQCAtNDYsNiArNDYsMTAgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgdmlydHVhbCBib29sIGFs
bG93RnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIGJv
b2wgbV9mcmFtZUJvcmRlcjsKICAgICBib29sIG1fZnJhbWVCb3JkZXJTZXQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggMDhiNmE2NGQwNjM3
ZGIyOTJiNzg3MmNmODY4Nzk0YjI3NDAyNGRlYi4uY2RmODU0YTc0NzA2YzdjYzVjYjYzNTFlMjBj
NWIxNTRhZDNmNDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
YWxsb3dGdWxsU2NyZWVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKHdlYmtp
dGFsbG93ZnVsbHNjcmVlbkF0dHIpOwogfQorCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpz
ZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgY29udGFpbnMpCit7CisgICAgbV9jb250
YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gY29udGFpbnM7CisgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDk5
MjJmZDE1YjkzZTJkY2ZhMGY5MjdjOGUyYzc4OGZkMWEyNWViNTUuLmU5N2ZkOWM2NDM5OTJiZjkx
MzNkYjIwYzZkZDBiOWQ4NzEzNzQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVt
YWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUoYm9vbCk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0Z1bGxTY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudDsgfTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC02MSw2ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpOwogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnRCYXNlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgICB2b2lkIGNoZWNrSW5Eb2N1bWVu
dFRpbWVyRmlyZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+Kik7CkBAIC05Myw2ICs5Niwx
MCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3ZpZXdTb3VyY2U7CiAgICAgYm9vbCBtX3JlbWFp
bnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGJvb2wgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOThlZWM1ZDIzMTllOWZjNzQ4
MjE1NDFkZmM4NzBiOGI0ZjRlM2Q2MC4uMTE4YTBmZDgyOTQ3YjIwOWEyNmRmYTQwODViMWE1NTVj
NTg1ZDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTE5ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1bGwgU2NyZWVuIGZyb20gd2l0aGluIGFuIDxpZnJh
bWU+IGRvZXMgbm90IGNhdXNlIDxpZnJhbWU+IHRvIHJlc2l6ZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjM4CisKKyAgICAgICAgVGVzdHM6IGZ1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZnJhbWVzZXQtYWxsb3dlZC5odG1sCisgICAgICAgICAgICAg
ICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2VkLmh0bWwKKworICAg
ICAgICBSZXR1cm4gdGhlIF9lbGVtZW50J3MgZG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgV0tWaWV3
J3MgZG9jdW1lbnQsIHdoaWNoIAorICAgICAgICB3aWxsIGJlIGRpZmZlcmVudCBpbiB0aGUgY2Fz
ZSBvZiBlbGVtZW50cyB3aXRoaW4gPGlmcmFtZT5zLgorCisgICAgICAgICogV2ViVmlldy9XZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIgX2RvY3VtZW50XSk6CisKIDIwMTEtMDQtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpp
bmRleCAzY2M4MzU1Y2I0OGU4MzkzNDA1YTVkMWE3ZGUxOWE2NWI2ZTlmNmM1Li5mZDM3OWQyNGU3
YmE0ZjQ2MzM3M2Y5MTRmMjk3MmVhYWVmMjNmY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KQEAgLTc2OSw3ICs3Njks
NyBAQCBwcml2YXRlOgogCiAtIChEb2N1bWVudCopX2RvY3VtZW50IAogewotICAgIHJldHVybiBj
b3JlKFtbW3NlbGYgd2ViVmlld10gbWFpbkZyYW1lXSBET01Eb2N1bWVudF0pOworICAgIHJldHVy
biBfZWxlbWVudC0+ZG9jdW1lbnQoKTsKIH0KIAogLSAoQ0ZUaW1lSW50ZXJ2YWwpX2FuaW1hdGlv
bkR1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjAyMDZiNWY0NWQzNjZlYjI5ZjZhZjJhYTYwMzg4ZDlk
ODJlODkxYy4uOWRhMTE0NTZkY2JkMzRlZGE3YWUzODBiYzk5MjBiMTk5NDVhM2UxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZ1bGwgU2NyZWVuIGZyb20gd2l0aGluIGFuIDxpZnJhbWU+IGRvZXMgbm90IGNhdXNlIDxp
ZnJhbWU+IHRvIHJlc2l6ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NjM4CisKKyAgICAgICAgVGVzdHM6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
ZnJhbWVzZXQtYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWZyYW1lc2V0LW5vdC1hbGxvd2VkLmh0bWwKKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogQ2Fu
Y2VsIHRoZSBiYWNrZ3JvdW5kIGFuaW1hdGlvbgorICAgICAgICAgICAgaWYgdGhlIGZ1bGwgc2Ny
ZWVuIGFuaW1hdGlvbiBmaW5pc2hlcyBmaXJzdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMpOiBtX2Z1bGxT
Y3JlZW5Sb290TGF5ZXIgd2FzIHVuaW5pdGlhbGl6ZWQuCisKIDIwMTEtMDQtMjIgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0
YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggOTEwYTgxZWRmYzZiMjUxYzA0
ZmFlM2IxNDg4NGZlODk4MWFjZWQ3OC4uY2IzNjM2YjkwMDkxODgzZDVjMzhiNzY4YWE0MzU1Mjc2
MzI5OTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMjY1LDYgKzI2NSwxMSBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgTlNWaWV3KiBhbmltYXRpb25WaWV3ID0g
W1tzZWxmIF9mdWxsU2NyZWVuV2luZG93XSBhbmltYXRpb25WaWV3XTsKICAgICAgICAgW2FuaW1h
dGlvblZpZXcgYWRkU3Vidmlldzpfd2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93QmVsb3cgcmVs
YXRpdmVUbzpfbGF5ZXJIb3N0aW5nVmlldy5nZXQoKV07CiAgICAgICAgIFtfd2ViVmlldyBzZXRG
cmFtZTpbYW5pbWF0aW9uVmlldyBib3VuZHNdXTsKKworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Cisg
ICAgICAgIFtbW3NlbGYgX2Z1bGxTY3JlZW5XaW5kb3ddIGJhY2tncm91bmRMYXllcl0gc2V0SGlk
ZGVuOllFU107CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSW4gQmFyb2xvLCBvcmRlckluIHdpbGwgYW5pbWF0ZSwgd2hpY2ggaXMg
bm90IHdoYXQgd2Ugd2FudC4gIEZpbmQgYSB3YXkKICAgICAgICAgLy8gdG8gd29yayBhcm91bmQg
dGhpcyBiZWhhdmlvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCmluZGV4
IDJlZWQwMjE4ZTg1ZjFiMGNmMjZlM2ZiYTZlZDE4OWYwYjhhOTQ3MmYuLjY4Njk3YjA0Njc4NmE0
YTM0MDAyYjNkNDMwM2YxODVlY2VhZGZkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFu
YWdlck1hYy5tbQpAQCAtMTE3LDYgKzExNyw3IEBAIFBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1h
bmFnZXJNYWM+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpjcmVhdGUoV2ViUGFnZSogcGFnCiAK
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhXZWJQYWdl
KiBwYWdlKQogICAgIDogV2ViRnVsbFNjcmVlbk1hbmFnZXIocGFnZSkKKyAgICAsIG1fZnVsbFNj
cmVlblJvb3RMYXllcigwKQogewogICAgIG1fZW50ZXJGdWxsU2NyZWVuTGlzdGVuZXIuYWRvcHRO
UyhbW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
TWFuYWdlcjp0aGlzIGJlZ2FuOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6YmVnYW5FbnRlckZ1
bGxTY3JlZW5BbmltYXRpb24gZmluaXNoZWQ6JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpmaW5p
c2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbl0pOwogICAgIG1fZXhpdEZ1bGxTY3JlZW5MaXN0
ZW5lci5hZG9wdE5TKFtbV2ViRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhNYW5hZ2VyOnRoaXMgYmVnYW46JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpi
ZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYzo6ZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbl0pOwo=
</data>
<flag name="review"
          id="83543"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>