<?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>62762</bug_id>
          
          <creation_ts>2011-06-15 15:58:27 -0700</creation_ts>
          <short_desc>ScrollableAreaSet should be moved from Page to FrameView</short_desc>
          <delta_ts>2012-02-17 08:28:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421628</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 15:58:27 -0700</bug_when>
    <thetext>The ScrollableAreaSet that currently exists on Page should be moved to something that represents the top-level Document. We should consider hanging a structure off of Document to represent the top-level Document and moved this HashSet there. Even if we don&apos;t do that though, the HashSet of ScrollableAreas should move to a more appropriate class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550297</commentid>
    <comment_count>1</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-06 14:41:43 -0800</bug_when>
    <thetext>Actually, it would be even better to move it to FrameView!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550505</commentid>
    <comment_count>2</comment_count>
      <attachid>125746</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-06 18:20:00 -0800</bug_when>
    <thetext>Created attachment 125746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550541</commentid>
    <comment_count>3</comment_count>
      <attachid>125746</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-06 19:21:47 -0800</bug_when>
    <thetext>Comment on attachment 125746
Patch

Attachment 125746 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11442110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550544</commentid>
    <comment_count>4</comment_count>
      <attachid>125746</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-06 19:25:07 -0800</bug_when>
    <thetext>Comment on attachment 125746
Patch

Attachment 125746 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11436109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550547</commentid>
    <comment_count>5</comment_count>
      <attachid>125746</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 19:39:25 -0800</bug_when>
    <thetext>Comment on attachment 125746
Patch

Attachment 125746 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11442118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550601</commentid>
    <comment_count>6</comment_count>
      <attachid>125746</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-06 21:24:22 -0800</bug_when>
    <thetext>Comment on attachment 125746
Patch

Attachment 125746 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11442152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550610</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-02-06 21:42:18 -0800</bug_when>
    <thetext>This should probably build on some platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550685</commentid>
    <comment_count>8</comment_count>
      <attachid>125746</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-07 00:43:32 -0800</bug_when>
    <thetext>Comment on attachment 125746
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        ScrollableAreaSet should be moved from Page to FrameView

Changelog needs a &quot;why&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551174</commentid>
    <comment_count>9</comment_count>
      <attachid>125883</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-07 11:35:32 -0800</bug_when>
    <thetext>Created attachment 125883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551205</commentid>
    <comment_count>10</comment_count>
      <attachid>125883</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 11:57:50 -0800</bug_when>
    <thetext>Comment on attachment 125883
Patch

Attachment 125883 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11453035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551213</commentid>
    <comment_count>11</comment_count>
      <attachid>125895</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-07 12:01:57 -0800</bug_when>
    <thetext>Created attachment 125895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551255</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-07 12:46:27 -0800</bug_when>
    <thetext>Committed r106977: &lt;http://trac.webkit.org/changeset/106977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551861</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-08 00:53:01 -0800</bug_when>
    <thetext>This made a SVG test crash:

nzimmermann ~/Coding/WebKit &gt; WebKitBuild/Debug/DumpRenderTree LayoutTests/svg/dom/SVGStyledElement-pendingResource-crash.html
ASSERTION FAILED: scrollableArea-&gt;isOnActivePage()
/Users/nzimmermann/Coding/WebKit/Source/WebCore/page/FrameView.cpp(2609) : virtual void WebCore::FrameView::notifyPageThatContentAreaWillPaint() const
1   0x10cd68be1 WebCore::FrameView::notifyPageThatContentAreaWillPaint() const
2   0x10dac6e02 WebCore::ScrollView::repaintContentRectangle(WebCore::IntRect const&amp;, bool)
3   0x10cd66425 WebCore::FrameView::repaintContentRectangle(WebCore::IntRect const&amp;, bool)
4   0x10da12769 WebCore::RenderView::repaintViewRectangle(WebCore::IntRect const&amp;, bool)
5   0x10d91a605 WebCore::RenderObject::repaintUsingContainer(WebCore::RenderBoxModelObject*, WebCore::IntRect const&amp;, bool)
6   0x10d91a79d WebCore::RenderObject::repaint(bool)
7   0x10d922dcb WebCore::RenderObjectChildList::removeChildNode(WebCore::RenderObject*, WebCore::RenderObject*, bool)
8   0x10d9142ae WebCore::RenderObject::removeChild(WebCore::RenderObject*)
9   0x10d7df197 WebCore::RenderBlock::removeChild(WebCore::RenderObject*)
10  0x10d8afef6 WebCore::RenderObject::remove()
11  0x10d91f603 WebCore::RenderObject::willBeDestroyed()
12  0x10d85a66b WebCore::RenderBoxModelObject::willBeDestroyed()
13  0x10d842ae3 WebCore::RenderBox::willBeDestroyed()
14  0x10d930fb5 WebCore::RenderReplaced::willBeDestroyed()
15  0x10da1fc5c WebCore::RenderWidget::willBeDestroyed()
16  0x10da1fc9b WebCore::RenderWidget::destroy()
17  0x10d710a90 WebCore::Node::detach()
18  0x10c8581e4 WebCore::ContainerNode::detach()
19  0x10cc6b355 WebCore::Element::detach()
20  0x10cec8f49 WebCore::HTMLPlugInElement::detach()
21  0x10ceca7f6 WebCore::HTMLPlugInImageElement::detach()
22  0x10c857a8e WebCore::ContainerNode::removeChildren()
23  0x10ce5397f _ZN7WebCoreL27replaceChildrenWithFragmentEPNS_11HTMLElementEN3WTF10PassRefPtrINS_16DocumentFragmentEEERi
24  0x10ce536ad WebCore::HTMLElement::setInnerHTML(WTF::String const&amp;, int&amp;)
25  0x10d280925 WebCore::setJSHTMLElementInnerHTML(JSC::ExecState*, JSC::JSObject*, JSC::JSValue)
26  0x10d282aa1 bool JSC::lookupPut&lt;WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, bool)
27  0x10d2824c8 void JSC::lookupPut&lt;WebCore::JSHTMLElement, WebCore::JSElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, JSC::PutPropertySlot&amp;)
28  0x10d27f547 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;)
29  0x10d267414 void JSC::lookupPut&lt;WebCore::JSHTMLBodyElement, WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLBodyElement*, JSC::PutPropertySlot&amp;)
30  0x10d2649b7 WebCore::JSHTMLBodyElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;)
31  0x10b5c0b7d JSC::JSValue::put(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552229</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-08 10:00:57 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; This made a SVG test crash:
&gt; 
&gt; nzimmermann ~/Coding/WebKit &gt; WebKitBuild/Debug/DumpRenderTree LayoutTests/svg/dom/SVGStyledElement-pendingResource-crash.html

Oops, fixed in&lt;http://trac.webkit.org/changeset/107102&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559190</commentid>
    <comment_count>15</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-17 07:44:33 -0800</bug_when>
    <thetext>Is there any missing work, Anders?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559214</commentid>
    <comment_count>16</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-17 08:28:53 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Is there any missing work, Anders?

Nope, the assertion has been fixed! Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125746</attachid>
            <date>2012-02-06 18:20:00 -0800</date>
            <delta_ts>2012-02-07 11:35:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62762-20120206182030.patch</filename>
            <type>text/plain</type>
            <size>29779</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlhOTJjZjY1OTJmZWFi
MDNmYTI3OTE0M2NkNmQxNWY5ZTA4MjE1Yi4uYjA2YWNhOGNjYzQ1OTVkNDlmNzlmOTM5MDIzYzlk
MzNjZWFmMzFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTAyLTA2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYWJsZUFy
ZWFTZXQgc2hvdWxkIGJlIG1vdmVkIGZyb20gUGFnZSB0byBGcmFtZVZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgUmVwbGFjZSB0aGUgUGFnZSBt
ZW1iZXIgZnVuY3Rpb25zIHdpdGggRnJhbWVWaWV3IG1lbWJlciBmdW5jdGlvbnMgaXN0ZWFkLgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjptb3VzZU1vdmVkKToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGZyYW1lIHZpZXcg
Y29udGFpbnMgdGhlIGdpdmVuIGxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAg
ICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50
QXJlYURpZFNob3dPckhpZGUpOgorICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uLgorCisgICAg
ICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2li
bGUpOgorICAgICAgICBDYWxsIGNvbnRlbnRBcmVhRGlkU2hvd09ySGlkZSBmb3IgdGhlIG1haW4g
ZnJhbWUgdmlldywgYW5kIGZvciBhbGwgc2Nyb2xsYWJsZSBhcmVhcworICAgICAgICBpbnNpZGUg
YWxsIHN1YmZyYW1lIHZpZXdzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICBVc2UgZWFybHkg
cmV0dXJucyB0byBtYWtlIHRoZSBjb2RlIG1vcmUgY2xlYXIuIEFsc28sIGRvbid0IGFkZCB0aGUg
c2Nyb2xsYWJsZSBhcmVhIHRvIHRoZSBzZXQgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3Ojp+RnJhbWVWaWV3KToKKyAgICAgICAgRG9uJ3QgcmVtb3ZlIHRoZSBzY3JvbGxhYmxl
IGFyZWEgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JU
cmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAgbV9wYWdlIGlzIGdvbmUgc28gdXNlIG1fZnJhbWUt
PnBhZ2UoKSBpbnN0ZWFkLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEFuaW1h
dG9yc0FyZUFjdGl2ZSk6CisgICAgICAgIENhbGwgU2Nyb2xsQW5pbWF0b3I6OnNldElzQWN0aXZl
IGZvciBhbGwgdGhlIHNjcm9sbGFibGUgYXJlYXMgaW4gdGhpcyBmcmFtZSB2aWV3LiBQcmV2aW91
c2x5IHdlIHVzZWQgdG8gZG8KKyAgICAgICAgdGhpcyBmb3IgYWxsIHNjcm9sbGFibGUgYXJlYXMg
b24gdGhlIHBhZ2UsIGJ1dCBzaW5jZSBzZXRBbmltYXRvcnNBcmVBY3RpdmUgd2lsbCBiZSBjYWxs
ZWQgZm9yIGVhY2ggZG9jdW1lbnQsCisgICAgICAgIHRoaXMgd2lsbCBiZSBkb25lIGltcGxpY2l0
bHkuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpub3RpZnlQYWdlVGhh
dENvbnRlbnRBcmVhV2lsbFBhaW50KToKKyAgICAgICAgQ2FsbCBTY3JvbGxhYmxlQXJlYTo6Y29u
dGVudERpZFBhaW50IGZvciB0aGlzIGZyYW1lIHZpZXcgYW5kIGFsbCBpdHMgaW1tZWRpYXRlIHNj
cm9sbGFibGUgYXJlYXMuIFByZXZpb3VzbHksIHdlIHVzZWQKKyAgICAgICAgdG8gZG8gdGhpcyBm
b3IgYWxsIHNjcm9sbGFibGUgYXJlYXMgb24gdGhlIHBhZ2UsIGJ1dCB3ZSBvbmx5IG5lZWQgdG8g
ZG8gaXQgZm9yIHRoaXMgZnJhbWUgdmlldy4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzY3JvbGxBbmltYXRvckVuYWJsZWQpOgorICAgICAgICBHZXQgdGhlIHBhZ2UgZnJvbSBtX2Zy
YW1lIHNpbmNlIG1fcGFnZSBpcyBnb25lLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmFkZFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3Zl
U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb250YWluc1Nj
cm9sbGFibGVBcmVhKToKKyAgICAgICAgTW92ZSB0aGVzZSBtZW1iZXIgZnVuY3Rpb25zIGhlcmUg
ZnJvbSBQYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZENoaWxkKToKKyAg
ICAgICAgSWYgd2UgYXJlIGFkZGluZyBhIGZyYW1lIHZpZXcsIGFkZCBpdCB0byB0aGUgc2Nyb2xs
YWJsZSBhcmVhIHNldC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVDaGls
ZCk6CisgICAgICAgIElmIHdlIGFyZSByZW1vdmluZyBhIGZyYW1lIHZpZXcsIHJlbW92ZSBpdCBm
cm9tIHRoZSBzY3JvbGxhYmxlIGFyZWEgc2V0LgorICAgICAgICAKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICBNb3ZlIHRoZSBtZW1iZXIgZnVuY3Rpb24gZGVjbGFyYXRpb25z
IGFuZCB0aGUgc2Nyb2xsYWJsZSBhcmVhIHNldCBtZW1iZXIgdmFyaWFibGUgaGVyZSBmcm9tIFBh
Z2UuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
flBhZ2UpOgorICAgICAgICBEb24ndCBjYWxsIGRpc2Nvbm5lY3RQYWdlIG9uIHRoZSBzY3JvbGxh
YmxlIGFyZWFzIGFueW1vcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgTWFrZSBhZGRDaGlsZCBhbmQgcmVtb3ZlQ2hp
bGQgdmlydHVhbC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAg
ICAgIFJlbW92ZSBkaXNjb25uZWN0RnJvbVBhZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJlbmRlckxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZCk6CisgICAgICAgIFRoZSBmcmFt
ZSB2aWV3IG5vdyBrZWVwcyB0cmFjayBvZiB0aGUgc2Nyb2xsYWJsZSBhcmVhcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICBSZW1vdmUgdGhlIHBhZ2UgbWVt
YmVyIHZhcmlhYmxlIGFuZCBkaXNjb25uZWN0RnJvbVBhZ2UuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpS
ZW5kZXJMaXN0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6On5SZW5kZXJM
aXN0Qm94KToKKyAgICAgICAgVGhlIGZyYW1lIHZpZXcgbm93IGtlZXBzIHRyYWNrIG9mIHRoZSBz
Y3JvbGxhYmxlIGFyZWFzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoK
KyAgICAgICAgUmVtb3ZlIHRoZSBwYWdlIG1lbWJlciB2YXJpYWJsZSBhbmQgZGlzY29ubmVjdEZy
b21QYWdlLgorCiAyMDEyLTAyLTA2ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCB3ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQgU2V0dGluZ3MgZmxhZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGFjN2VmYmMxMzhiZTcxN2FiNzEzNTIxMDhjOTZlM2QzM2NmMTQxYjYuLmQw
NDRmYjU5MjQzNDEyNTVjYzI0NDIzN2U3ZTUyYzBmMDQ2OTVkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMiBAQAogMjAxMi0wMi0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCisgICAgICAgIFNjcm9sbGFibGVBcmVhU2V0IHNob3VsZCBiZSBtb3ZlZCBmcm9tIFBh
Z2UgdG8gRnJhbWVWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mjc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgQ2FsbCBG
cmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhIGluc3RlYWQuCisKKyAgICAgICAgKFdlYktpdDo6
QnVpbHRJblBERlZpZXc6OmRlc3Ryb3kpOgorICAgICAgICBDYWxsIEZyYW1lVmlldzo6cmVtb3Zl
U2Nyb2xsYWJsZUFyZWEgaW5zdGVhZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuaDoKKyAgICAgICAgUmVtb3ZlIGRpc2Nvbm5lY3RGcm9tUGFnZSBz
aW5jZSBpdCBubyBsb25nZXIgZXhpc3RzIG9uIFNjcm9sbGFibGVBcmVhLgorCisyMDEyLTAyLTA2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgT3Zlcmxh
eSBzY3JvbGxiYXJzIGZsYXNoIHdoZW4gd2luZG93IGlzIHNpbXBseSBhY3RpdmF0ZWQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTExCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggYjBmMDNlOTcwNTUzZGZhMmI2YTRiMDY1OWYzNzRjY2Q1MDVlMzc1
Mi4uNGQ1NTMwODY0NGIzMTAzYjc4YTA5NzRmODk1YTE1NmM4MGJkZmNhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTc2NCwxMiArNzY0LDEwIEBAIF9fWk43V2ViQ29yZTRQYWdlMTVhZGRTY2hl
ZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2Vi
Q29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0
YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xvYWRpbmdFYgotX19aTjdX
ZWJDb3JlNFBhZ2UxN2FkZFNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19a
TjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKIF9fWk43V2ViQ29yZTRQYWdlMThy
ZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUK
IF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50RQog
X19aTjdXZWJDb3JlNFBhZ2UxOXZpc2l0ZWRTdGF0ZUNoYW5nZWRFUE5TXzlQYWdlR3JvdXBFeQot
X19aTjdXZWJDb3JlNFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVB
cmVhRQogX19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2Vi
Q29yZTRQYWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0UGFnZTIxbWFy
a0FsbE1hdGNoZXNGb3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagpAQCAtMTA0NywxMiArMTA0NSwx
NCBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTRzZXROZWVkc0xheW91dEV2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTRzZXRUcmFuc3BhcmVudEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTVz
ZXRNYXJnaW5IZWlnaHRFaQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE2c2V0UGFpbnRCZWhhdmlv
ckVqCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdhZGRTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3Jv
bGxhYmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJvbFRpbnRzRXYK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNfOEludFBvaW50
RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJlY3RFCiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9kZUV2CitfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9yRQogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnNFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDY2NTFlNzZhODhjMWFlMjgwZWNkMjVkMDY3ZmQ1ZGMz
N2I3ODdjMzYuLjAzZGU4ZDY2N2Y2MjYwMzVhZDE2Mzc2MGQzZmQ3NDkyMTQ3NzE5YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE2NTYsOCArMTY1NiwxMCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9
IGxheWVyRm9yTm9kZShob3ZlcmVkTm9kZS5pbm5lck5vZGUoKSkpIHsKLSAgICAgICAgaWYgKHBh
Z2UtPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXIpKQotICAgICAgICAgICAgbGF5ZXItPm1v
dXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lVmlldy0+Y29udGFp
bnNTY3JvbGxhYmxlQXJlYShsYXllcikpCisgICAgICAgICAgICAgICAgbGF5ZXItPm1vdXNlTW92
ZWRJbkNvbnRlbnRBcmVhKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCkBAIC0yMTE3LDEwICsyMTE5LDE0IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
cGFnZSAmJiAobGF5ZXJGb3JMYXN0Tm9kZSAmJiAoIWxheWVyRm9yTm9kZVVuZGVyTW91c2UgfHwg
bGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSAhPSBsYXllckZvckxhc3ROb2RlKSkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBtb3VzZSBoYXMgbW92ZWQgYmV0d2VlbiBsYXllcnMuCi0gICAgICAgICAgICBp
ZiAocGFnZS0+Y29udGFpbnNTY3JvbGxhYmxlQXJlYShsYXllckZvckxhc3ROb2RlKSkKLSAgICAg
ICAgICAgICAgICBsYXllckZvckxhc3ROb2RlLT5tb3VzZUV4aXRlZENvbnRlbnRBcmVhKCk7Cisg
ICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9sYXN0Tm9kZVVuZGVyTW91c2UtPmRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBmcmFtZS0+dmlldygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXct
PmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXJGb3JMYXN0Tm9kZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBsYXllckZvckxhc3ROb2RlLT5tb3VzZUV4aXRlZENvbnRlbnRBcmVhKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIGlmIChtX25vZGVVbmRlck1vdXNlICYmICghbV9sYXN0Tm9kZVVuZGVyTW91c2UgfHwg
bV9sYXN0Tm9kZVVuZGVyTW91c2UtPmRvY3VtZW50KCkgIT0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBoYXMgbW92ZWQgYmV0d2VlbiBmcmFtZXMuCiAg
ICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9ub2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSkgewpAQCAtMjEyOSwxMCArMjEzNSwxNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZv
cm1NbwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHBhZ2UgJiYgKGxheWVyRm9y
Tm9kZVVuZGVyTW91c2UgJiYgKCFsYXllckZvckxhc3ROb2RlIHx8IGxheWVyRm9yTm9kZVVuZGVy
TW91c2UgIT0gbGF5ZXJGb3JMYXN0Tm9kZSkpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbW91c2Ug
aGFzIG1vdmVkIGJldHdlZW4gbGF5ZXJzLgotICAgICAgICAgICAgaWYgKHBhZ2UtPmNvbnRhaW5z
U2Nyb2xsYWJsZUFyZWEobGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSkpCi0gICAgICAgICAgICAgICAg
bGF5ZXJGb3JOb2RlVW5kZXJNb3VzZS0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKKyAgICAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX25vZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpLT5m
cmFtZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJh
bWUtPnZpZXcoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5jb250YWlu
c1Njcm9sbGFibGVBcmVhKGxheWVyRm9yTm9kZVVuZGVyTW91c2UpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZS0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
CitmaWMKICAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1vdXNlICYmIG1fbGFzdE5vZGVVbmRl
ck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAg
IG1fbGFzdE5vZGVVbmRlck1vdXNlID0gMDsKICAgICAgICAgICAgIG1fbGFzdFNjcm9sbGJhclVu
ZGVyTW91c2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4
IGMyYzAzZTVlM2EwNjQzYzNjMzFkYjljYzI5MjBmZjE4MzIxYzEyOTYuLjUxNDI2YTMwODYyNGI5
ODU4OGIwZTA2ZjkxY2I2ZDY0ODFhYzhmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKQEAgLTU4Miw2ICs1ODIsMTQgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNl
dEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgZGlzcGF0Y2hFdmVudHNPbldpbmRvd0FuZEZv
Y3VzZWROb2RlKG1fZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLCBhY3RpdmUpOwogfQogCitzdGF0
aWMgdm9pZCBjb250ZW50QXJlYURpZFNob3dPckhpZGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhLCBib29sIGRpZFNob3cpCit7CisgICAgaWYgKGRpZFNob3cpCisgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5jb250ZW50QXJlYURpZFNob3coKTsKKyAgICBlbHNlCisgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5jb250ZW50QXJlYURpZEhpZGUoKTsKK30KKwogdm9pZCBGb2N1c0NvbnRyb2xs
ZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUoYm9vbCBjb250YWluaW5nV2luZG93SXNW
aXNpYmxlKQogewogICAgIGlmIChtX2NvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUgPT0gY29udGFp
bmluZ1dpbmRvd0lzVmlzaWJsZSkKQEAgLTU5MywxMyArNjAxLDIyIEBAIHZvaWQgRm9jdXNDb250
cm9sbGVyOjpzZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlKGJvb2wgY29udGFpbmluZ1dpbmRv
d0lzVmlzaWJsCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29u
c3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBtX3BhZ2UtPnNj
cm9sbGFibGVBcmVhU2V0KCkpIHsKLSAgICAgICAgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBzY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyAKLSAgICAgICAgZm9y
IChIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJs
ZUFyZWFzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghY29u
dGFpbmluZ1dpbmRvd0lzVmlzaWJsZSkKLSAgICAgICAgICAgICAgICAoKml0KS0+Y29udGVudEFy
ZWFEaWRIaWRlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKCppdCktPmNv
bnRlbnRBcmVhRGlkU2hvdygpOworICAgIGNvbnRlbnRBcmVhRGlkU2hvd09ySGlkZSh2aWV3LCBj
b250YWluaW5nV2luZG93SXNWaXNpYmxlKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOwor
ICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVW
aWV3LT5zY3JvbGxhYmxlQXJlYXMoKTsKKyAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYXMpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYWJsZUFy
ZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9
IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAg
U2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gKml0OworICAgICAgICAgICAgQVNTRVJU
KHNjcm9sbGFibGVBcmVhLT5pc09uQWN0aXZlUGFnZSgpKTsKKworICAgICAgICAgICAgY29udGVu
dEFyZWFEaWRTaG93T3JIaWRlKHNjcm9sbGFibGVBcmVhLCBjb250YWluaW5nV2luZG93SXNWaXNp
YmxlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCA4OWU2Mjg2MjBmZjNkN2ZlY2Q2NzFiYTM5M2M0YTc4ZDBjMTA3ZmE0Li5kMGExMGM4ZjMwMmI4
ZWI1YTIyOGVkOTNhZWE4NDk5YTMwZjI0M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0xNTIsMTYgKzE1MiwxNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJhbWUp
CiB7CiAgICAgaW5pdCgpOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIG1fcGFnZSA9IHBhZ2U7Ci0g
ICAgICAgICAgICBtX3BhZ2UtPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDYW4gbV9mcmFtZSBldmVyIGJlIG51bGwgaGVyZT8KKyAgICBpZiAoIW1fZnJhbWUpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKG1fZnJhbWUgPT0gbV9wYWdlLT5tYWluRnJh
bWUoKSkgewotICAgICAgICAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQpOwotICAgICAgICAgICAgICAgIFNj
cm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGlj
aXR5QWxsb3dlZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fZnJhbWUgPT0gcGFnZS0+bWFpbkZyYW1lKCkpIHsKKyAgICAgICAgU2Nyb2xsYWJsZUFy
ZWE6OnNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5QWxsb3dlZCk7
CisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShT
Y3JvbGxFbGFzdGljaXR5QWxsb3dlZCk7CiAgICAgfQogfQogCkBAIC0yMDIsOSArMjAzLDYgQEAg
RnJhbWVWaWV3Ojp+RnJhbWVWaWV3KCkKICAgICBBU1NFUlQoIW1fc2Nyb2xsQ29ybmVyKTsKICAg
ICBBU1NFUlQobV9hY3Rpb25TY2hlZHVsZXItPmlzRW1wdHkoKSk7CiAKLSAgICBpZiAobV9wYWdl
KQotICAgICAgICBtX3BhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotCiAgICAgaWYg
KG1fZnJhbWUpIHsKICAgICAgICAgQVNTRVJUKG1fZnJhbWUtPnZpZXcoKSAhPSB0aGlzIHx8ICFt
X2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSk7CiAgICAgICAgIFJlbmRlclBhcnQqIHJlbmRlcmVy
ID0gbV9mcmFtZS0+b3duZXJSZW5kZXJlcigpOwpAQCAtMTI0Miw4ICsxMjQwLDggQEAgdm9pZCBG
cmFtZVZpZXc6OnJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmpl
Y3QpCiB2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChmbG9hdCBz
Y2FsZSwgZmxvYXQgeCwgZmxvYXQgeSwgWm9vbUFuaW1hdGlvblN0YXRlIHN0YXRlKQogewogICAg
IGlmIChzdGF0ZSA9PSBab29tQW5pbWF0aW9uRmluaXNoaW5nKSB7Ci0gICAgICAgIG1fcGFnZS0+
c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoc2NhbGUgKiBzY3JvbGxY
KCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3Io
cGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwgSW50UG9pbnQoc2NhbGUgKiBzY3JvbGxY
KCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKICAgICAgICAgc2Nyb2xsQW5pbWF0b3Io
KS0+cmVzZXRab29tKCk7CiAgICAgfQogCkBAIC0yNTc1LDE4ICsyNTczLDE2IEBAIHZvaWQgRnJh
bWVWaWV3OjpzZXRBbmltYXRvcnNBcmVBY3RpdmUoKQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxl
QXJlYXMgPSBwYWdlLT5zY3JvbGxhYmxlQXJlYVNldCgpOwotICAgIGlmICghc2Nyb2xsYWJsZUFy
ZWFzKQorICAgIHNjcm9sbEFuaW1hdG9yKCktPnNldElzQWN0aXZlKCk7CisKKyAgICBpZiAoIW1f
c2Nyb2xsYWJsZUFyZWFzKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PFNjcm9sbGFi
bGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IAot
ICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNj
cm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGV4dHJhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgU2Nyb2xsYWJsZUFyZWEgaXMg
b24gYW4gYWN0aXZlIHBhZ2UgbmVlZHMgCi0gICAgICAgIC8vIHRvIGJlIGhlcmUgYXMgbG9uZyBh
cyB0aGUgU2Nyb2xsYWJsZUFyZWEgSGFzaFNldCBsaXZlcyBvbiBQYWdlLiBCdXQgaXQgc2hvdWxk
IHJlYWxseSBiZQotICAgICAgICAvLyBtb3ZlZCB0byB0aGUgdG9wLWxldmVsIERvY3VtZW50IG9y
IGEgc2ltaWxhciBjbGFzcyB0aGF0IHJlYWxseSByZXByZXNlbnRzIGEgc2luZ2xlIAotICAgICAg
ICAvLyB3ZWIgcGFnZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
NzYyCi0gICAgICAgIGlmICgoKml0KS0+aXNPbkFjdGl2ZVBhZ2UoKSkKLSAgICAgICAgICAgICgq
aXQpLT5zY3JvbGxBbmltYXRvcigpLT5zZXRJc0FjdGl2ZSgpOworICAgIGZvciAoSGFzaFNldDxT
Y3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2Nyb2xsYWJsZUFyZWFzLT5i
ZWdpbigpLCBlbmQgPSBtX3Njcm9sbGFibGVBcmVhcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSAqaXQ7CisKKyAgICAg
ICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5pc09uQWN0aXZlUGFnZSgpKTsKKyAgICAgICAgc2Ny
b2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCktPnNldElzQWN0aXZlKCk7CiAgICAgfQogfQog
CkBAIC0yNTk2LDIxICsyNTkyLDI2IEBAIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlQYWdlVGhhdENv
bnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Nyb2xsYWJsZUFyZWFz
ID0gcGFnZS0+c2Nyb2xsYWJsZUFyZWFTZXQoKTsKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhcykK
KyAgICBjb250ZW50QXJlYVdpbGxQYWludCgpOworCisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVh
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBzY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyAKLSAgICBmb3IgKEhhc2hT
ZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJlYXMt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmNvbnRlbnRBcmVhV2ls
bFBhaW50KCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9zY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsYWJsZUFy
ZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSA9ICppdDsKKworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEtPmlz
T25BY3RpdmVQYWdlKCkpOworICAgICAgICBzY3JvbGxhYmxlQXJlYS0+Y29udGVudEFyZWFXaWxs
UGFpbnQoKTsKKyAgICB9CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxBbmltYXRvckVuYWJs
ZWQoKSBjb25zdAogewogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Bh
Z2UgJiYgbV9wYWdlLT5zZXR0aW5ncygpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5n
cygpLT5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCktPnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpOwogI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMyNjIs
NiArMzI2Myw0MyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFj
a1JlcGFpbnRzKQogICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0gdHJhY2tSZXBhaW50czsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3Jv
bGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICBtX3Nj
cm9sbGFibGVBcmVhcyA9IGFkb3B0UHRyKG5ldyBTY3JvbGxhYmxlQXJlYVNldCk7CisgICAgbV9z
Y3JvbGxhYmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3
OjpyZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7
CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2Ny
b2xsYWJsZUFyZWFzLT5yZW1vdmUoc2Nyb2xsYWJsZUFyZWEpOworfQorCitib29sIEZyYW1lVmll
dzo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy0+Y29udGFpbnMoc2Nyb2xsYWJsZUFy
ZWEpOworfQorCit2b2lkIEZyYW1lVmlldzo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+IHdp
ZGdldCkKK3sKKyAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICBhZGRTY3Jv
bGxhYmxlQXJlYShzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQuZ2V0KCkpKTsKKworICAg
IFNjcm9sbFZpZXc6OmFkZENoaWxkKHdpZGdldCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpyZW1v
dmVDaGlsZChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygp
KQorICAgICAgICByZW1vdmVTY3JvbGxhYmxlQXJlYShzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3
aWRnZXQpKTsKKworICAgIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKHdpZGdldCk7Cit9CisKIGJv
b2wgRnJhbWVWaWV3Ojppc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdAogewogICAgIFJlbmRlclZp
ZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRl
eCA0NjZhODg5MzlmYmE4NmU5YTk2MTVmMmYzN2Y1YjgwMzMxMTk5YjlmLi5jZDhlYWExMjhjYjUw
YWIwNWZmNDljN2YxZDVkYzE4NzBhZjgwYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAg
LTMwOCw2ICszMDgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMo
KSB7IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOyB9CiAgICAgY29uc3QgVmVjdG9yPElu
dFJlY3Q+JiB0cmFja2VkUmVwYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja2VkUmVw
YWludFJlY3RzOyB9CiAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiBTY3Jv
bGxhYmxlQXJlYVNldDsKKyAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
Kik7CisgICAgdm9pZCByZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOworICAg
IGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIGNvbnN0OworICAg
IGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KFBhc3NSZWZQdHI8V2lkZ2V0PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCopIE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNj
cm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IElu
dFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3Qp
OwpAQCAtMzczLDcgKzM4Miw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQogCiAgICAgdmlydHVh
bCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0OwogCkBAIC00NzYsOCArNDg0LDYg
QEAgcHJpdmF0ZToKICAgICAvLyBSZW5kZXJlciB0byBob2xkIG91ciBjdXN0b20gc2Nyb2xsIGNv
cm5lci4KICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKIAotICAgIFBh
Z2UqIG1fcGFnZTsKLQogICAgIC8vIElmIHRydWUsIGF1dG9tYXRpY2FsbHkgcmVzaXplIHRoZSBm
cmFtZSB2aWV3IGFyb3VuZCBpdHMgY29udGVudC4KICAgICBib29sIG1fc2hvdWxkQXV0b1NpemU7
CiAgICAgYm9vbCBtX2luQXV0b1NpemU7CkBAIC00ODYsNiArNDkyLDggQEAgcHJpdmF0ZToKICAg
ICAvLyBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHNpemUgd2hlbiBhdXRvc2l6aW5nLgogICAgIElu
dFNpemUgbV9tYXhBdXRvU2l6ZTsKIAorICAgIE93blB0cjxTY3JvbGxhYmxlQXJlYVNldD4gbV9z
Y3JvbGxhYmxlQXJlYXM7CisKICAgICBzdGF0aWMgZG91YmxlIHNfZGVmZXJyZWRSZXBhaW50RGVs
YXk7CiAgICAgc3RhdGljIGRvdWJsZSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmlu
Z0xvYWRpbmc7CiAgICAgc3RhdGljIGRvdWJsZSBzX21heERlZmVycmVkUmVwYWludERlbGF5RHVy
aW5nTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI0NDJiZjdjMjFkMWVkMWM4OGUyYWI3
ZDQ1ODAzNzU4NmE1NWFhOGIuLmQyMTg5YWQ0NTQwN2JiNTE5NzlhNWUyZDNiZDNjMzU4MjVkNTIx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDEyICsyMTEsNiBAQCBQYWdlOjp+UGFnZSgp
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5wYWdlRGVzdHJveWVk
KCk7CiAKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYVNldCkgewotICAgICAgICBTY3JvbGxhYmxl
QXJlYVNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zY3JvbGxhYmxlQXJlYVNldC0+ZW5kKCk7
IAotICAgICAgICBmb3IgKFNjcm9sbGFibGVBcmVhU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c2Nyb2xsYWJsZUFyZWFTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAg
ICgqaXQpLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKLSAgICB9Ci0KICAgICBtX2VkaXRvckNsaWVu
dC0+cGFnZURlc3Ryb3llZCgpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEwMzAsMjcg
KzEwMjQsNiBAQCB2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAg
ICAgIHBsdWdpblZpZXdCYXNlc1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OmFkZFNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFy
ZWFTZXQpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQgPSBhZG9wdFB0cihuZXcgU2Nyb2xs
YWJsZUFyZWFTZXQpOwotICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQtPmFkZChzY3JvbGxhYmxlQXJl
YSk7Ci19Ci0KLXZvaWQgUGFnZTo6cmVtb3ZlU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYVNldCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQtPnJlbW92ZShzY3JvbGxhYmxlQXJl
YSk7Ci19Ci0KLWJvb2wgUGFnZTo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJl
YSogc2Nyb2xsYWJsZUFyZWEpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhU2V0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTZXQt
PmNvbnRhaW5zKHNjcm9sbGFibGVBcmVhKTsKLX0KLQogI2lmICFBU1NFUlRfRElTQUJMRUQKIHZv
aWQgUGFnZTo6Y2hlY2tGcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCA4ODc4OTNmOWZhZDAzMjg5NTk2ZmU2NDExMGNlMzAzNzUzZGIxMGYwLi41NTdiNTRk
ODJiMDRjYTk5MzgwODc4OTExMDMxMzQ4ZmUxOGVhNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzM0
LDEyICszMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SmF2YVNj
cmlwdFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRVUkxzQXJl
QWxsb3dlZCgpIGNvbnN0OwogCi0gICAgICAgIHR5cGVkZWYgSGFzaFNldDxTY3JvbGxhYmxlQXJl
YSo+IFNjcm9sbGFibGVBcmVhU2V0OwotICAgICAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhKik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlU2Nyb2xsYWJsZUFyZWEoU2Nyb2xs
YWJsZUFyZWEqKTsKLSAgICAgICAgYm9vbCBjb250YWluc1Njcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKikgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxh
YmxlQXJlYVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTZXQuZ2V0KCk7IH0K
LQogICAgICAgICAvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gYSBjZXJ0YWluIG51bWJlciBvZiBm
cmFtZXMgaW4gYSBwYWdlLgogICAgICAgICAvLyBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxl
IHVwcGVyIGJvdW5kLCBhbmQgb3RoZXJ3aXNlIG11dHVhbGx5CiAgICAgICAgIC8vIHJlY3Vyc2l2
ZSBmcmFtZXNldCBwYWdlcyBjYW4gcXVpY2tseSBicmluZyB0aGUgcHJvZ3JhbSB0byBpdHMga25l
ZXMKQEAgLTQ2OCw4ICs0NjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgZG91
YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAKLSAgICAgICAgT3duUHRyPFNjcm9sbGFibGVB
cmVhU2V0PiBtX3Njcm9sbGFibGVBcmVhU2V0OwotCiAgICAgICAgIGJvb2wgbV9pc0VkaXRhYmxl
OwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKaW5kZXggYmE1ODZhNGFiMTA5MTQ0YTNjZTJhNDM2MmQ3Mzg5MjA2OGIyZWFm
ZS4uY2I2YWI0ZTNkMzRkM2M4ZTRiMzAzYmQ0MTc0MWIxNzcyMTkwMTA4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAKICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlvbiBhbmQgaW5zcGVjdGlvbi4KICAgICBj
b25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KLSAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7Ci0g
ICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQo
UGFzc1JlZlB0cjxXaWRnZXQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0
Kik7CiAgICAgCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2
ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRo
ZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxi
YXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggMGI0NTgz
YmJlYTBkNmJkNzA0ZWFiMWQwNjQxOTUyNGE3NGY0NTViYi4uN2IwNDlkY2QwNWQzMTExODk5MmIw
ODc3YzgwMzhkYzZmZjc0ZDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCkBAIC0xNjEsOCArMTYxLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IH0KLQog
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIHRl
c3RpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBiZGVj
NWY5OTgxODk5MDg3MDMyZDg5M2IzMWYyZGEzYjhlMTcyY2ZhLi5mZWUyN2U5NjhhNjJhZWI4ZWQz
YzJiNzFmMjA2ZWI0N2I4MDU3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTE4NSw3ICsxODUsNiBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKQogICAgICwgbV9yZWZsZWN0aW9uKDApCiAgICAg
LCBtX3Njcm9sbENvcm5lcigwKQogICAgICwgbV9yZXNpemVyKDApCi0gICAgLCBtX3Njcm9sbGFi
bGVBcmVhUGFnZSgwKQogewogICAgIG1faXNOb3JtYWxGbG93T25seSA9IHNob3VsZEJlTm9ybWFs
Rmxvd09ubHkoKTsKIApAQCAtMjA0LDggKzIwMywxMCBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxh
eWVyKCkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cmVzaXplTGF5ZXJEZXN0
cm95ZWQoKTsKICAgICB9CiAKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYVBhZ2UpCi0gICAgICAg
IG1fc2Nyb2xsYWJsZUFyZWFQYWdlLT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgZnJhbWVWaWV3
LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICB9CiAKICAgICBkZXN0cm95U2Nyb2xs
YmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxT
Y3JvbGxiYXIpOwpAQCAtNDM0NiwxOSArNDM0NywxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHls
ZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCk7
CiAjZW5kaWYKLSAgICAKLSAgICBpZiAoc2Nyb2xsc092ZXJmbG93KCkpIHsKLSAgICAgICAgaWYg
KCFtX3Njcm9sbGFibGVBcmVhUGFnZSkgewotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYVBh
Z2UgPSBwYWdlOwotICAgICAgICAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFnZS0+YWRk
U2Nyb2xsYWJsZUFyZWEodGhpcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKKyAgICAgICAg
aWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAg
aWYgKHNjcm9sbHNPdmVyZmxvdygpKQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkU2Ny
b2xsYWJsZUFyZWEodGhpcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAobV9zY3JvbGxhYmxlQXJlYVBhZ2UpIHsKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYVBh
Z2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgICAgICBtX3Njcm9sbGFibGVBcmVh
UGFnZSA9IDA7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRldGVjdCBhIHN3
YXAgZnJvbSBjdXN0b20gdG8gbmF0aXZlIHNjcm9sbGJhcnMgKGFuZCB2aWNlIHZlcnNhKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZGU3NWYyNDVkYTQzNzAxNmJk
YWYxOWIwMmJjZjgzY2I2YTI2OGI1NC4uZGY5OWJlY2JiM2I4ODcyZTgzMzRiMTcwMTQ2NTRmODkw
ZjcyOTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY2OCw4
ICs2NjgsNiBAQCBwcml2YXRlOgogICAgIC8vIFJlY3RhbmdsZSBlbmNvbXBhc3NpbmcgdGhlIHNj
cm9sbCBjb3JuZXIgYW5kIHJlc2l6ZXIgcmVjdC4KICAgICBJbnRSZWN0IHNjcm9sbENvcm5lckFu
ZFJlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Q
YWdlKCkgeyBtX3Njcm9sbGFibGVBcmVhUGFnZSA9IDA7IH0KLQogICAgIC8vIE5PVEU6IFRoaXMg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZy
b20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQsIGludCk7CiAKQEAgLTg2
OCw4ICs4NjYsNiBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICBPd25QdHI8UmVuZGVyTGF5ZXJCYWNraW5nPiBtX2JhY2tpbmc7CiAjZW5kaWYKLQotICAg
IFBhZ2UqIG1fc2Nyb2xsYWJsZUFyZWFQYWdlOyAvLyBQYWdlIG9uIHdoaWNoIHRoaXMgaXMgcmVn
aXN0ZXJlZCBhcyBhIHNjcm9sbGFibGUgYXJlYS4KIH07CiAKIGlubGluZSB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKaW5kZXggMWMwMDFlZGRkODQzMzQzMzRjM2E1MDk4Zjk1OWE1NzViOWE2MzRi
My4uOWIxOWM3OWQwZWUwYzUzZGE4NzgxZDYxMTM3NTMyMGRkMjljZTQyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTIsMTcgKzkyLDE3IEBAIFJl
bmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3goRWxlbWVudCogZWxlbWVudCkKICAgICBBU1NFUlQo
ZWxlbWVudCk7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgQVNT
RVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpKTsKLSAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lKCktPnBhZ2UoKSkgewotICAgICAgICBtX3BhZ2UgPSBwYWdlOwot
ICAgICAgICBtX3BhZ2UtPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgIH0KKworICAgIGlm
IChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgZnJhbWVW
aWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIAogUmVuZGVyTGlzdEJveDo6flJlbmRl
ckxpc3RCb3goKQogewogICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGZhbHNlKTsKLSAgICBp
ZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwor
CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUoKS0+dmlldygpKQorICAgICAg
ICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogfQogCiB2b2lkIFJlbmRl
ckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCmluZGV4IDRkOGIzNWZhZjU4NzllYzQ2ZmRmMWUwNWE2Y2Y5ZDEzM2RhZDlk
ZTkuLmVmOTQ3MmViZTg5ZWUyYWQxN2NmNjg1NDI4MTc4OTI5ZTUzYWM0OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTIxLDggKzEyMSw2IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJl
YSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9w
YWdlID0gMDsgfQotCiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkg
dGhlIG92ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2
b2lkIHNjcm9sbFRvKGludCBuZXdPZmZzZXQpOwogCkBAIC0xNDcsOCArMTQ1LDYgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9pbmRleE9mZnNldDsKIAogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdkJh
cjsKLQotICAgIFBhZ2UqIG1fcGFnZTsKIH07CiAKIGlubGluZSBSZW5kZXJMaXN0Qm94KiB0b1Jl
bmRlckxpc3RCb3goUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCmluZGV4IDEz
Zjk3ZDk2ZjM2Zjk3Zjc2NmQ1OTBmZWMyOWIxYmNkZjRiYzA1ZDcuLjkwNGE4M2RjZDg3MjA5ZDAz
ODNlNTM5N2ExYjU2MTBmNDZjYmRkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCkBAIC0zNDgsNyArMzQ4
LDcgQEAgdm9pZCBCdWlsdEluUERGVmlldzo6Y2FsY3VsYXRlU2l6ZXMoKQogCiBib29sIEJ1aWx0
SW5QREZWaWV3Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0g
ICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2UoKS0+YWRkU2Nyb2xsYWJsZUFyZWEodGhpcyk7
CisgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+YWRkU2Nyb2xsYWJsZUFyZWEodGhp
cyk7CiAKICAgICAvLyBMb2FkIHRoZSBzcmMgVVJMIGlmIG5lZWRlZC4KICAgICBtX3NvdXJjZVVS
TCA9IHBhcmFtZXRlcnMudXJsOwpAQCAtMzYxLDggKzM2MSw4IEBAIGJvb2wgQnVpbHRJblBERlZp
ZXc6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHZvaWQgQnVpbHRJ
blBERlZpZXc6OmRlc3Ryb3koKQogewogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgICAgIHBh
Z2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgICAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgICAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAgICB9CiAKICAgICBkZXN0cm95
U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCmluZGV4IDZlZTRiZjNj
NTk0OGJhYmM2MTk1NTdlNjk2Y2RkNDNlNWM1YzI4ZWUuLmMxODVjMTg3MTJlOTczNzAxNTk4ZmU5
OGY1NmFkNjQxOTRjY2Q1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKQEAgLTEzOCw3ICsxMzgsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QgIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIHZp
cnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPbkFj
dGl2ZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkg
eyBtX2ZyYW1lID0gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5p
bWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIElmIHdlIHJldHVybiB0cnVlLCBT
Y3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBhIHRpbWVyIGZvcmV2ZXIsIHdhaXRp
bmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJh
clN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwogICAgIHZpcnR1
YWwgdm9pZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGZsb2F0LCBmbG9hdCwgZmxvYXQs
IFpvb21BbmltYXRpb25TdGF0ZSkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125883</attachid>
            <date>2012-02-07 11:35:32 -0800</date>
            <delta_ts>2012-02-07 12:01:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62762-20120207113603.patch</filename>
            <type>text/plain</type>
            <size>30070</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3ZWYyZTg0NDliYmZk
NTdjZDYwNGI5ZTkyN2IzYzdkMjM4OWY1MC4uZTFkMDg5MGE1MzRiMzEzZGRjODczYTk4MjhmOTE5
MjQwZTczNWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAyLTA2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYWJsZUFy
ZWFTZXQgc2hvdWxkIGJlIG1vdmVkIGZyb20gUGFnZSB0byBGcmFtZVZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgbWFrZXMgbW9yZSBzZW5zZSBm
b3IgdGhlIHNldCBvZiBzY3JvbGxhYmxlIGFyZWFzIHRvIGJlIHBlciBmcmFtZSB2aWV3IGluc3Rl
YWQgb2YgcGVyIHBhZ2U7CisgICAgICAgIHNjcm9sbGFibGUgYXJlYXMgYXJlIGFzc29jaWF0ZWQg
d2l0aCBhIGNvbnRhaW5pbmcgZnJhbWUgdmlldyBhbmQgdGhlaXIgbGlmZWN5Y2xlIGZvbGxvd3Mg
dGhlIGxpZmVjeWNsZSBvZiB0aGUKKyAgICAgICAgZnJhbWUgdmlldyBtdWNoIG1vcmUgY2xvc2Vs
eS4gVGhpcyBjb3VsZCBldmVuIGZpeCBhIGJ1bmNoIG9mIGNyYXNoZXMgd2hlcmUgYSBzY3JvbGxh
YmxlIGFyZWEgb3V0bGl2ZWQgaXRzIGNvbnRhaW5pbmcgcGFnZS4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICBSZXBsYWNlIHRoZSBQYWdlIG1lbWJlciBmdW5jdGlvbnMgd2l0
aCBGcmFtZVZpZXcgbWVtYmVyIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1v
dmVkKToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGZyYW1lIHZpZXcgY29udGFpbnMgdGhlIGdpdmVu
IGxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZl
bnRUYXJnZXROb2RlKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50QXJlYURpZFNob3dPckhpZGUp
OgorICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOgorICAgICAgICBDYWxs
IGNvbnRlbnRBcmVhRGlkU2hvd09ySGlkZSBmb3IgdGhlIG1haW4gZnJhbWUgdmlldywgYW5kIGZv
ciBhbGwgc2Nyb2xsYWJsZSBhcmVhcworICAgICAgICBpbnNpZGUgYWxsIHN1YmZyYW1lIHZpZXdz
LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICBVc2UgZWFybHkgcmV0dXJucyB0byBtYWtlIHRo
ZSBjb2RlIG1vcmUgY2xlYXIuIEFsc28sIGRvbid0IGFkZCB0aGUgc2Nyb2xsYWJsZSBhcmVhIHRv
IHRoZSBzZXQgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp+RnJhbWVWaWV3
KToKKyAgICAgICAgRG9uJ3QgcmVtb3ZlIHRoZSBzY3JvbGxhYmxlIGFyZWEgaGVyZS4KKworICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToK
KyAgICAgICAgbV9wYWdlIGlzIGdvbmUgc28gdXNlIG1fZnJhbWUtPnBhZ2UoKSBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEFuaW1hdG9yc0FyZUFjdGl2ZSk6Cisg
ICAgICAgIENhbGwgU2Nyb2xsQW5pbWF0b3I6OnNldElzQWN0aXZlIGZvciBhbGwgdGhlIHNjcm9s
bGFibGUgYXJlYXMgaW4gdGhpcyBmcmFtZSB2aWV3LiBQcmV2aW91c2x5IHdlIHVzZWQgdG8gZG8K
KyAgICAgICAgdGhpcyBmb3IgYWxsIHNjcm9sbGFibGUgYXJlYXMgb24gdGhlIHBhZ2UsIGJ1dCBz
aW5jZSBzZXRBbmltYXRvcnNBcmVBY3RpdmUgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggZG9jdW1l
bnQsCisgICAgICAgIHRoaXMgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCk6Cisg
ICAgICAgIENhbGwgU2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnREaWRQYWludCBmb3IgdGhpcyBmcmFt
ZSB2aWV3IGFuZCBhbGwgaXRzIGltbWVkaWF0ZSBzY3JvbGxhYmxlIGFyZWFzLiBQcmV2aW91c2x5
LCB3ZSB1c2VkCisgICAgICAgIHRvIGRvIHRoaXMgZm9yIGFsbCBzY3JvbGxhYmxlIGFyZWFzIG9u
IHRoZSBwYWdlLCBidXQgd2Ugb25seSBuZWVkIHRvIGRvIGl0IGZvciB0aGlzIGZyYW1lIHZpZXcu
CisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQW5pbWF0b3JFbmFibGVkKToK
KyAgICAgICAgR2V0IHRoZSBwYWdlIGZyb20gbV9mcmFtZSBzaW5jZSBtX3BhZ2UgaXMgZ29uZS4K
KworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlbW92ZVNjcm9sbGFibGVBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIE1v
dmUgdGhlc2UgbWVtYmVyIGZ1bmN0aW9ucyBoZXJlIGZyb20gUGFnZS4KKworICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGRDaGlsZCk6CisgICAgICAgIElmIHdlIGFyZSBhZGRpbmcgYSBm
cmFtZSB2aWV3LCBhZGQgaXQgdG8gdGhlIHNjcm9sbGFibGUgYXJlYSBzZXQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICBJZiB3ZSBhcmUgcmVt
b3ZpbmcgYSBmcmFtZSB2aWV3LCByZW1vdmUgaXQgZnJvbSB0aGUgc2Nyb2xsYWJsZSBhcmVhIHNl
dC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIE1vdmUgdGhlIG1lbWJl
ciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIHRoZSBzY3JvbGxhYmxlIGFyZWEgc2V0IG1lbWJl
ciB2YXJpYWJsZSBoZXJlIGZyb20gUGFnZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgIERvbid0IGNhbGwgZGlzY29u
bmVjdFBhZ2Ugb24gdGhlIHNjcm9sbGFibGUgYXJlYXMgYW55bW9yZS4KKworICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKFNjcm9sbFZpZXcpOgorICAgICAgICBNYWtl
IGFkZENoaWxkIGFuZCByZW1vdmVDaGlsZCB2aXJ0dWFsLgorCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgUmVtb3ZlIGRpc2Nvbm5lY3RGcm9tUGFnZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVDaGFu
Z2VkKToKKyAgICAgICAgVGhlIGZyYW1lIHZpZXcgbm93IGtlZXBzIHRyYWNrIG9mIHRoZSBzY3Jv
bGxhYmxlIGFyZWFzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgIFJlbW92ZSB0aGUgcGFnZSBtZW1iZXIgdmFyaWFibGUgYW5kIGRpc2Nvbm5lY3RGcm9tUGFn
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6flJlbmRlckxpc3RCb3gpOgorICAgICAgICBUaGUgZnJhbWUgdmlldyBu
b3cga2VlcHMgdHJhY2sgb2YgdGhlIHNjcm9sbGFibGUgYXJlYXMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICBSZW1vdmUgdGhlIHBhZ2UgbWVtYmVyIHZh
cmlhYmxlIGFuZCBkaXNjb25uZWN0RnJvbVBhZ2UuCisKIDIwMTItMDItMDcgIFBldGVyIFJ5Ymlu
ICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHk6IGV4dGVuZCBBcnJheSB2YWxpZGF0b3IgZnVuY3Rpb25hbGl0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGJmY2QzNjZjZGNjOGNkYTA3NzEwMGZlZWMzOWY5ODllOGQ4MGI0NjAu
LjM0MDAwOTk1MWQyOTFhMzc5ZTZjNzliNWEzNTBiN2VhM2YzYTdiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMi0wMi0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCisgICAgICAgIFNjcm9sbGFibGVBcmVhU2V0IHNob3VsZCBiZSBtb3ZlZCBmcm9t
IFBhZ2UgdG8gRnJhbWVWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Mjc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgQ2Fs
bCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhIGluc3RlYWQuCisKKyAgICAgICAgKFdlYktp
dDo6QnVpbHRJblBERlZpZXc6OmRlc3Ryb3kpOgorICAgICAgICBDYWxsIEZyYW1lVmlldzo6cmVt
b3ZlU2Nyb2xsYWJsZUFyZWEgaW5zdGVhZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvQnVpbHRJblBERlZpZXcuaDoKKyAgICAgICAgUmVtb3ZlIGRpc2Nvbm5lY3RGcm9tUGFn
ZSBzaW5jZSBpdCBubyBsb25nZXIgZXhpc3RzIG9uIFNjcm9sbGFibGVBcmVhLgorCiAyMDEyLTAy
LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBBZGQgY3V0LCBjb3B5IGFuZCBwYXN0ZSBtZXRob2RzIHRvIFdlYktpdDIgR1RLKyBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWUwZDE5NzQxNTYxMjY2NjJmNDhiN2IwZjAwYjc0
YzdhNjk4ZTY5ZC4uZWMyN2FlYzRmNjBiNzA0MDI3ZDkzZmRhYTlhNGMyM2Y0MTBiYjdhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTc2NCwxMiArNzY0LDEwIEBAIF9fWk43V2ViQ29yZTRQYWdl
MTVhZGRTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUK
IF9fWk43V2ViQ29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgogX19aTjdXZWJDb3JlNFBhZ2Ux
NnNldENhblN0YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xvYWRpbmdF
YgotX19aTjdXZWJDb3JlNFBhZ2UxN2FkZFNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVB
cmVhRQogX19aTjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKIF9fWk43V2ViQ29y
ZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVs
ZVBhaXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOElu
dFBvaW50RQogX19aTjdXZWJDb3JlNFBhZ2UxOXZpc2l0ZWRTdGF0ZUNoYW5nZWRFUE5TXzlQYWdl
R3JvdXBFeQotX19aTjdXZWJDb3JlNFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNj
cm9sbGFibGVBcmVhRQogX19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYK
IF9fWk43V2ViQ29yZTRQYWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0
UGFnZTIxbWFya0FsbE1hdGNoZXNGb3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagpAQCAtMTA0Niwx
MiArMTA0NCwxNCBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTRzZXROZWVkc0xheW91dEV2CiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MTRzZXRUcmFuc3BhcmVudEViCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MTVzZXRNYXJnaW5IZWlnaHRFaQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE2c2V0UGFp
bnRCZWhhdmlvckVqCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdhZGRTY3JvbGxhYmxlQXJlYUVQ
TlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJv
bFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNf
OEludFBvaW50RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJl
Y3RFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9kZUV2CitfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxhYmxl
QXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9y
RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnNFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDA4OGIwNWM2ZjM5Y2E5Y2Y1YmZiNmUx
ZGFmMzYyNzA3MDgyOGZmNzUuLmUzMGI0MmQ5NjllYjZjYzJkYjU5NmUyMWI5ZDdiYTJlZDdhOGY4
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE2NTYsOCArMTY1Niwx
MCBAQCBib29sIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgaWYgKFJlbmRlckxheWVy
KiBsYXllciA9IGxheWVyRm9yTm9kZShob3ZlcmVkTm9kZS5pbm5lck5vZGUoKSkpIHsKLSAgICAg
ICAgaWYgKHBhZ2UtPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXIpKQotICAgICAgICAgICAg
bGF5ZXItPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CisgICAgICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lVmll
dy0+Y29udGFpbnNTY3JvbGxhYmxlQXJlYShsYXllcikpCisgICAgICAgICAgICAgICAgbGF5ZXIt
Pm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCkBAIC0yMTE3LDEwICsyMTE5
LDE0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2Rl
KiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAocGFnZSAmJiAobGF5ZXJGb3JMYXN0Tm9kZSAmJiAoIWxheWVyRm9yTm9kZVVuZGVy
TW91c2UgfHwgbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSAhPSBsYXllckZvckxhc3ROb2RlKSkpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBoYXMgbW92ZWQgYmV0d2VlbiBsYXllcnMuCi0gICAg
ICAgICAgICBpZiAocGFnZS0+Y29udGFpbnNTY3JvbGxhYmxlQXJlYShsYXllckZvckxhc3ROb2Rl
KSkKLSAgICAgICAgICAgICAgICBsYXllckZvckxhc3ROb2RlLT5tb3VzZUV4aXRlZENvbnRlbnRB
cmVhKCk7CisgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9sYXN0Tm9kZVVuZGVyTW91
c2UtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChm
cmFtZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXJGb3JMYXN0Tm9kZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXllckZvckxhc3ROb2RlLT5tb3VzZUV4aXRlZENvbnRlbnRB
cmVhKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIGlmIChtX25vZGVVbmRlck1vdXNlICYmICghbV9sYXN0Tm9kZVVuZGVy
TW91c2UgfHwgbV9sYXN0Tm9kZVVuZGVyTW91c2UtPmRvY3VtZW50KCkgIT0gbV9mcmFtZS0+ZG9j
dW1lbnQoKSkpIHsKICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBoYXMgbW92ZWQgYmV0d2VlbiBm
cmFtZXMuCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9ub2RlVW5kZXJNb3VzZS0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewpAQCAtMjEyOSwxMCArMjEzNSwxNCBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29u
c3QgUGxhdGZvcm1NbwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHBhZ2UgJiYg
KGxheWVyRm9yTm9kZVVuZGVyTW91c2UgJiYgKCFsYXllckZvckxhc3ROb2RlIHx8IGxheWVyRm9y
Tm9kZVVuZGVyTW91c2UgIT0gbGF5ZXJGb3JMYXN0Tm9kZSkpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgbW91c2UgaGFzIG1vdmVkIGJldHdlZW4gbGF5ZXJzLgotICAgICAgICAgICAgaWYgKHBhZ2Ut
PmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSkpCi0gICAgICAg
ICAgICAgICAgbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZS0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEo
KTsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX25vZGVVbmRlck1vdXNlLT5kb2N1
bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3
LT5jb250YWluc1Njcm9sbGFibGVBcmVhKGxheWVyRm9yTm9kZVVuZGVyTW91c2UpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZS0+bW91c2VFbnRlcmVkQ29u
dGVudEFyZWEoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1vdXNlICYmIG1fbGFzdE5v
ZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAg
ICAgICAgIG1fbGFzdE5vZGVVbmRlck1vdXNlID0gMDsKICAgICAgICAgICAgIG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGMyYzAzZTVlM2EwNjQzYzNjMzFkYjljYzI5MjBmZjE4MzIxYzEyOTYuLjUxNDI2YTMw
ODYyNGI5ODU4OGIwZTA2ZjkxY2I2ZDY0ODFhYzhmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTU4Miw2ICs1ODIsMTQgQEAgdm9pZCBGb2N1c0NvbnRyb2xs
ZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgZGlzcGF0Y2hFdmVudHNPbldpbmRv
d0FuZEZvY3VzZWROb2RlKG1fZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLCBhY3RpdmUpOwogfQog
CitzdGF0aWMgdm9pZCBjb250ZW50QXJlYURpZFNob3dPckhpZGUoU2Nyb2xsYWJsZUFyZWEqIHNj
cm9sbGFibGVBcmVhLCBib29sIGRpZFNob3cpCit7CisgICAgaWYgKGRpZFNob3cpCisgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5jb250ZW50QXJlYURpZFNob3coKTsKKyAgICBlbHNlCisgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5jb250ZW50QXJlYURpZEhpZGUoKTsKK30KKwogdm9pZCBGb2N1c0Nv
bnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUoYm9vbCBjb250YWluaW5nV2lu
ZG93SXNWaXNpYmxlKQogewogICAgIGlmIChtX2NvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUgPT0g
Y29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZSkKQEAgLTU5MywxMyArNjAxLDIyIEBAIHZvaWQgRm9j
dXNDb250cm9sbGVyOjpzZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlKGJvb2wgY29udGFpbmlu
Z1dpbmRvd0lzVmlzaWJsCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBtX3Bh
Z2UtPnNjcm9sbGFibGVBcmVhU2V0KCkpIHsKLSAgICAgICAgSGFzaFNldDxTY3JvbGxhYmxlQXJl
YSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyAKLSAgICAg
ICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Ny
b2xsYWJsZUFyZWFzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlm
ICghY29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZSkKLSAgICAgICAgICAgICAgICAoKml0KS0+Y29u
dGVudEFyZWFEaWRIaWRlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKCpp
dCktPmNvbnRlbnRBcmVhRGlkU2hvdygpOworICAgIGNvbnRlbnRBcmVhRGlkU2hvd09ySGlkZSh2
aWV3LCBjb250YWluaW5nV2luZG93SXNWaXNpYmxlKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmll
dygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Nyb2xsYWJsZUFyZWFzID0g
ZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJlYXMoKTsKKyAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJl
YXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xs
YWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCks
IGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gKml0OworICAgICAgICAgICAg
QVNTRVJUKHNjcm9sbGFibGVBcmVhLT5pc09uQWN0aXZlUGFnZSgpKTsKKworICAgICAgICAgICAg
Y29udGVudEFyZWFEaWRTaG93T3JIaWRlKHNjcm9sbGFibGVBcmVhLCBjb250YWluaW5nV2luZG93
SXNWaXNpYmxlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA4OWU2Mjg2MjBmZjNkN2ZlY2Q2NzFiYTM5M2M0YTc4ZDBjMTA3ZmE0Li5kMGExMGM4
ZjMwMmI4ZWI1YTIyOGVkOTNhZWE4NDk5YTMwZjI0M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xNTIsMTYgKzE1MiwxNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSog
ZnJhbWUpCiB7CiAgICAgaW5pdCgpOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIG1fcGFnZSA9IHBh
Z2U7Ci0gICAgICAgICAgICBtX3BhZ2UtPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDYW4gbV9mcmFtZSBldmVyIGJlIG51bGwgaGVyZT8KKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKG1fZnJhbWUgPT0gbV9wYWdlLT5t
YWluRnJhbWUoKSkgewotICAgICAgICAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQpOwotICAgICAgICAgICAg
ICAgIFNjcm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxF
bGFzdGljaXR5QWxsb3dlZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fZnJhbWUgPT0gcGFnZS0+bWFpbkZyYW1lKCkpIHsKKyAgICAgICAgU2Nyb2xs
YWJsZUFyZWE6OnNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5QWxs
b3dlZCk7CisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eShTY3JvbGxFbGFzdGljaXR5QWxsb3dlZCk7CiAgICAgfQogfQogCkBAIC0yMDIsOSArMjAz
LDYgQEAgRnJhbWVWaWV3Ojp+RnJhbWVWaWV3KCkKICAgICBBU1NFUlQoIW1fc2Nyb2xsQ29ybmVy
KTsKICAgICBBU1NFUlQobV9hY3Rpb25TY2hlZHVsZXItPmlzRW1wdHkoKSk7CiAKLSAgICBpZiAo
bV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotCiAg
ICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgQVNTRVJUKG1fZnJhbWUtPnZpZXcoKSAhPSB0aGlz
IHx8ICFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSk7CiAgICAgICAgIFJlbmRlclBhcnQqIHJl
bmRlcmVyID0gbV9mcmFtZS0+b3duZXJSZW5kZXJlcigpOwpAQCAtMTI0Miw4ICsxMjQwLDggQEAg
dm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0
KiBvYmplY3QpCiB2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChm
bG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQgeSwgWm9vbUFuaW1hdGlvblN0YXRlIHN0YXRlKQog
ewogICAgIGlmIChzdGF0ZSA9PSBab29tQW5pbWF0aW9uRmluaXNoaW5nKSB7Ci0gICAgICAgIG1f
cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2Fs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoc2NhbGUgKiBz
Y3JvbGxYKCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRQYWdlU2NhbGVG
YWN0b3IocGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwgSW50UG9pbnQoc2NhbGUgKiBz
Y3JvbGxYKCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKICAgICAgICAgc2Nyb2xsQW5p
bWF0b3IoKS0+cmVzZXRab29tKCk7CiAgICAgfQogCkBAIC0yNTc1LDE4ICsyNTczLDE2IEBAIHZv
aWQgRnJhbWVWaWV3OjpzZXRBbmltYXRvcnNBcmVBY3RpdmUoKQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3Jv
bGxhYmxlQXJlYXMgPSBwYWdlLT5zY3JvbGxhYmxlQXJlYVNldCgpOwotICAgIGlmICghc2Nyb2xs
YWJsZUFyZWFzKQorICAgIHNjcm9sbEFuaW1hdG9yKCktPnNldElzQWN0aXZlKCk7CisKKyAgICBp
ZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5k
KCk7IAotICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGV4dHJhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgU2Nyb2xsYWJsZUFy
ZWEgaXMgb24gYW4gYWN0aXZlIHBhZ2UgbmVlZHMgCi0gICAgICAgIC8vIHRvIGJlIGhlcmUgYXMg
bG9uZyBhcyB0aGUgU2Nyb2xsYWJsZUFyZWEgSGFzaFNldCBsaXZlcyBvbiBQYWdlLiBCdXQgaXQg
c2hvdWxkIHJlYWxseSBiZQotICAgICAgICAvLyBtb3ZlZCB0byB0aGUgdG9wLWxldmVsIERvY3Vt
ZW50IG9yIGEgc2ltaWxhciBjbGFzcyB0aGF0IHJlYWxseSByZXByZXNlbnRzIGEgc2luZ2xlIAot
ICAgICAgICAvLyB3ZWIgcGFnZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyNzYyCi0gICAgICAgIGlmICgoKml0KS0+aXNPbkFjdGl2ZVBhZ2UoKSkKLSAgICAgICAg
ICAgICgqaXQpLT5zY3JvbGxBbmltYXRvcigpLT5zZXRJc0FjdGl2ZSgpOworICAgIGZvciAoSGFz
aFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2Nyb2xsYWJsZUFy
ZWFzLT5iZWdpbigpLCBlbmQgPSBtX3Njcm9sbGFibGVBcmVhcy0+ZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSAqaXQ7CisK
KyAgICAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5pc09uQWN0aXZlUGFnZSgpKTsKKyAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCktPnNldElzQWN0aXZlKCk7CiAgICAg
fQogfQogCkBAIC0yNTk2LDIxICsyNTkyLDI2IEBAIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlQYWdl
VGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Nyb2xsYWJs
ZUFyZWFzID0gcGFnZS0+c2Nyb2xsYWJsZUFyZWFTZXQoKTsKLSAgICBpZiAoIXNjcm9sbGFibGVB
cmVhcykKKyAgICBjb250ZW50QXJlYVdpbGxQYWludCgpOworCisgICAgaWYgKCFtX3Njcm9sbGFi
bGVBcmVhcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyAKLSAgICBmb3Ig
KEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxl
QXJlYXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmNvbnRlbnRB
cmVhV2lsbFBhaW50KCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xs
YWJsZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSA9ICppdDsKKworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFy
ZWEtPmlzT25BY3RpdmVQYWdlKCkpOworICAgICAgICBzY3JvbGxhYmxlQXJlYS0+Y29udGVudEFy
ZWFXaWxsUGFpbnQoKTsKKyAgICB9CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSBjb25zdAogewogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlm
IChtX3BhZ2UgJiYgbV9wYWdlLT5zZXR0aW5ncygpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5z
ZXR0aW5ncygpLT5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCktPnNjcm9s
bEFuaW1hdG9yRW5hYmxlZCgpOwogI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTMyNjIsNiArMzI2Myw0MyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWludHMoYm9v
bCB0cmFja1JlcGFpbnRzKQogICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0gdHJhY2tSZXBhaW50
czsKIH0KIAordm9pZCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQorICAgICAg
ICBtX3Njcm9sbGFibGVBcmVhcyA9IGFkb3B0UHRyKG5ldyBTY3JvbGxhYmxlQXJlYVNldCk7Cisg
ICAgbV9zY3JvbGxhYmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgRnJh
bWVWaWV3OjpyZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFy
ZWEpCit7CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc2Nyb2xsYWJsZUFyZWFzLT5yZW1vdmUoc2Nyb2xsYWJsZUFyZWEpOworfQorCitib29sIEZy
YW1lVmlldzo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWEpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy0+Y29udGFpbnMoc2Nyb2xs
YWJsZUFyZWEpOworfQorCit2b2lkIEZyYW1lVmlldzo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRn
ZXQ+IHdpZGdldCkKK3sKKyAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICBh
ZGRTY3JvbGxhYmxlQXJlYShzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQuZ2V0KCkpKTsK
KworICAgIFNjcm9sbFZpZXc6OmFkZENoaWxkKHdpZGdldCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3
OjpyZW1vdmVDaGlsZChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBpZiAod2lkZ2V0LT5pc0ZyYW1l
VmlldygpKQorICAgICAgICByZW1vdmVTY3JvbGxhYmxlQXJlYShzdGF0aWNfY2FzdDxGcmFtZVZp
ZXcqPih3aWRnZXQpKTsKKworICAgIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKHdpZGdldCk7Cit9
CisKIGJvb2wgRnJhbWVWaWV3Ojppc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdAogewogICAgIFJl
bmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAppbmRleCA0NjZhODg5MzlmYmE4NmU5YTk2MTVmMmYzN2Y1YjgwMzMxMTk5YjlmLi5jZDhlYWEx
MjhjYjUwYWIwNWZmNDljN2YxZDVkYzE4NzBhZjgwYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKQEAgLTMwOCw2ICszMDgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUcmFja2VkUmVw
YWludHMoKSB7IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOyB9CiAgICAgY29uc3QgVmVj
dG9yPEludFJlY3Q+JiB0cmFja2VkUmVwYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV90cmFj
a2VkUmVwYWludFJlY3RzOyB9CiAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEq
PiBTY3JvbGxhYmxlQXJlYVNldDsKKyAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKik7CisgICAgdm9pZCByZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSop
OworICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIGNvbnN0
OworICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNoaWxkKFdpZGdldCopIE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBi
b29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0
ZVJlY3QpOwpAQCAtMzczLDcgKzM4Miw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQogCiAgICAg
dmlydHVhbCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0OwogCkBAIC00NzYsOCAr
NDg0LDYgQEAgcHJpdmF0ZToKICAgICAvLyBSZW5kZXJlciB0byBob2xkIG91ciBjdXN0b20gc2Ny
b2xsIGNvcm5lci4KICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKIAot
ICAgIFBhZ2UqIG1fcGFnZTsKLQogICAgIC8vIElmIHRydWUsIGF1dG9tYXRpY2FsbHkgcmVzaXpl
IHRoZSBmcmFtZSB2aWV3IGFyb3VuZCBpdHMgY29udGVudC4KICAgICBib29sIG1fc2hvdWxkQXV0
b1NpemU7CiAgICAgYm9vbCBtX2luQXV0b1NpemU7CkBAIC00ODYsNiArNDkyLDggQEAgcHJpdmF0
ZToKICAgICAvLyBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHNpemUgd2hlbiBhdXRvc2l6aW5nLgog
ICAgIEludFNpemUgbV9tYXhBdXRvU2l6ZTsKIAorICAgIE93blB0cjxTY3JvbGxhYmxlQXJlYVNl
dD4gbV9zY3JvbGxhYmxlQXJlYXM7CisKICAgICBzdGF0aWMgZG91YmxlIHNfZGVmZXJyZWRSZXBh
aW50RGVsYXk7CiAgICAgc3RhdGljIGRvdWJsZSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxh
eUR1cmluZ0xvYWRpbmc7CiAgICAgc3RhdGljIGRvdWJsZSBzX21heERlZmVycmVkUmVwYWludERl
bGF5RHVyaW5nTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGU4YzA1ZTU2YWM0MGMxOWU0
OWQ5ZDMwYjY4YjMwZWU0ZmVhYjQxNTIuLjQ5MmU5NDllZTFlMzNjYzBlOTRhNDkzODY5YTA2OGJk
NjFmNzlkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDEyICsyMTEsNiBAQCBQYWdlOjp+
UGFnZSgpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5wYWdlRGVz
dHJveWVkKCk7CiAKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYVNldCkgewotICAgICAgICBTY3Jv
bGxhYmxlQXJlYVNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zY3JvbGxhYmxlQXJlYVNldC0+
ZW5kKCk7IAotICAgICAgICBmb3IgKFNjcm9sbGFibGVBcmVhU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fc2Nyb2xsYWJsZUFyZWFTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgICAgICgqaXQpLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKLSAgICB9Ci0KICAgICBtX2VkaXRv
ckNsaWVudC0+cGFnZURlc3Ryb3llZCgpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEw
MjYsMjcgKzEwMjAsNiBAQCB2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgp
CiAgICAgICAgIHBsdWdpblZpZXdCYXNlc1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OmFkZFNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKLXsKLSAgICBpZiAoIW1fc2Nyb2xs
YWJsZUFyZWFTZXQpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQgPSBhZG9wdFB0cihuZXcg
U2Nyb2xsYWJsZUFyZWFTZXQpOwotICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQtPmFkZChzY3JvbGxh
YmxlQXJlYSk7Ci19Ci0KLXZvaWQgUGFnZTo6cmVtb3ZlU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKQotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYVNldCkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fc2Nyb2xsYWJsZUFyZWFTZXQtPnJlbW92ZShzY3JvbGxh
YmxlQXJlYSk7Ci19Ci0KLWJvb2wgUGFnZTo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVB
cmVhU2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFTZXQtPmNvbnRhaW5zKHNjcm9sbGFibGVBcmVhKTsKLX0KLQogI2lmICFBU1NFUlRfRElTQUJM
RUQKIHZvaWQgUGFnZTo6Y2hlY2tGcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCBhMTI0MzJkYzkyOTk2MGQzMmI1NDFiNWMxYjk4NDU3ZGM4NzMzYmViLi41
ZjZlMjA2NDlhODEyOGE1YzhiODRhOGU5MTNlNzMwZDNhODliMDk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtMzMzLDEyICszMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpIGNvbnN0OwogCi0gICAgICAgIHR5cGVkZWYgSGFzaFNldDxTY3JvbGxh
YmxlQXJlYSo+IFNjcm9sbGFibGVBcmVhU2V0OwotICAgICAgICB2b2lkIGFkZFNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhKik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlU2Nyb2xsYWJsZUFyZWEo
U2Nyb2xsYWJsZUFyZWEqKTsKLSAgICAgICAgYm9vbCBjb250YWluc1Njcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhKikgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBz
Y3JvbGxhYmxlQXJlYVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTZXQuZ2V0
KCk7IH0KLQogICAgICAgICAvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gYSBjZXJ0YWluIG51bWJl
ciBvZiBmcmFtZXMgaW4gYSBwYWdlLgogICAgICAgICAvLyBUaGlzIHNlZW1zIGxpa2UgYSByZWFz
b25hYmxlIHVwcGVyIGJvdW5kLCBhbmQgb3RoZXJ3aXNlIG11dHVhbGx5CiAgICAgICAgIC8vIHJl
Y3Vyc2l2ZSBmcmFtZXNldCBwYWdlcyBjYW4gcXVpY2tseSBicmluZyB0aGUgcHJvZ3JhbSB0byBp
dHMga25lZXMKQEAgLTQ2NSw4ICs0NTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAKLSAgICAgICAgT3duUHRyPFNjcm9s
bGFibGVBcmVhU2V0PiBtX3Njcm9sbGFibGVBcmVhU2V0OwotCiAgICAgICAgIGJvb2wgbV9pc0Vk
aXRhYmxlOwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggYmE1ODZhNGFiMTA5MTQ0YTNjZTJhNDM2MmQ3Mzg5MjA2
OGIyZWFmZS4uY2I2YWI0ZTNkMzRkM2M4ZTRiMzAzYmQ0MTc0MWIxNzcyMTkwMTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlvbiBhbmQgaW5zcGVjdGlvbi4K
ICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0
Pik7Ci0gICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQo
V2lkZ2V0Kik7CiAgICAgCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBh
IG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJh
cnMuIFRoZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBz
Y3JvbGxiYXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXgg
MGI0NTgzYmJlYTBkNmJkNzA0ZWFiMWQwNjQxOTUyNGE3NGY0NTViYi4uN2IwNDlkY2QwNWQzMTEx
ODk5MmIwODc3YzgwMzhkYzZmZjc0ZDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCkBAIC0xNjEsOCArMTYxLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7
IH0KLQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMg
Zm9yIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCBiZGVjNWY5OTgxODk5MDg3MDMyZDg5M2IzMWYyZGEzYjhlMTcyY2ZhLi5mZWUyN2U5NjhhNjJh
ZWI4ZWQzYzJiNzFmMjA2ZWI0N2I4MDU3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTE4NSw3ICsxODUsNiBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKQogICAgICwgbV9yZWZsZWN0aW9uKDAp
CiAgICAgLCBtX3Njcm9sbENvcm5lcigwKQogICAgICwgbV9yZXNpemVyKDApCi0gICAgLCBtX3Nj
cm9sbGFibGVBcmVhUGFnZSgwKQogewogICAgIG1faXNOb3JtYWxGbG93T25seSA9IHNob3VsZEJl
Tm9ybWFsRmxvd09ubHkoKTsKIApAQCAtMjA0LDggKzIwMywxMCBAQCBSZW5kZXJMYXllcjo6flJl
bmRlckxheWVyKCkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cmVzaXplTGF5
ZXJEZXN0cm95ZWQoKTsKICAgICB9CiAKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYVBhZ2UpCi0g
ICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFQYWdlLT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsK
KyAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBp
ZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICB9CiAKICAgICBkZXN0cm95
U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVy
dGljYWxTY3JvbGxiYXIpOwpAQCAtNDM0NiwxOSArNDM0NywxNCBAQCB2b2lkIFJlbmRlckxheWVy
OjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZm
ZWN0KCk7CiAjZW5kaWYKLSAgICAKLSAgICBpZiAoc2Nyb2xsc092ZXJmbG93KCkpIHsKLSAgICAg
ICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhUGFnZSkgewotICAgICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYVBhZ2UgPSBwYWdlOwotICAgICAgICAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFn
ZS0+YWRkU2Nyb2xsYWJsZUFyZWEodGhpcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQorCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKKyAg
ICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkgeworICAgICAg
ICAgICAgaWYgKHNjcm9sbHNPdmVyZmxvdygpKQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+
YWRkU2Nyb2xsYWJsZUFyZWEodGhpcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAobV9zY3JvbGxhYmxlQXJlYVBhZ2UpIHsKLSAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYVBhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhUGFnZSA9IDA7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRldGVj
dCBhIHN3YXAgZnJvbSBjdXN0b20gdG8gbmF0aXZlIHNjcm9sbGJhcnMgKGFuZCB2aWNlIHZlcnNh
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZGU3NWYyNDVkYTQz
NzAxNmJkYWYxOWIwMmJjZjgzY2I2YTI2OGI1NC4uZGY5OWJlY2JiM2I4ODcyZTgzMzRiMTcwMTQ2
NTRmODkwZjcyOTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTY2OCw4ICs2NjgsNiBAQCBwcml2YXRlOgogICAgIC8vIFJlY3RhbmdsZSBlbmNvbXBhc3Npbmcg
dGhlIHNjcm9sbCBjb3JuZXIgYW5kIHJlc2l6ZXIgcmVjdC4KICAgICBJbnRSZWN0IHNjcm9sbENv
cm5lckFuZFJlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dEZyb21QYWdlKCkgeyBtX3Njcm9sbGFibGVBcmVhUGFnZSA9IDA7IH0KLQogICAgIC8vIE5PVEU6
IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zm
c2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQsIGludCk7CiAK
QEAgLTg2OCw4ICs4NjYsNiBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJCYWNraW5nPiBtX2JhY2tpbmc7CiAjZW5kaWYK
LQotICAgIFBhZ2UqIG1fc2Nyb2xsYWJsZUFyZWFQYWdlOyAvLyBQYWdlIG9uIHdoaWNoIHRoaXMg
aXMgcmVnaXN0ZXJlZCBhcyBhIHNjcm9sbGFibGUgYXJlYS4KIH07CiAKIGlubGluZSB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMWMwMDFlZGRkODQzMzQzMzRjM2E1MDk4Zjk1OWE1NzVi
OWE2MzRiMy4uOWIxOWM3OWQwZWUwYzUzZGE4NzgxZDYxMTM3NTMyMGRkMjljZTQyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTIsMTcgKzkyLDE3
IEBAIFJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3goRWxlbWVudCogZWxlbWVudCkKICAgICBB
U1NFUlQoZWxlbWVudCk7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpKTsKLSAg
ICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCktPnBhZ2UoKSkgewotICAgICAgICBtX3BhZ2UgPSBw
YWdlOwotICAgICAgICBtX3BhZ2UtPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgIH0KKwor
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAg
ZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIAogUmVuZGVyTGlzdEJveDo6
flJlbmRlckxpc3RCb3goKQogewogICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGZhbHNlKTsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRo
aXMpOworCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUoKS0+dmlldygpKQor
ICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDRkOGIzNWZhZjU4NzllYzQ2ZmRmMWUwNWE2Y2Y5ZDEz
M2RhZDlkZTkuLmVmOTQ3MmViZTg5ZWUyYWQxN2NmNjg1NDI4MTc4OTI5ZTUzYWM0OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTIxLDggKzEyMSw2IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxh
YmxlQXJlYSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgp
IHsgbV9wYWdlID0gMDsgfQotCiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxs
ZWQgYnkgdGhlIG92ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4K
ICAgICB2b2lkIHNjcm9sbFRvKGludCBuZXdPZmZzZXQpOwogCkBAIC0xNDcsOCArMTQ1LDYgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9pbmRleE9mZnNldDsKIAogICAgIFJlZlB0cjxTY3JvbGxiYXI+
IG1fdkJhcjsKLQotICAgIFBhZ2UqIG1fcGFnZTsKIH07CiAKIGlubGluZSBSZW5kZXJMaXN0Qm94
KiB0b1JlbmRlckxpc3RCb3goUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCmlu
ZGV4IDEzZjk3ZDk2ZjM2Zjk3Zjc2NmQ1OTBmZWMyOWIxYmNkZjRiYzA1ZDcuLjkwNGE4M2RjZDg3
MjA5ZDAzODNlNTM5N2ExYjU2MTBmNDZjYmRkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBCdWlsdEluUERGVmlldzo6Y2FsY3VsYXRlU2l6ZXMoKQogCiBib29s
IEJ1aWx0SW5QREZWaWV3Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7Ci0gICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2UoKS0+YWRkU2Nyb2xsYWJsZUFyZWEo
dGhpcyk7CisgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+YWRkU2Nyb2xsYWJsZUFy
ZWEodGhpcyk7CiAKICAgICAvLyBMb2FkIHRoZSBzcmMgVVJMIGlmIG5lZWRlZC4KICAgICBtX3Nv
dXJjZVVSTCA9IHBhcmFtZXRlcnMudXJsOwpAQCAtMzYxLDggKzM2MSw4IEBAIGJvb2wgQnVpbHRJ
blBERlZpZXc6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHZvaWQg
QnVpbHRJblBERlZpZXc6OmRlc3Ryb3koKQogewogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAg
ICAgIHBhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgICAgICBpZiAoRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgICAgICAg
ICAgZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAgICB9CiAKICAgICBk
ZXN0cm95U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCmluZGV4IDZl
ZTRiZjNjNTk0OGJhYmM2MTk1NTdlNjk2Y2RkNDNlNWM1YzI4ZWUuLmMxODVjMTg3MTJlOTczNzAx
NTk4ZmU5OGY1NmFkNjQxOTRjY2Q1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKQEAgLTEzOCw3ICsxMzgsNiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Ny
b2xsYmFyKCkgY29uc3QgIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Q
YWdlKCkgeyBtX2ZyYW1lID0gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Ny
b2xsQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIElmIHdlIHJldHVybiB0
cnVlLCBTY3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBhIHRpbWVyIGZvcmV2ZXIs
IHdhaXRpbmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCiAgICAgdmlydHVhbCB2b2lkIHNj
cm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwogICAg
IHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIFpvb21BbmltYXRpb25TdGF0ZSkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125895</attachid>
            <date>2012-02-07 12:01:57 -0800</date>
            <delta_ts>2012-02-07 12:37:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62762-20120207120228.patch</filename>
            <type>text/plain</type>
            <size>34325</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3ZWYyZTg0NDliYmZk
NTdjZDYwNGI5ZTkyN2IzYzdkMjM4OWY1MC4uZTFkMDg5MGE1MzRiMzEzZGRjODczYTk4MjhmOTE5
MjQwZTczNWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAyLTA2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYWJsZUFy
ZWFTZXQgc2hvdWxkIGJlIG1vdmVkIGZyb20gUGFnZSB0byBGcmFtZVZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgbWFrZXMgbW9yZSBzZW5zZSBm
b3IgdGhlIHNldCBvZiBzY3JvbGxhYmxlIGFyZWFzIHRvIGJlIHBlciBmcmFtZSB2aWV3IGluc3Rl
YWQgb2YgcGVyIHBhZ2U7CisgICAgICAgIHNjcm9sbGFibGUgYXJlYXMgYXJlIGFzc29jaWF0ZWQg
d2l0aCBhIGNvbnRhaW5pbmcgZnJhbWUgdmlldyBhbmQgdGhlaXIgbGlmZWN5Y2xlIGZvbGxvd3Mg
dGhlIGxpZmVjeWNsZSBvZiB0aGUKKyAgICAgICAgZnJhbWUgdmlldyBtdWNoIG1vcmUgY2xvc2Vs
eS4gVGhpcyBjb3VsZCBldmVuIGZpeCBhIGJ1bmNoIG9mIGNyYXNoZXMgd2hlcmUgYSBzY3JvbGxh
YmxlIGFyZWEgb3V0bGl2ZWQgaXRzIGNvbnRhaW5pbmcgcGFnZS4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICBSZXBsYWNlIHRoZSBQYWdlIG1lbWJlciBmdW5jdGlvbnMgd2l0
aCBGcmFtZVZpZXcgbWVtYmVyIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1v
dmVkKToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGZyYW1lIHZpZXcgY29udGFpbnMgdGhlIGdpdmVu
IGxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZl
bnRUYXJnZXROb2RlKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50QXJlYURpZFNob3dPckhpZGUp
OgorICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOgorICAgICAgICBDYWxs
IGNvbnRlbnRBcmVhRGlkU2hvd09ySGlkZSBmb3IgdGhlIG1haW4gZnJhbWUgdmlldywgYW5kIGZv
ciBhbGwgc2Nyb2xsYWJsZSBhcmVhcworICAgICAgICBpbnNpZGUgYWxsIHN1YmZyYW1lIHZpZXdz
LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICBVc2UgZWFybHkgcmV0dXJucyB0byBtYWtlIHRo
ZSBjb2RlIG1vcmUgY2xlYXIuIEFsc28sIGRvbid0IGFkZCB0aGUgc2Nyb2xsYWJsZSBhcmVhIHRv
IHRoZSBzZXQgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp+RnJhbWVWaWV3
KToKKyAgICAgICAgRG9uJ3QgcmVtb3ZlIHRoZSBzY3JvbGxhYmxlIGFyZWEgaGVyZS4KKworICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToK
KyAgICAgICAgbV9wYWdlIGlzIGdvbmUgc28gdXNlIG1fZnJhbWUtPnBhZ2UoKSBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEFuaW1hdG9yc0FyZUFjdGl2ZSk6Cisg
ICAgICAgIENhbGwgU2Nyb2xsQW5pbWF0b3I6OnNldElzQWN0aXZlIGZvciBhbGwgdGhlIHNjcm9s
bGFibGUgYXJlYXMgaW4gdGhpcyBmcmFtZSB2aWV3LiBQcmV2aW91c2x5IHdlIHVzZWQgdG8gZG8K
KyAgICAgICAgdGhpcyBmb3IgYWxsIHNjcm9sbGFibGUgYXJlYXMgb24gdGhlIHBhZ2UsIGJ1dCBz
aW5jZSBzZXRBbmltYXRvcnNBcmVBY3RpdmUgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggZG9jdW1l
bnQsCisgICAgICAgIHRoaXMgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCk6Cisg
ICAgICAgIENhbGwgU2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnREaWRQYWludCBmb3IgdGhpcyBmcmFt
ZSB2aWV3IGFuZCBhbGwgaXRzIGltbWVkaWF0ZSBzY3JvbGxhYmxlIGFyZWFzLiBQcmV2aW91c2x5
LCB3ZSB1c2VkCisgICAgICAgIHRvIGRvIHRoaXMgZm9yIGFsbCBzY3JvbGxhYmxlIGFyZWFzIG9u
IHRoZSBwYWdlLCBidXQgd2Ugb25seSBuZWVkIHRvIGRvIGl0IGZvciB0aGlzIGZyYW1lIHZpZXcu
CisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQW5pbWF0b3JFbmFibGVkKToK
KyAgICAgICAgR2V0IHRoZSBwYWdlIGZyb20gbV9mcmFtZSBzaW5jZSBtX3BhZ2UgaXMgZ29uZS4K
KworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlbW92ZVNjcm9sbGFibGVBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udGFpbnNTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIE1v
dmUgdGhlc2UgbWVtYmVyIGZ1bmN0aW9ucyBoZXJlIGZyb20gUGFnZS4KKworICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGRDaGlsZCk6CisgICAgICAgIElmIHdlIGFyZSBhZGRpbmcgYSBm
cmFtZSB2aWV3LCBhZGQgaXQgdG8gdGhlIHNjcm9sbGFibGUgYXJlYSBzZXQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICBJZiB3ZSBhcmUgcmVt
b3ZpbmcgYSBmcmFtZSB2aWV3LCByZW1vdmUgaXQgZnJvbSB0aGUgc2Nyb2xsYWJsZSBhcmVhIHNl
dC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIE1vdmUgdGhlIG1lbWJl
ciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIHRoZSBzY3JvbGxhYmxlIGFyZWEgc2V0IG1lbWJl
ciB2YXJpYWJsZSBoZXJlIGZyb20gUGFnZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgIERvbid0IGNhbGwgZGlzY29u
bmVjdFBhZ2Ugb24gdGhlIHNjcm9sbGFibGUgYXJlYXMgYW55bW9yZS4KKworICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKFNjcm9sbFZpZXcpOgorICAgICAgICBNYWtl
IGFkZENoaWxkIGFuZCByZW1vdmVDaGlsZCB2aXJ0dWFsLgorCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgUmVtb3ZlIGRpc2Nvbm5lY3RGcm9tUGFnZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVDaGFu
Z2VkKToKKyAgICAgICAgVGhlIGZyYW1lIHZpZXcgbm93IGtlZXBzIHRyYWNrIG9mIHRoZSBzY3Jv
bGxhYmxlIGFyZWFzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgIFJlbW92ZSB0aGUgcGFnZSBtZW1iZXIgdmFyaWFibGUgYW5kIGRpc2Nvbm5lY3RGcm9tUGFn
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6flJlbmRlckxpc3RCb3gpOgorICAgICAgICBUaGUgZnJhbWUgdmlldyBu
b3cga2VlcHMgdHJhY2sgb2YgdGhlIHNjcm9sbGFibGUgYXJlYXMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICBSZW1vdmUgdGhlIHBhZ2UgbWVtYmVyIHZh
cmlhYmxlIGFuZCBkaXNjb25uZWN0RnJvbVBhZ2UuCisKIDIwMTItMDItMDcgIFBldGVyIFJ5Ymlu
ICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHk6IGV4dGVuZCBBcnJheSB2YWxpZGF0b3IgZnVuY3Rpb25hbGl0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyMTNkY2ZjNDMwYjAzMjdjNmZkZDRmOTcy
ZDJjMDI0Y2Y2MDI4NWQ2Li5hYzFiM2RlYzU0YjkwZDkyMzJmY2M3NTM3NTY4NGRhYWVmMWU1N2U1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTA3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xs
YWJsZUFyZWFTZXQgc2hvdWxkIGJlIG1vdmVkIGZyb20gUGFnZSB0byBGcmFtZVZpZXcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGZvciBjaGFu
Z2VzIHRvIFdlYkNvcmUgbm93IHRoYXQgdGhlIHNjcm9sbGFibGUgYXJlYSBzZXQgaXMga2VwdCBw
ZXIgZnJhbWUgdmlldy4KKworICAgICAgICAqIHNyYy9TY3JvbGxiYXJHcm91cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGJhckdyb3VwOjpTY3JvbGxiYXJHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OlNjcm9sbGJhckdyb3VwOjp+U2Nyb2xsYmFyR3JvdXApOgorICAgICAgICAqIHNyYy9T
Y3JvbGxiYXJHcm91cC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JvbGxiYXJH
cm91cCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzY3JvbGxiYXJHcm91cCk6CisKIDIw
MTItMDItMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY5MzUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZj
ZDM2NmNkY2M4Y2RhMDc3MTAwZmVlYzM5Zjk4OWU4ZDgwYjQ2MC4uMzQwMDA5OTUxZDI5MWEzNzll
NmM3OWI1YTM1MGI3ZWEzZjNhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEy
LTAyLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2Nyb2xsYWJsZUFyZWFTZXQgc2hvdWxkIGJlIG1vdmVkIGZyb20gUGFnZSB0byBGcmFtZVZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QnVp
bHRJblBERlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICBDYWxsIEZyYW1lVmlldzo6YWRkU2Ny
b2xsYWJsZUFyZWEgaW5zdGVhZC4KKworICAgICAgICAoV2ViS2l0OjpCdWlsdEluUERGVmlldzo6
ZGVzdHJveSk6CisgICAgICAgIENhbGwgRnJhbWVWaWV3OjpyZW1vdmVTY3JvbGxhYmxlQXJlYSBp
bnN0ZWFkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmll
dy5oOgorICAgICAgICBSZW1vdmUgZGlzY29ubmVjdEZyb21QYWdlIHNpbmNlIGl0IG5vIGxvbmdl
ciBleGlzdHMgb24gU2Nyb2xsYWJsZUFyZWEuCisKIDIwMTItMDItMDcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBjdXQsIGNv
cHkgYW5kIHBhc3RlIG1ldGhvZHMgdG8gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA1ZTBkMTk3NDE1NjEyNjY2MmY0OGI3YjBmMDBiNzRjN2E2OThlNjlkLi5lYzI3YWVj
NGY2MGI3MDQwMjdkOTNmZGFhOWE0YzIzZjQxMGJiN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtNzY0LDEyICs3NjQsMTAgQEAgX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVO
M1dURjEwUGFzc1JlZlB0cklOU18xMlNjaGVkdWxlUGFpckVFRQogX19aTjdXZWJDb3JlNFBhZ2Ux
NWRpZE1vdmVPbnNjcmVlbkV2CiBfX1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUVi
CiBfX1pON1dlYkNvcmU0UGFnZTE2c2V0RGVmZXJzTG9hZGluZ0ViCi1fX1pON1dlYkNvcmU0UGFn
ZTE3YWRkU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFFCiBfX1pON1dlYkNvcmU0
UGFnZTE3d2lsbE1vdmVPZmZzY3JlZW5FdgogX19aTjdXZWJDb3JlNFBhZ2UxOHJlbW92ZVNjaGVk
dWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNjaGVkdWxlUGFpckVFRQogX19aTjdXZWJD
b3JlNFBhZ2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNv
cmU0UGFnZTE5dmlzaXRlZFN0YXRlQ2hhbmdlZEVQTlNfOVBhZ2VHcm91cEV5Ci1fX1pON1dlYkNv
cmU0UGFnZTIwcmVtb3ZlU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFFCiBfX1pO
N1dlYkNvcmU0UGFnZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZgogX19aTjdXZWJDb3JlNFBhZ2Uy
MHVubWFya0FsbFRleHRNYXRjaGVzRXYKIF9fWk43V2ViQ29yZTRQYWdlMjFtYXJrQWxsTWF0Y2hl
c0ZvclRleHRFUktOM1dURjZTdHJpbmdFamJqCkBAIC0xMDQ2LDEyICsxMDQ0LDE0IEBAIF9fWk43
V2ViQ29yZTlGcmFtZVZpZXcxNHNldE5lZWRzTGF5b3V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcxNHNldFRyYW5zcGFyZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldE1hcmdpbkhl
aWdodEVpCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTZzZXRQYWludEJlaGF2aW9yRWoKK19fWk43
V2ViQ29yZTlGcmFtZVZpZXcxN2FkZFNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVh
RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3cGFpbnRDb250cm9sVGludHNFdgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE3c2V0U2Nyb2xsUG9zaXRpb25FUktOU184SW50UG9pbnRFCiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTh1cGRhdGVDb250cm9sVGludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xs
RWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmdNb2RlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcy
MHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzIxZmx1c2hEZWZlcnJlZFJlcGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyMnNldEJhc2VCYWNrZ3JvdW5kQ29sb3JFUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjN1cGRhdGVDYW5IYXZlU2Nyb2xsYmFyc0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggMDg4YjA1YzZmMzljYTljZjViZmI2ZTFkYWYzNjI3MDcwODI4ZmY3NS4u
ZTMwYjQyZDk2OWViNmNjMmRiNTk2ZTIxYjlkN2JhMmVkN2E4Zjg4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTY1Niw4ICsxNjU2LDEwIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxheWVyID0gbGF5ZXJGb3JO
b2RlKGhvdmVyZWROb2RlLmlubmVyTm9kZSgpKSkgewotICAgICAgICBpZiAocGFnZS0+Y29udGFp
bnNTY3JvbGxhYmxlQXJlYShsYXllcikpCi0gICAgICAgICAgICBsYXllci0+bW91c2VNb3ZlZElu
Q29udGVudEFyZWEoKTsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFt
ZS0+dmlldygpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5jb250YWluc1Njcm9sbGFi
bGVBcmVhKGxheWVyKSkKKyAgICAgICAgICAgICAgICBsYXllci0+bW91c2VNb3ZlZEluQ29udGVu
dEFyZWEoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fZnJhbWUtPnZpZXcoKSkKQEAgLTIxMTcsMTAgKzIxMTksMTQgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0
IFBsYXRmb3JtTW8KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChwYWdlICYmIChs
YXllckZvckxhc3ROb2RlICYmICghbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSB8fCBsYXllckZvck5v
ZGVVbmRlck1vdXNlICE9IGxheWVyRm9yTGFzdE5vZGUpKSkgewogICAgICAgICAgICAgLy8gVGhl
IG1vdXNlIGhhcyBtb3ZlZCBiZXR3ZWVuIGxheWVycy4KLSAgICAgICAgICAgIGlmIChwYWdlLT5j
b250YWluc1Njcm9sbGFibGVBcmVhKGxheWVyRm9yTGFzdE5vZGUpKQotICAgICAgICAgICAgICAg
IGxheWVyRm9yTGFzdE5vZGUtPm1vdXNlRXhpdGVkQ29udGVudEFyZWEoKTsKKyAgICAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSkgeworICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1l
LT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lVmlldy0+Y29udGFpbnNT
Y3JvbGxhYmxlQXJlYShsYXllckZvckxhc3ROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxheWVyRm9yTGFzdE5vZGUtPm1vdXNlRXhpdGVkQ29udGVudEFyZWEoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYg
KG1fbm9kZVVuZGVyTW91c2UgJiYgKCFtX2xhc3ROb2RlVW5kZXJNb3VzZSB8fCBtX2xhc3ROb2Rl
VW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAg
ICAgICAgLy8gVGhlIG1vdXNlIGhhcyBtb3ZlZCBiZXR3ZWVuIGZyYW1lcy4KICAgICAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBtX25vZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpLT5mcmFtZSgp
KSB7CkBAIC0yMTI5LDEwICsyMTM1LDE0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3Vz
ZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocGFnZSAmJiAobGF5ZXJGb3JOb2RlVW5kZXJN
b3VzZSAmJiAoIWxheWVyRm9yTGFzdE5vZGUgfHwgbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSAhPSBs
YXllckZvckxhc3ROb2RlKSkpIHsKICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBoYXMgbW92ZWQg
YmV0d2VlbiBsYXllcnMuCi0gICAgICAgICAgICBpZiAocGFnZS0+Y29udGFpbnNTY3JvbGxhYmxl
QXJlYShsYXllckZvck5vZGVVbmRlck1vdXNlKSkKLSAgICAgICAgICAgICAgICBsYXllckZvck5v
ZGVVbmRlck1vdXNlLT5tb3VzZUVudGVyZWRDb250ZW50QXJlYSgpOworICAgICAgICAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG1fbm9kZVVuZGVyTW91c2UtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJs
ZUFyZWEobGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBs
YXllckZvck5vZGVVbmRlck1vdXNlLT5tb3VzZUVudGVyZWRDb250ZW50QXJlYSgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAobV9sYXN0Tm9kZVVuZGVyTW91c2UgJiYgbV9sYXN0Tm9kZVVuZGVyTW91c2UtPmRvY3Vt
ZW50KCkgIT0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgbV9sYXN0Tm9kZVVu
ZGVyTW91c2UgPSAwOwogICAgICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYzJjMDNlNWUzYTA2
NDNjM2MzMWRiOWNjMjkyMGZmMTgzMjFjMTI5Ni4uNTE0MjZhMzA4NjI0Yjk4NTg4YjBlMDZmOTFj
YjZkNjQ4MWFjOGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApA
QCAtNTgyLDYgKzU4MiwxNCBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wg
YWN0aXZlKQogICAgICAgICBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZE5vZGUobV9m
b2N1c2VkRnJhbWUtPmRvY3VtZW50KCksIGFjdGl2ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnRl
bnRBcmVhRGlkU2hvd09ySGlkZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIGJvb2wg
ZGlkU2hvdykKK3sKKyAgICBpZiAoZGlkU2hvdykKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPmNv
bnRlbnRBcmVhRGlkU2hvdygpOworICAgIGVsc2UKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPmNv
bnRlbnRBcmVhRGlkSGlkZSgpOworfQorCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Q29udGFp
bmluZ1dpbmRvd0lzVmlzaWJsZShib29sIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpCiB7CiAg
ICAgaWYgKG1fY29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZSA9PSBjb250YWluaW5nV2luZG93SXNW
aXNpYmxlKQpAQCAtNTkzLDEzICs2MDEsMjIgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldENv
bnRhaW5pbmdXaW5kb3dJc1Zpc2libGUoYm9vbCBjb250YWluaW5nV2luZG93SXNWaXNpYmwKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb25zdCBIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IG1fcGFnZS0+c2Nyb2xsYWJsZUFyZWFT
ZXQoKSkgewotICAgICAgICBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IAotICAgICAgICBmb3IgKEhhc2hTZXQ8U2Ny
b2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJlYXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKCFjb250YWluaW5nV2luZG93
SXNWaXNpYmxlKQotICAgICAgICAgICAgICAgICgqaXQpLT5jb250ZW50QXJlYURpZEhpZGUoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAoKml0KS0+Y29udGVudEFyZWFEaWRT
aG93KCk7CisgICAgY29udGVudEFyZWFEaWRTaG93T3JIaWRlKHZpZXcsIGNvbnRhaW5pbmdXaW5k
b3dJc1Zpc2libGUpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAg
ICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICgh
ZnJhbWVWaWV3KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY29uc3QgSGFzaFNl
dDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFi
bGVBcmVhcygpOworICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhcykKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFy
ZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBTY3JvbGxhYmxlQXJl
YSogc2Nyb2xsYWJsZUFyZWEgPSAqaXQ7CisgICAgICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFy
ZWEtPmlzT25BY3RpdmVQYWdlKCkpOworCisgICAgICAgICAgICBjb250ZW50QXJlYURpZFNob3dP
ckhpZGUoc2Nyb2xsYWJsZUFyZWEsIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOwogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDg5ZTYyODYyMGZm
M2Q3ZmVjZDY3MWJhMzkzYzRhNzhkMGMxMDdmYTQuLmQwYTEwYzhmMzAyYjhlYjVhMjI4ZWQ5M2Fl
YTg0OTlhMzBmMjQzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE1MiwxNiAr
MTUyLDE3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFtZSkKIHsKICAgICBpbml0
KCk7CiAKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgbV9wYWdlID0gcGFnZTsKLSAgICAgICAgICAgIG1f
cGFnZS0+YWRkU2Nyb2xsYWJsZUFyZWEodGhpcyk7CisgICAgLy8gRklYTUU6IENhbiBtX2ZyYW1l
IGV2ZXIgYmUgbnVsbCBoZXJlPworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBpZiAobV9mcmFtZSA9PSBtX3BhZ2UtPm1haW5GcmFtZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShT
Y3JvbGxFbGFzdGljaXR5QWxsb3dlZCk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6
OnNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9mcmFtZSA9
PSBwYWdlLT5tYWluRnJhbWUoKSkgeworICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0VmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkKTsKKyAgICAgICAgU2Ny
b2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNp
dHlBbGxvd2VkKTsKICAgICB9CiB9CiAKQEAgLTIwMiw5ICsyMDMsNiBAQCBGcmFtZVZpZXc6On5G
cmFtZVZpZXcoKQogICAgIEFTU0VSVCghbV9zY3JvbGxDb3JuZXIpOwogICAgIEFTU0VSVChtX2Fj
dGlvblNjaGVkdWxlci0+aXNFbXB0eSgpKTsKIAotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1f
cGFnZS0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7Ci0KICAgICBpZiAobV9mcmFtZSkgewog
ICAgICAgICBBU1NFUlQobV9mcmFtZS0+dmlldygpICE9IHRoaXMgfHwgIW1fZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKTsKICAgICAgICAgUmVuZGVyUGFydCogcmVuZGVyZXIgPSBtX2ZyYW1lLT5v
d25lclJlbmRlcmVyKCk7CkBAIC0xMjQyLDggKzEyNDAsOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVt
b3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QqIG9iamVjdCkKIHZvaWQgRnJh
bWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGZsb2F0IHNjYWxlLCBmbG9hdCB4
LCBmbG9hdCB5LCBab29tQW5pbWF0aW9uU3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlID09
IFpvb21BbmltYXRpb25GaW5pc2hpbmcpIHsKLSAgICAgICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVG
YWN0b3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAqIHNjYWxlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChzY2FsZSAqIHNjcm9sbFgoKSAtIHgsIHNjYWxl
ICogc2Nyb2xsWSgpIC0geSkpOworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihwYWdlLT5wYWdlU2Nh
bGVGYWN0b3IoKSAqIHNjYWxlLCBJbnRQb2ludChzY2FsZSAqIHNjcm9sbFgoKSAtIHgsIHNjYWxl
ICogc2Nyb2xsWSgpIC0geSkpOwogICAgICAgICBzY3JvbGxBbmltYXRvcigpLT5yZXNldFpvb20o
KTsKICAgICB9CiAKQEAgLTI1NzUsMTggKzI1NzMsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEFu
aW1hdG9yc0FyZUFjdGl2ZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IHBhZ2Ut
PnNjcm9sbGFibGVBcmVhU2V0KCk7Ci0gICAgaWYgKCFzY3JvbGxhYmxlQXJlYXMpCisgICAgc2Ny
b2xsQW5pbWF0b3IoKS0+c2V0SXNBY3RpdmUoKTsKKworICAgIGlmICghbV9zY3JvbGxhYmxlQXJl
YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgCi0gICAgZm9yIChIYXNo
U2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgZXh0
cmEgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBTY3JvbGxhYmxlQXJlYSBpcyBvbiBhbiBhY3RpdmUg
cGFnZSBuZWVkcyAKLSAgICAgICAgLy8gdG8gYmUgaGVyZSBhcyBsb25nIGFzIHRoZSBTY3JvbGxh
YmxlQXJlYSBIYXNoU2V0IGxpdmVzIG9uIFBhZ2UuIEJ1dCBpdCBzaG91bGQgcmVhbGx5IGJlCi0g
ICAgICAgIC8vIG1vdmVkIHRvIHRoZSB0b3AtbGV2ZWwgRG9jdW1lbnQgb3IgYSBzaW1pbGFyIGNs
YXNzIHRoYXQgcmVhbGx5IHJlcHJlc2VudHMgYSBzaW5nbGUgCi0gICAgICAgIC8vIHdlYiBwYWdl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3NjIKLSAgICAgICAg
aWYgKCgqaXQpLT5pc09uQWN0aXZlUGFnZSgpKQotICAgICAgICAgICAgKCppdCktPnNjcm9sbEFu
aW1hdG9yKCktPnNldElzQWN0aXZlKCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVBcmVh
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9
IG1fc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9ICppdDsKKworICAgICAgICBBU1NFUlQoc2Ny
b2xsYWJsZUFyZWEtPmlzT25BY3RpdmVQYWdlKCkpOworICAgICAgICBzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsQW5pbWF0b3IoKS0+c2V0SXNBY3RpdmUoKTsKICAgICB9CiB9CiAKQEAgLTI1OTYsMjEg
KzI1OTIsMjYgQEAgdm9pZCBGcmFtZVZpZXc6Om5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxs
UGFpbnQoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBwYWdlLT5zY3Jv
bGxhYmxlQXJlYVNldCgpOwotICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgIGNvbnRlbnRB
cmVhV2lsbFBhaW50KCk7CisKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IAotICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxl
QXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+Y29udGVudEFyZWFXaWxsUGFpbnQoKTsKKyAg
ICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Nj
cm9sbGFibGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gbV9zY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVh
ID0gKml0OworCisgICAgICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYS0+aXNPbkFjdGl2ZVBhZ2Uo
KSk7CisgICAgICAgIHNjcm9sbGFibGVBcmVhLT5jb250ZW50QXJlYVdpbGxQYWludCgpOworICAg
IH0KIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0CiB7
CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2Ut
PnNldHRpbmdzKCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCktPnNjcm9sbEFu
aW1hdG9yRW5hYmxlZCgpOworICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQor
ICAgICAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3MoKS0+c2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7
CiAjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMzI2Miw2ICszMjYzLDQzIEBA
IHZvaWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCiAg
ICAgbV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja1JlcGFpbnRzOwogfQogCit2b2lkIEZyYW1l
Vmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQor
eworICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFz
ID0gYWRvcHRQdHIobmV3IFNjcm9sbGFibGVBcmVhU2V0KTsKKyAgICBtX3Njcm9sbGFibGVBcmVh
cy0+YWRkKHNjcm9sbGFibGVBcmVhKTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIW1f
c2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICByZXR1cm47CisgICAgbV9zY3JvbGxhYmxlQXJlYXMt
PnJlbW92ZShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3Ojpjb250YWluc1Nj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIG1fc2Nyb2xsYWJsZUFyZWFzLT5jb250YWlucyhzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3Zv
aWQgRnJhbWVWaWV3OjphZGRDaGlsZChQYXNzUmVmUHRyPFdpZGdldD4gd2lkZ2V0KQoreworICAg
IGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIGFkZFNjcm9sbGFibGVBcmVhKHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldC5nZXQoKSkpOworCisgICAgU2Nyb2xsVmlldzo6
YWRkQ2hpbGQod2lkZ2V0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnJlbW92ZUNoaWxkKFdpZGdl
dCogd2lkZ2V0KQoreworICAgIGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJl
bW92ZVNjcm9sbGFibGVBcmVhKHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCkpOworCisg
ICAgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQod2lkZ2V0KTsKK30KKwogYm9vbCBGcmFtZVZpZXc6
OmlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcm9vdCA9IHJv
b3RSZW5kZXJlcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDQ2NmE4ODkzOWZi
YTg2ZTlhOTYxNWYyZjM3ZjViODAzMzExOTliOWYuLmNkOGVhYTEyOGNiNTBhYjA1ZmY0OWM3ZjFk
NWRjMTg3MGFmODBhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzA4LDYgKzMwOCwx
NSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50cygpIHsgbV90cmFja2Vk
UmVwYWludFJlY3RzLmNsZWFyKCk7IH0KICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRyYWNr
ZWRSZXBhaW50UmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZWRSZXBhaW50UmVjdHM7IH0K
IAorICAgIHR5cGVkZWYgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+IFNjcm9sbGFibGVBcmVhU2V0
OworICAgIHZvaWQgYWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICB2b2lk
IHJlbW92ZVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CisgICAgYm9vbCBjb250YWlu
c1Njcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKikgY29uc3Q7CisgICAgY29uc3QgU2Nyb2xs
YWJsZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFzLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxX
aWRnZXQ+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kikg
T1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNG
YXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRv
U2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9s
bENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CkBAIC0zNzMsNyAr
MzgyLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VU
aGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xs
QW5pbWF0b3JFbmFibGVkKCkgY29uc3Q7CiAKQEAgLTQ3Niw4ICs0ODQsNiBAQCBwcml2YXRlOgog
ICAgIC8vIFJlbmRlcmVyIHRvIGhvbGQgb3VyIGN1c3RvbSBzY3JvbGwgY29ybmVyLgogICAgIFJl
bmRlclNjcm9sbGJhclBhcnQqIG1fc2Nyb2xsQ29ybmVyOwogCi0gICAgUGFnZSogbV9wYWdlOwot
CiAgICAgLy8gSWYgdHJ1ZSwgYXV0b21hdGljYWxseSByZXNpemUgdGhlIGZyYW1lIHZpZXcgYXJv
dW5kIGl0cyBjb250ZW50LgogICAgIGJvb2wgbV9zaG91bGRBdXRvU2l6ZTsKICAgICBib29sIG1f
aW5BdXRvU2l6ZTsKQEAgLTQ4Niw2ICs0OTIsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSB1cHBl
ciBib3VuZCBvbiB0aGUgc2l6ZSB3aGVuIGF1dG9zaXppbmcuCiAgICAgSW50U2l6ZSBtX21heEF1
dG9TaXplOwogCisgICAgT3duUHRyPFNjcm9sbGFibGVBcmVhU2V0PiBtX3Njcm9sbGFibGVBcmVh
czsKKwogICAgIHN0YXRpYyBkb3VibGUgc19kZWZlcnJlZFJlcGFpbnREZWxheTsKICAgICBzdGF0
aWMgZG91YmxlIHNfaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKICAg
ICBzdGF0aWMgZG91YmxlIHNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggZThjMDVlNTZhYzQwYzE5ZTQ5ZDlkMzBiNjhiMzBlZTRmZWFi
NDE1Mi4uNDkyZTk0OWVlMWUzM2NjMGU5NGE0OTM4NjlhMDY4YmQ2MWY3OWRiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yMTEsMTIgKzIxMSw2IEBAIFBhZ2U6On5QYWdlKCkKICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50
cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZnJhbWUtPnBhZ2VEZXN0cm95ZWQoKTsKIAotICAgIGlm
IChtX3Njcm9sbGFibGVBcmVhU2V0KSB7Ci0gICAgICAgIFNjcm9sbGFibGVBcmVhU2V0Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX3Njcm9sbGFibGVBcmVhU2V0LT5lbmQoKTsgCi0gICAgICAgIGZv
ciAoU2Nyb2xsYWJsZUFyZWFTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zY3JvbGxhYmxlQXJl
YVNldC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCktPmRpc2Nv
bm5lY3RGcm9tUGFnZSgpOwotICAgIH0KLQogICAgIG1fZWRpdG9yQ2xpZW50LT5wYWdlRGVzdHJv
eWVkKCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTAyNiwyNyArMTAyMCw2IEBAIHZv
aWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgcGx1Z2luVmll
d0Jhc2VzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYVNldCkKLSAgICAg
ICAgbV9zY3JvbGxhYmxlQXJlYVNldCA9IGFkb3B0UHRyKG5ldyBTY3JvbGxhYmxlQXJlYVNldCk7
Ci0gICAgbV9zY3JvbGxhYmxlQXJlYVNldC0+YWRkKHNjcm9sbGFibGVBcmVhKTsKLX0KLQotdm9p
ZCBQYWdlOjpyZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFy
ZWEpCi17Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhU2V0KQotICAgICAgICByZXR1cm47Ci0g
ICAgbV9zY3JvbGxhYmxlQXJlYVNldC0+cmVtb3ZlKHNjcm9sbGFibGVBcmVhKTsKLX0KLQotYm9v
bCBQYWdlOjpjb250YWluc1Njcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxl
QXJlYSkgY29uc3QKLXsKLSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFTZXQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVNldC0+Y29udGFpbnMoc2Ny
b2xsYWJsZUFyZWEpOwotfQotCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBQYWdlOjpjaGVj
a0ZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGExMjQz
MmRjOTI5OTYwZDMyYjU0MWI1YzFiOTg0NTdkYzg3MzNiZWIuLjVmNmUyMDY0OWE4MTI4YTVjOGI4
NGE4ZTkxM2U3MzBkM2E4OWIwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zMzMsMTIgKzMzMyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0VVJMc0FyZUFs
bG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgamF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgY29u
c3Q7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4gU2Nyb2xsYWJs
ZUFyZWFTZXQ7Ci0gICAgICAgIHZvaWQgYWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEq
KTsKLSAgICAgICAgdm9pZCByZW1vdmVTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwot
ICAgICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKSBjb25z
dDsKLSAgICAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVhU2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVNldC5nZXQoKTsgfQotCiAgICAgICAgIC8v
IERvbid0IGFsbG93IG1vcmUgdGhhbiBhIGNlcnRhaW4gbnVtYmVyIG9mIGZyYW1lcyBpbiBhIHBh
Z2UuCiAgICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBwZXIgYm91bmQs
IGFuZCBvdGhlcndpc2UgbXV0dWFsbHkKICAgICAgICAgLy8gcmVjdXJzaXZlIGZyYW1lc2V0IHBh
Z2VzIGNhbiBxdWlja2x5IGJyaW5nIHRoZSBwcm9ncmFtIHRvIGl0cyBrbmVlcwpAQCAtNDY1LDgg
KzQ1OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBkb3VibGUgbV9taW5pbXVt
VGltZXJJbnRlcnZhbDsKIAotICAgICAgICBPd25QdHI8U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Ny
b2xsYWJsZUFyZWFTZXQ7Ci0KICAgICAgICAgYm9vbCBtX2lzRWRpdGFibGU7CiAKICNpZiBFTkFC
TEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCBiYTU4NmE0YWIxMDkxNDRhM2NlMmE0MzYyZDczODkyMDY4YjJlYWZlLi5jYjZhYjRlM2Qz
NGQzYzhlNGIzMDNiZDQxNzQxYjE3NzIxOTAxMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9ucyBm
b3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBpbnNwZWN0aW9uLgogICAgIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsg
fQotICAgIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKLSAgICB2b2lkIHJlbW92
ZUNoaWxkKFdpZGdldCopOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChQYXNzUmVmUHRyPFdp
ZGdldD4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKICAgICAKICAg
ICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhl
biBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25z
CiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRob3NlIHNjcm9sbGJhcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCAwYjQ1ODNiYmVhMGQ2YmQ3MDRl
YWIxZDA2NDE5NTI0YTc0ZjQ1NWJiLi43YjA0OWRjZDA1ZDMxMTE4OTkyYjA4NzdjODAzOGRjNmZm
NzRkMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTE2
MSw4ICsxNjEsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFu
ZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgfQotCiAgICAgdmlydHVhbCBi
b29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgdGVzdGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGJkZWM1Zjk5ODE4OTkwODcw
MzJkODkzYjMxZjJkYTNiOGUxNzJjZmEuLmZlZTI3ZTk2OGE2MmFlYjhlZDNjMmI3MWYyMDZlYjQ3
YjgwNTdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MTg1LDcgKzE4NSw2IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVuZGVyZXIpCiAgICAgLCBtX3JlZmxlY3Rpb24oMCkKICAgICAsIG1fc2Nyb2xsQ29y
bmVyKDApCiAgICAgLCBtX3Jlc2l6ZXIoMCkKLSAgICAsIG1fc2Nyb2xsYWJsZUFyZWFQYWdlKDAp
CiB7CiAgICAgbV9pc05vcm1hbEZsb3dPbmx5ID0gc2hvdWxkQmVOb3JtYWxGbG93T25seSgpOwog
CkBAIC0yMDQsOCArMjAzLDEwIEBAIFJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIoKQogICAgICAg
ICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5yZXNpemVMYXllckRlc3Ryb3llZCgpOwogICAg
IH0KIAotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhUGFnZSkKLSAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYVBhZ2UtPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgIGlmIChGcmFtZSogZnJh
bWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9s
bGFibGVBcmVhKHRoaXMpOworICAgIH0KIAogICAgIGRlc3Ryb3lTY3JvbGxiYXIoSG9yaXpvbnRh
bFNjcm9sbGJhcik7CiAgICAgZGVzdHJveVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CkBA
IC00MzQ2LDE5ICs0MzQ3LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiAgICAgdXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKTsKICNlbmRpZgotICAg
IAotICAgIGlmIChzY3JvbGxzT3ZlcmZsb3coKSkgewotICAgICAgICBpZiAoIW1fc2Nyb2xsYWJs
ZUFyZWFQYWdlKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+
ZnJhbWUoKSkgewotICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkgewotICAgICAgICAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFnZSA9IHBhZ2U7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFQYWdlLT5hZGRTY3JvbGxhYmxlQXJl
YSh0aGlzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisKKyAgICBpZiAoRnJh
bWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CisgICAgICAgICAgICBpZiAoc2Nyb2xsc092
ZXJmbG93KCkpCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0
aGlzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92
ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX3Njcm9s
bGFibGVBcmVhUGFnZSkgewotICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFnZS0+cmVtb3ZlU2Ny
b2xsYWJsZUFyZWEodGhpcyk7Ci0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFQYWdlID0gMDsKICAg
ICB9CiAgICAgCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gZGV0ZWN0IGEgc3dhcCBmcm9tIGN1c3Rv
bSB0byBuYXRpdmUgc2Nyb2xsYmFycyAoYW5kIHZpY2UgdmVyc2EpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBkZTc1ZjI0NWRhNDM3MDE2YmRhZjE5YjAyYmNmODNj
YjZhMjY4YjU0Li5kZjk5YmVjYmIzYjg4NzJlODMzNGIxNzAxNDY1NGY4OTBmNzI5NGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjY4LDggKzY2OCw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gUmVjdGFuZ2xlIGVuY29tcGFzc2luZyB0aGUgc2Nyb2xsIGNvcm5lciBh
bmQgcmVzaXplciByZWN0LgogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyQW5kUmVzaXplclJlY3Qo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fc2Ny
b2xsYWJsZUFyZWFQYWdlID0gMDsgfQotCiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBi
ZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxl
QXJlYS4KICAgICB2b2lkIHNjcm9sbFRvKGludCwgaW50KTsKIApAQCAtODY4LDggKzg2Niw2IEBA
IHByaXZhdGU6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIE93blB0cjxS
ZW5kZXJMYXllckJhY2tpbmc+IG1fYmFja2luZzsKICNlbmRpZgotCi0gICAgUGFnZSogbV9zY3Jv
bGxhYmxlQXJlYVBhZ2U7IC8vIFBhZ2Ugb24gd2hpY2ggdGhpcyBpcyByZWdpc3RlcmVkIGFzIGEg
c2Nyb2xsYWJsZSBhcmVhLgogfTsKIAogaW5saW5lIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVpP
cmRlckxpc3RzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAxYzAwMWVkZGQ4NDMzNDMzNGMzYTUwOThmOTU5YTU3NWI5YTYzNGIzLi45YjE5Yzc5ZDBl
ZTBjNTNkYTg3ODFkNjExMzc1MzIwZGQyOWNlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MiwxNyArOTIsMTcgQEAgUmVuZGVyTGlzdEJveDo6
UmVuZGVyTGlzdEJveChFbGVtZW50KiBlbGVtZW50KQogICAgIEFTU0VSVChlbGVtZW50KTsKICAg
ICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsKICAgICBBU1NFUlQoZWxlbWVudC0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZykpOwotICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUoKS0+cGFnZSgpKSB7Ci0gICAgICAgIG1fcGFnZSA9IHBhZ2U7Ci0gICAgICAgIG1fcGFn
ZS0+YWRkU2Nyb2xsYWJsZUFyZWEodGhpcyk7Ci0gICAgfQorCisgICAgaWYgKEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWUoKS0+dmlldygpKQorICAgICAgICBmcmFtZVZpZXctPmFkZFNjcm9s
bGFibGVBcmVhKHRoaXMpOwogfQogCiBSZW5kZXJMaXN0Qm94Ojp+UmVuZGVyTGlzdEJveCgpCiB7
CiAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoZmFsc2UpOwotICAgIGlmIChtX3BhZ2UpCi0g
ICAgICAgIG1fcGFnZS0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7CisKKyAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSgpLT52aWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+
cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6dXBk
YXRlRnJvbUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgK
aW5kZXggNGQ4YjM1ZmFmNTg3OWVjNDZmZGYxZTA1YTZjZjlkMTMzZGFkOWRlOS4uZWY5NDcyZWJl
ODllZTJhZDE3Y2Y2ODU0MjgxNzg5MjllNTNhYzQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xMjEsOCArMTIxLDYgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9Ci0K
ICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGVu
IHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xsVG8o
aW50IG5ld09mZnNldCk7CiAKQEAgLTE0Nyw4ICsxNDUsNiBAQCBwcml2YXRlOgogICAgIGludCBt
X2luZGV4T2Zmc2V0OwogCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwotCi0gICAgUGFn
ZSogbV9wYWdlOwogfTsKIAogaW5saW5lIFJlbmRlckxpc3RCb3gqIHRvUmVuZGVyTGlzdEJveChS
ZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1Njcm9sbGJhckdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9s
bGJhckdyb3VwLmNwcAppbmRleCBhZDRlZjgzY2NlZDBmZTgyM2ZjZjUxN2IwZjkwYTc2YjM3YzI1
NTY5Li41NzlkYzdhYTczOTVjMjdjMjMzMGFiNjA0YzdjNDcyNmM3YzI0NjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyR3JvdXAuaCIKIAot
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJTY3Jv
bGxiYXIuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlJlY3QuaCIKQEAgLTM2LDIwICszNiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNjcm9sbGJhckdyb3VwOjpTY3JvbGxiYXJHcm91cChQ
YWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCitTY3JvbGxiYXJHcm91cDo6U2Nyb2xsYmFy
R3JvdXAoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCisgICAgOiBtX2ZyYW1lVmlldyhmcmFtZVZpZXcp
CiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxiYXIoMCkKICAgICAsIG1fdmVydGljYWxTY3JvbGxi
YXIoMCkKIHsKLSAgICBtX3BhZ2UtPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgIG1fZnJh
bWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIAogU2Nyb2xsYmFyR3JvdXA6On5T
Y3JvbGxiYXJHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX2hvcml6b250YWxTY3JvbGxiYXIpOwog
ICAgIEFTU0VSVCghbV92ZXJ0aWNhbFNjcm9sbGJhcik7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAg
ICAgbV9wYWdlLT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICBtX2ZyYW1lVmlldy0+
cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyR3JvdXA6OnNj
cm9sbGJhckNyZWF0ZWQoV2ViU2Nyb2xsYmFySW1wbCogc2Nyb2xsYmFyKQpAQCAtMjQ5LDkgKzI0
OCw0IEBAIGJvb2wgU2Nyb2xsYmFyR3JvdXA6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJHcm91cDo6ZGlzY29ubmVjdEZyb21QYWdl
KCkKLXsKLSAgICBtX3BhZ2UgPSAwOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oCmluZGV4IDkwOTNmMzNkZDI5
NTZmMDRlZWIxMDAzNGQ4ZWNlMzgyNzJkYjRmYzguLjQ0YmUyY2Y1MTk4MTAxNDUyMDZhYWZkNTJi
NmI4OWY5YjNmODM1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Nj
cm9sbGJhckdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFy
R3JvdXAuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUGFnZTsKK2NsYXNzIEZyYW1lVmlldzsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYlNjcm9sbGJhckltcGw7
CiAKIGNsYXNzIFNjcm9sbGJhckdyb3VwIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTY3JvbGxiYXJHcm91cChXZWJDb3JlOjpQYWdlKik7
CisgICAgZXhwbGljaXQgU2Nyb2xsYmFyR3JvdXAoV2ViQ29yZTo6RnJhbWVWaWV3Kik7CiAgICAg
flNjcm9sbGJhckdyb3VwKCk7CiAKICAgICB2b2lkIHNjcm9sbGJhckNyZWF0ZWQoV2ViU2Nyb2xs
YmFySW1wbCopOwpAQCAtNzIsMTAgKzcyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdEZyb21QYWdlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6UGFnZSogbV9w
YWdlOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFtZVZpZXc7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9sYXN0TW91c2VQb3NpdGlvbjsKICAgICBXZWJTY3JvbGxiYXJJbXBsKiBtX2hv
cml6b250YWxTY3JvbGxiYXI7CiAgICAgV2ViU2Nyb2xsYmFySW1wbCogbV92ZXJ0aWNhbFNjcm9s
bGJhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5jcHAKaW5kZXggYThmNmQxMjZiY2EzNDUxZDNkNmE3MmJiMmQ0NWY3ZTZiZDdk
MGE3Ni4uMTI5MDg4ZWY0ZjFmM2YzMzI3MjZjMjNjMjcyNzc1NmZjYWNiMmFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAKQEAgLTQ5Myw3ICs0OTMsNyBAQCBXZWJDb3JlOjpMYXllckNocm9taXVtKiBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIFNjcm9sbGJhckdyb3VwKiBXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpzY3JvbGxiYXJHcm91cCgpCiB7CiAgICAgaWYgKCFtX3Njcm9s
bGJhckdyb3VwKQotICAgICAgICBtX3Njcm9sbGJhckdyb3VwID0gYWRvcHRQdHIobmV3IFNjcm9s
bGJhckdyb3VwKG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKSk7CisgICAg
ICAgIG1fc2Nyb2xsYmFyR3JvdXAgPSBhZG9wdFB0cihuZXcgU2Nyb2xsYmFyR3JvdXAobV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCkpKTsKICAgICByZXR1cm4gbV9zY3JvbGxi
YXJHcm91cC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcAppbmRleCAxM2Y5N2Q5NmYzNmY5N2Y3
NjZkNTkwZmVjMjliMWJjZGY0YmMwNWQ3Li45MDRhODNkY2Q4NzIwOWQwMzgzZTUzOTdhMWI1NjEw
ZjQ2Y2JkZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0J1aWx0SW5QREZWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQnVp
bHRJblBERlZpZXc6OmNhbGN1bGF0ZVNpemVzKCkKIAogYm9vbCBCdWlsdEluUERGVmlldzo6aW5p
dGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5wYWdlKCktPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT52aWV3KCktPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpOwogCiAgICAgLy8g
TG9hZCB0aGUgc3JjIFVSTCBpZiBuZWVkZWQuCiAgICAgbV9zb3VyY2VVUkwgPSBwYXJhbWV0ZXJz
LnVybDsKQEAgLTM2MSw4ICszNjEsOCBAQCBib29sIEJ1aWx0SW5QREZWaWV3Ojppbml0aWFsaXpl
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB2b2lkIEJ1aWx0SW5QREZWaWV3OjpkZXN0
cm95KCkKIHsKICAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5yZW1vdmVTY3Jv
bGxhYmxlQXJlYSh0aGlzKTsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9m
cmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3Zl
U2Nyb2xsYWJsZUFyZWEodGhpcyk7CiAgICAgfQogCiAgICAgZGVzdHJveVNjcm9sbGJhcihIb3Jp
em9udGFsU2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA2ZWU0YmYzYzU5NDhiYWJjNjE5NTU3
ZTY5NmNkZDQzZTVjNWMyOGVlLi5jMTg1YzE4NzEyZTk3MzcwMTU5OGZlOThmNTZhZDY0MTk0Y2Nk
NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1
aWx0SW5QREZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9CdWlsdEluUERGVmlldy5oCkBAIC0xMzgsNyArMTM4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0ICB7IHJl
dHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9mcmFtZSA9IDA7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwgU2Nyb2xsQW5pbWF0b3JN
YWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVyLCB3YWl0aW5nIGZvciBhIGdvb2Qg
dGltZSB0byBhbmltYXRlLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQo
aW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgem9vbUFu
aW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChmbG9hdCwgZmxvYXQsIGZsb2F0LCBab29tQW5pbWF0aW9u
U3RhdGUpIHsgfQo=
</data>
<flag name="review"
          id="127528"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>