<?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>23623</bug_id>
          
          <creation_ts>2009-01-29 09:54:56 -0800</creation_ts>
          <short_desc>Windowed Flash instances aren&apos;t captured when a WebView receives a WM_PRINTCLIENT message</short_desc>
          <delta_ts>2009-01-29 11:21:37 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23691</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>andersca</cc>
    
    <cc>hyatt</cc>
    
    <cc>jhoneycutt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107533</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-29 09:54:56 -0800</bug_when>
    <thetext>To reproduce:

1. Go to &lt;http://homestarrunner.com/&gt;
2. Drag a tab out of the Safari window

The Flash instance doesn&apos;t appear in the dragged-out tab mini-window. This is because Flash isn&apos;t responding to WM_PRINTCLIENT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107534</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-29 09:56:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/6513921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107537</commentid>
    <comment_count>2</comment_count>
      <attachid>27151</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-29 10:18:38 -0800</bug_when>
    <thetext>Created attachment 27151
patch v1 + ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107539</commentid>
    <comment_count>3</comment_count>
      <attachid>27151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-29 10:26:28 -0800</bug_when>
    <thetext>Comment on attachment 27151
patch v1 + ChangeLog

&gt; +    sysCallID = *reinterpret_cast&lt;unsigned*&gt;(pProc + 1);

This is an unaligned read. Is this the best way to do this? In other cases in the past I&apos;ve done this sort of thing by fetching the bytes individually and shifting them into place. On some platforms that was required.

&gt; +    *reinterpret_cast&lt;unsigned*&gt;(pProc + 1) = reinterpret_cast&lt;unsigned&gt;(pNewProc) - reinterpret_cast&lt;unsigned&gt;(pProc + 5);

Why do we need to cast pNewProc to an integer? The difference between two pointers is an integer, so normally I&apos;d expect the variables to be cast to a pointer type. Or to intptr_t.

&gt; +void PluginView::setUpOffscreenPaintingHooks()

Can this be a non-member function instead? I&apos;d prefer to see it not mentioned in the header file at all.

&gt; +void PluginView::paintWindowedPluginIntoContext(GraphicsContext* context, const IntRect&amp; rect) const

I don&apos;t think the words &quot;IntoContext&quot; add much in the name of this function. The fact that the function takes a context seems to be enough.

&gt; +        Fix Bug 23623: Windowed Flash instances don&apos;t respond to
&gt; +        WM_PRINTCLIENT

I think the name of the bug is wrong. This is describing what&apos;s wrong with the plug-in, not what effects this has on WebKit clients nor what we&apos;re changing about WebKit. The title of the bug will still be true after it&apos;s fixed.

&gt; -void WebView::updateBackingStore(FrameView* frameView, HDC dc, bool backingStoreCompletelyDirty)
&gt; +void WebView::updateBackingStore(FrameView* frameView, HDC dc, bool backingStoreCompletelyDirty, bool shouldIncludeChildWindows)

Booleans stink for things like this! I much prefer enums or avoiding the boolean entirely.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107543</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-29 10:41:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 27151 [review])
&gt; &gt; +    sysCallID = *reinterpret_cast&lt;unsigned*&gt;(pProc + 1);
&gt; 
&gt; This is an unaligned read. Is this the best way to do this? In other cases in
&gt; the past I&apos;ve done this sort of thing by fetching the bytes individually and
&gt; shifting them into place. On some platforms that was required.

I don&apos;t know if it&apos;s the best way.

&gt; &gt; +    *reinterpret_cast&lt;unsigned*&gt;(pProc + 1) = reinterpret_cast&lt;unsigned&gt;(pNewProc) - reinterpret_cast&lt;unsigned&gt;(pProc + 5);
&gt; 
&gt; Why do we need to cast pNewProc to an integer? The difference between two
&gt; pointers is an integer, so normally I&apos;d expect the variables to be cast to a
&gt; pointer type. Or to intptr_t.

The code is this way currently because that&apos;s how it was on fengyuan.com (though the original code used C-style casts). I&apos;ll try changing to casting to intptr_t.

&gt; &gt; +void PluginView::setUpOffscreenPaintingHooks()
&gt; 
&gt; Can this be a non-member function instead? I&apos;d prefer to see it not mentioned
&gt; in the header file at all.

It can be a non-member function if I pass in pointers to the HookedBeginPaint/HookedEndPaint functions (which, come to think of it, should start with lowercase letters). I&apos;ll make that change.

&gt; &gt; +void PluginView::paintWindowedPluginIntoContext(GraphicsContext* context, const IntRect&amp; rect) const
&gt; 
&gt; I don&apos;t think the words &quot;IntoContext&quot; add much in the name of this function.
&gt; The fact that the function takes a context seems to be enough.

The reason I added &quot;IntoContext&quot; is because we already have a paint() function that takes a GraphicsContext that is called for both windowed and windowless plugins, but that normally doesn&apos;t do anything for windowed plugins. So I think &quot;IntoContext&quot; adds a little clarity, but maybe not very much.

&gt; &gt; +        Fix Bug 23623: Windowed Flash instances don&apos;t respond to
&gt; &gt; +        WM_PRINTCLIENT
&gt; 
&gt; I think the name of the bug is wrong. This is describing what&apos;s wrong with the
&gt; plug-in, not what effects this has on WebKit clients nor what we&apos;re changing
&gt; about WebKit. The title of the bug will still be true after it&apos;s fixed.

OK, I&apos;ll retitle it to &quot;Windowed Flash instances aren&apos;t captured when a WebView receives a WM_PRINTCLIENT message&quot;

&gt; &gt; -void WebView::updateBackingStore(FrameView* frameView, HDC dc, bool backingStoreCompletelyDirty)
&gt; &gt; +void WebView::updateBackingStore(FrameView* frameView, HDC dc, bool backingStoreCompletelyDirty, bool shouldIncludeChildWindows)
&gt; 
&gt; Booleans stink for things like this! I much prefer enums or avoiding the
&gt; boolean entirely.

I&apos;m not sure how to avoid the boolean in this case without doing extra work every time we paint the area beneath a windowed plugin. I can switch to using an enum.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107550</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-01-29 11:21:37 -0800</bug_when>
    <thetext>Landed in r40366</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27151</attachid>
            <date>2009-01-29 10:18:38 -0800</date>
            <delta_ts>2009-01-29 10:26:28 -0800</delta_ts>
            <desc>patch v1 + ChangeLog</desc>
            <filename>0001-Fix-Bug-23623-Windowed-Flash-instances-don-t-respon.patch</filename>
            <type>text/plain</type>
            <size>24461</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBlMzhmNDQzYzlhN2I2YjM2YzdhNjI5NDFkZWZjYTUyZDRmMjNiNGQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDI5IEphbiAyMDA5IDEzOjE3OjQ5IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gRml4IEJ1ZyAy
MzYyMzogV2luZG93ZWQgRmxhc2ggaW5zdGFuY2VzIGRvbid0IHJlc3BvbmQgdG8gV01fUFJJTlRD
TElFTlQKCldlYkNvcmU6CgogICAgICAgIEZpeCBCdWcgMjM2MjM6IFdpbmRvd2VkIEZsYXNoIGlu
c3RhbmNlcyBkb24ndCByZXNwb25kIHRvCiAgICAgICAgV01fUFJJTlRDTElFTlQKCiAgICAgICAg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYyMz4KICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjUxMzkyMT4KICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjUzNjg3ND4K
CiAgICAgICAgRmxhc2ggZG9lc24ndCBzZWVtIHRvIHJlc3BvbmQgdG8gV01fUFJJTlRDTElFTlQs
IHNvIHdlIGNoYW5nZQogICAgICAgIFdNX1BSSU5UQ0xJRU5UIG1lc3NhZ2VzIGludG8gV01fUEFJ
TlQgbWVzc2FnZXMgYW5kIGhvb2sgaW50byB0aGUKICAgICAgICBCZWdpblBhaW50L0VuZFBhaW50
IEFQSXMgdG8gcmV0dXJuIHRoZSBIREMgd2UgcmVjZWl2ZWQgZnJvbQogICAgICAgIFdNX1BSSU5U
Q0xJRU5ULiBUaGlzIGNhdXNlcyB0aGUgcGx1Z2luIHRvIHBhaW50IGludG8gdGhlCiAgICAgICAg
V01fUFJJTlRDTElFTlQgSERDIHZpYSBpdHMgbm9ybWFsIFdNX1BBSU5UIGhhbmRsZXIuIFRoaXMg
dGVjaG5pcXVlCiAgICAgICAgY2FtZSBmcm9tIDxodHRwOi8vd3d3LmZlbmd5dWFuLmNvbS9hcnRp
Y2xlL3dtcHJpbnQuaHRtbD4uCgogICAgICAgIE5vIHRlc3QgcG9zc2libGUuCgogICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOiBBZGRlZAogICAgICAgIFtzZXRdU2hvdWxkSW5jbHVkZUNoaWxkV2lu
ZG93cyBvbiBXaW5kb3dzLgoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6IEFkZGVkCiAgICAgICAgbV9zaG91bGRJbmNsdWRl
Q2hpbGRXaW5kb3dzLgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CiAgICAgICAgSW5pdGlhbGl6
ZSB0aGUgbmV3IG1lbWJlci4KCiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0Q0dXaW4uY3BwOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MpOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MpOgogICAgICAgIEFkZGVkIHNpbXBsZSBz
ZXR0ZXIgYW5kIGdldHRlci4KCiAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgogICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KTogSW5pdGlhbGl6ZSB0aGUgbmV3
IG1lbWJlci4KCiAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDogQWRkZWQgbV93bVByaW50
SERDIGFuZCB2YXJpb3VzIGZ1bmN0aW9ucwogICAgICAgIHJlcXVpcmVkIGZvciBtYWtpbmcgV01f
UFJJTlRDTElFTlQgd29yay4KCiAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6SG9va2VkQmVnaW5QYWludCk6CiAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6Okhvb2tlZEVuZFBhaW50KToKICAgICAgICAoV2ViQ29y
ZTo6aG9vayk6CiAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldFVwT2Zmc2NyZWVuUGFp
bnRpbmdIb29rcyk6CiAgICAgICAgQWRkZWQuIENvZGUgd2FzIG1vZGlmaWVkIGZyb20gY29kZSBh
dmFpbGFibGUgb24gZmVuZ3l1YW4uY29tLgoKICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
d25kUHJvYyk6IFR1cm4gV01fUFJJTlRDTElFTlQgbWVzc2FnZXMgaW50bwogICAgICAgIFdNX1BB
SU5UIG1lc3NhZ2VzIGFuZCBzYXZlIG9mZiB0aGUgSERDIHRoYXQgd2UncmUgc3VwcG9zZWQgdG8g
cGFpbnQKICAgICAgICBpbnRvLgoKICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnRX
aW5kb3dlZFBsdWdpbkludG9Db250ZXh0KTogQWRkZWQuIEdldHMgYW4KICAgICAgICBIREMgZnJv
bSB0aGUgR3JhcGhpY3NDb250ZXh0LCB0cmFuc2xhdGVzIGl0IGludG8gY2xpZW50IGNvb3JkaW5h
dGVzLAogICAgICAgIGdldHMgdGhlIHBsdWdpbiB0byBkcmF3IGludG8gdGhlIEhEQyBieSBzZW5k
aW5nIGEgV01fUFJJTlRDTElFTlQKICAgICAgICBtZXNzYWdlLCBhbmQgcmV0dXJucyB0aGUgSERD
IHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCgogICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
YWludCk6IElmIHdlJ3JlIHRyeWluZyB0byBwYWludCBhIHdpbmRvd2VkCiAgICAgICAgcGx1Z2lu
IGludG8gdGhlIEdyYXBoaWNzQ29udGV4dCwgY2FsbCBwYWludFdpbmRvd2VkUGx1Z2luSW50b0Nv
bnRleHQuCgogICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojppbml0KTogQ2FsbCBzZXRVcE9m
ZnNjcmVlblBhaW50aW5nSG9va3MgdG8gbWFrZQogICAgICAgIG91ciBXTV9QUklOVENMSUVOVCB0
cmljayB3b3JrLgoKV2ViS2l0L3dpbjoKCiAgICAgICAgRml4IEJ1ZyAyMzYyMzogV2luZG93ZWQg
Rmxhc2ggaW5zdGFuY2VzIGRvbid0IHJlc3BvbmQgdG8KICAgICAgICBXTV9QUklOVENMSUVOVAoK
ICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjIzPgog
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTEzOTIxPgogICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NTM2ODc0PgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6CiAgICAgICAgKFdlYkZyYW1lOjpwYWludERvY3VtZW50UmVjdFRvQ29udGV4
dCk6CiAgICAgICAgKFdlYkZyYW1lOjpzcG9vbFBhZ2VzKToKICAgICAgICBDYWxsIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyBzbyB0aGF0IGNoaWxkCiAgICAg
ICAgd2luZG93cyB3aWxsIGJlIHBhaW50ZWQgaW50byB0aGUgR3JhcGhpY3NDb250ZXh0IHJhdGhl
ciB0aGFuIHBhaW50ZWQKICAgICAgICBkaXJlY3RseSB0byB0aGUgc2NyZWVuLgoKICAgICAgICAq
IFdlYlZpZXcuY3BwOgogICAgICAgIChXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUpOiBBZGRl
ZCBhIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MKICAgICAgICBwYXJhbWV0ZXIsIHdoaWNoIHdl
IHBhc3MgYWxvbmcgdG8gcGFpbnRJbnRvQmFja2luZ1N0b3JlLgoKICAgICAgICAoV2ViVmlldzo6
cGFpbnQpOiBUZWxsIHVwZGF0ZUJhY2tpbmdTdG9yZSB0byBpbmNsdWRlIGNoaWxkIHdpbmRvd3Mg
aWYKICAgICAgICB3ZSdyZSBub3QgcGFpbnRpbmcgdG8gdGhlIHNjcmVlbi4KCiAgICAgICAgKFdl
YlZpZXc6OnBhaW50SW50b0JhY2tpbmdTdG9yZSk6IEFkZGVkIGEgc2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cwogICAgICAgIHBhcmFtdGVyLCB3aGljaCB3ZSB1c2UgdG8gdGVsbCBvdXIgR3JhcGhp
Y3NDb250ZXh0IHdoZXRoZXIgb3Igbm90IHRvCiAgICAgICAgaW5jbHVkZSBjaGlsZCB3aW5kb3dz
LgoKICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyBw
YXJhbWV0ZXJzIHRvCiAgICAgICAgcGFpbnRJbnRvQmFja2luZ1N0b3JlIGFuZCB1cGRhdGVCYWNr
aW5nU3RvcmUuCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDYxICsrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCAgICAgICAgfCAgIDExICsrCiAuLi4vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCB8ICAgIDIgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAgfCAgIDEwICsrCiBXZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsrLQogV2ViQ29y
ZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCAgICAgICAgICAgICAgfCAgMTMxICsrKysr
KysrKysrKysrKysrKystCiBXZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzIgKysrKysKIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKystCiBXZWJLaXQvd2luL1dlYlZpZXcuaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIDExIGZpbGVzIGNoYW5nZWQs
IDI2OCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJhOTBmOC4uNzhkNzg2OSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAwOS0wMS0yOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IEJ1ZyAyMzYyMzogV2luZG93ZWQgRmxhc2ggaW5zdGFuY2VzIGRvbid0IHJl
c3BvbmQgdG8KKyAgICAgICAgV01fUFJJTlRDTElFTlQKKworICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjIzPgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjUxMzkyMT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1MzY4NzQ+CisKKyAgICAgICAg
Rmxhc2ggZG9lc24ndCBzZWVtIHRvIHJlc3BvbmQgdG8gV01fUFJJTlRDTElFTlQsIHNvIHdlIGNo
YW5nZQorICAgICAgICBXTV9QUklOVENMSUVOVCBtZXNzYWdlcyBpbnRvIFdNX1BBSU5UIG1lc3Nh
Z2VzIGFuZCBob29rIGludG8gdGhlCisgICAgICAgIEJlZ2luUGFpbnQvRW5kUGFpbnQgQVBJcyB0
byByZXR1cm4gdGhlIEhEQyB3ZSByZWNlaXZlZCBmcm9tCisgICAgICAgIFdNX1BSSU5UQ0xJRU5U
LiBUaGlzIGNhdXNlcyB0aGUgcGx1Z2luIHRvIHBhaW50IGludG8gdGhlCisgICAgICAgIFdNX1BS
SU5UQ0xJRU5UIEhEQyB2aWEgaXRzIG5vcm1hbCBXTV9QQUlOVCBoYW5kbGVyLiBUaGlzIHRlY2hu
aXF1ZQorICAgICAgICBjYW1lIGZyb20gPGh0dHA6Ly93d3cuZmVuZ3l1YW4uY29tL2FydGljbGUv
d21wcmludC5odG1sPi4KKworICAgICAgICBObyB0ZXN0IHBvc3NpYmxlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6IEFkZGVkCisgICAgICAgIFtzZXRdU2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cyBvbiBXaW5kb3dzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDogQWRkZWQKKyAgICAgICAgbV9zaG91bGRJ
bmNsdWRlQ2hpbGRXaW5kb3dzLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAgICBJ
bml0aWFsaXplIHRoZSBuZXcgbWVtYmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MpOgorICAgICAgICBB
ZGRlZCBzaW1wbGUgc2V0dGVyIGFuZCBnZXR0ZXIuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6IElu
aXRpYWxpemUgdGhlIG5ldyBtZW1iZXIuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcu
aDogQWRkZWQgbV93bVByaW50SERDIGFuZCB2YXJpb3VzIGZ1bmN0aW9ucworICAgICAgICByZXF1
aXJlZCBmb3IgbWFraW5nIFdNX1BSSU5UQ0xJRU5UIHdvcmsuCisKKyAgICAgICAgKiBwbHVnaW5z
L3dpbi9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6Okhv
b2tlZEJlZ2luUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6SG9va2VkRW5k
UGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6aG9vayk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpzZXRVcE9mZnNjcmVlblBhaW50aW5nSG9va3MpOgorICAgICAgICBBZGRlZC4gQ29k
ZSB3YXMgbW9kaWZpZWQgZnJvbSBjb2RlIGF2YWlsYWJsZSBvbiBmZW5neXVhbi5jb20uCisKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnduZFByb2MpOiBUdXJuIFdNX1BSSU5UQ0xJRU5U
IG1lc3NhZ2VzIGludG8KKyAgICAgICAgV01fUEFJTlQgbWVzc2FnZXMgYW5kIHNhdmUgb2ZmIHRo
ZSBIREMgdGhhdCB3ZSdyZSBzdXBwb3NlZCB0byBwYWludAorICAgICAgICBpbnRvLgorCisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWludFdpbmRvd2VkUGx1Z2luSW50b0NvbnRleHQp
OiBBZGRlZC4gR2V0cyBhbgorICAgICAgICBIREMgZnJvbSB0aGUgR3JhcGhpY3NDb250ZXh0LCB0
cmFuc2xhdGVzIGl0IGludG8gY2xpZW50IGNvb3JkaW5hdGVzLAorICAgICAgICBnZXRzIHRoZSBw
bHVnaW4gdG8gZHJhdyBpbnRvIHRoZSBIREMgYnkgc2VuZGluZyBhIFdNX1BSSU5UQ0xJRU5UCisg
ICAgICAgIG1lc3NhZ2UsIGFuZCByZXR1cm5zIHRoZSBIREMgdG8gdGhlIEdyYXBoaWNzQ29udGV4
dC4KKworICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnQpOiBJZiB3ZSdyZSB0cnlp
bmcgdG8gcGFpbnQgYSB3aW5kb3dlZAorICAgICAgICBwbHVnaW4gaW50byB0aGUgR3JhcGhpY3ND
b250ZXh0LCBjYWxsIHBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dC4KKworICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdCk6IENhbGwgc2V0VXBPZmZzY3JlZW5QYWludGluZ0hv
b2tzIHRvIG1ha2UKKyAgICAgICAgb3VyIFdNX1BSSU5UQ0xJRU5UIHRyaWNrIHdvcmsuCisKIDIw
MDktMDEtMjggIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4gYW5kIEdlb3JnZSBTdGFpa29zLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMjhiYjYx
My4uODAyN2QzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC0yNzIsNiArMjcyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSERD
IGdldFdpbmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmLCBib29sIHN1cHBvcnRBbHBoYUJsZW5k
ID0gdHJ1ZSwgYm9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVlKTsgLy8gVGhlIHBhc3NlZCBpbiBy
ZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZvciBjb21wb3NpdGluZyBpbnNpZGUgdHJh
bnNwYXJlbmN5IGxheWVycy4KICAgICAgICAgdm9pZCByZWxlYXNlV2luZG93c0NvbnRleHQoSERD
LCBjb25zdCBJbnRSZWN0JiwgYm9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5
Q3JlYXRlQml0bWFwID0gdHJ1ZSk7ICAgIC8vIFRoZSBwYXNzZWQgaW4gSERDIHNob3VsZCBiZSB0
aGUgb25lIGhhbmRlZCBiYWNrIGJ5IGdldFdpbmRvd3NDb250ZXh0LgogCisgICAgICAgIC8vIFdo
ZW4gc2V0IHRvIHRydWUsIGNoaWxkIHdpbmRvd3Mgc2hvdWxkIGJlIHJlbmRlcmVkIGludG8gdGhp
cyBjb250ZXh0CisgICAgICAgIC8vIHJhdGhlciB0aGFuIGFsbG93aW5nIHRoZW0ganVzdCB0byBy
ZW5kZXIgdG8gdGhlIHNjcmVlbi4gRGVmYXVsdHMgdG8KKyAgICAgICAgLy8gZmFsc2UuCisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLiBHcmFwaGljc0NvbnRl
eHQgc2hvdWxkbid0IGtub3cKKyAgICAgICAgLy8gd2hhdCBhICJ3aW5kb3ciIGlzLiBJdCB3b3Vs
ZCBiZSBtdWNoIG1vcmUgYXBwcm9wcmlhdGUgZm9yIHRoaXMgZmxhZworICAgICAgICAvLyB0byBi
ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgYWxvbmdzaWRlIHRoZSBHcmFwaGljc0NvbnRleHQsIGJ1
dCBkb2luZworICAgICAgICAvLyB0aGF0IHdvdWxkIHJlcXVpcmUgbG90cyBvZiBjaGFuZ2VzIGlu
IGNyb3NzLXBsYXRmb3JtIGNvZGUgdGhhdCB3ZQorICAgICAgICAvLyBhcmVuJ3Qgc3VyZSB3ZSB3
YW50IHRvIG1ha2UuCisgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyhi
b29sKTsKKyAgICAgICAgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkgY29uc3Q7CisK
ICAgICAgICAgY2xhc3MgV2luZG93c0JpdG1hcCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAg
ICAgIHB1YmxpYzoKICAgICAgICAgICAgIFdpbmRvd3NCaXRtYXAoSERDLCBJbnRTaXplKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAppbmRleCA4NzkzNmZmLi5iZWVlNjYwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNHLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCkBAIC0zNCw2ICszNCw3IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgICAgICwgbV9oZGMoMCkKICAgICAgICAgLCBtX3RyYW5zcGFyZW5j
eUNvdW50KDApCisgICAgICAgICwgbV9zaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKGZhbHNlKQog
I2VuZGlmCiAgICAgICAgICwgbV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0
eShmYWxzZSkKICAgICB7CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIEhEQyBtX2hk
YzsKICAgICB1bnNpZ25lZCBtX3RyYW5zcGFyZW5jeUNvdW50OworICAgIGJvb2wgbV9zaG91bGRJ
bmNsdWRlQ2hpbGRXaW5kb3dzOwogI2VuZGlmCiAKICAgICBDR0NvbnRleHRSZWYgbV9jZ0NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAKaW5kZXggYmMyZGZjNS4uZGNjYmU2YyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAt
MTczLDYgKzE3MywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250
ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvbwogICAgIG1fZGF0YS0+cmVz
dG9yZSgpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cyhib29sIGluY2x1ZGUpCit7CisgICAgbV9kYXRhLT5tX3Nob3VsZEluY2x1ZGVDaGls
ZFdpbmRvd3MgPSBpbmNsdWRlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDo6c2hvdWxkSW5j
bHVkZUNoaWxkV2luZG93cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS0+bV9zaG91bGRJ
bmNsdWRlQ2hpbGRXaW5kb3dzOworfQorCiBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6
OldpbmRvd3NCaXRtYXAoSERDIGhkYywgSW50U2l6ZSBzaXplKQogICAgIDogbV9oZGMoMCkKICAg
ICAsIG1fc2l6ZShzaXplKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDM3NDgwNzIuLjhiMWQ2
NTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTU2NSw2ICs1NjUsNyBAQCBQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGx1
Z2luUGFja2FnZSogcAogICAgICwgbV9wbHVnaW5XbmRQcm9jKDApCiAgICAgLCBtX2xhc3RNZXNz
YWdlKDApCiAgICAgLCBtX2lzQ2FsbGluZ1BsdWdpblduZFByb2MoZmFsc2UpCisgICAgLCBtX3dt
UHJpbnRIREMoMCkKICNlbmRpZgogI2lmIChQTEFURk9STShRVCkgJiYgUExBVEZPUk0oV0lOX09T
KSkgfHwgZGVmaW5lZChYUF9NQUNPU1gpCiAgICAgLCBtX3dpbmRvdygwKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggMGZlMzUyZi4uMWJiM2I3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0yMDcsNyAr
MjA3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDYWxsaW5nUGx1
Z2luKGJvb2wpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVn
aW5SZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgCisKKyNpZiBQTEFURk9STShXSU5fT1Mp
ICYmICFQTEFURk9STShXWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgICAg
IHZvaWQgcGFpbnRXaW5kb3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0VXBPZmZzY3JlZW5Q
YWludGluZ0hvb2tzKCk7CisgICAgICAgIHN0YXRpYyBIREMgV0lOQVBJIEhvb2tlZEJlZ2luUGFp
bnQoSFdORCwgUEFJTlRTVFJVQ1QqKTsKKyAgICAgICAgc3RhdGljIEJPT0wgV0lOQVBJIEhvb2tl
ZEVuZFBhaW50KEhXTkQsIGNvbnN0IFBBSU5UU1RSVUNUKik7CisjZW5kaWYKKwogICAgICAgICBG
cmFtZSogbV9wYXJlbnRGcmFtZTsKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IG1fcGx1
Z2luOwogICAgICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CkBAIC0yNzAsNiArMjc3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXTkRQUk9DIG1fcGx1Z2luV25kUHJvYzsKICAgICAg
ICAgdW5zaWduZWQgbV9sYXN0TWVzc2FnZTsKICAgICAgICAgYm9vbCBtX2lzQ2FsbGluZ1BsdWdp
blduZFByb2M7CisgICAgICAgIEhEQyBtX3dtUHJpbnRIREM7CiAjZW5kaWYKIAogI2lmIChQTEFU
Rk9STShRVCkgJiYgUExBVEZPUk0oV0lOX09TKSkgfHwgZGVmaW5lZChYUF9NQUNPU1gpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwIGIvV2ViQ29yZS9w
bHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCBhOTIzMGNkLi41MjdhMGIxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTk5LDYgKzk5LDkwIEBAIGNvbnN0
IExQQ1dTVFIga1dlYlBsdWdpblZpZXdQcm9wZXJ0eSA9IEwiV2ViUGx1Z2luVmlld1Byb3BlcnR5
IjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIE1vemlsbGFVc2VyQWdlbnQgPSAiTW96aWxsYS81LjAg
KFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS44LjEpIEdlY2tvLzIwMDYx
MDEwIEZpcmVmb3gvMi4wIjsKIAorLy8gVGhlIGNvZGUgdXNlZCB0byBob29rIEJlZ2luUGFpbnQv
RW5kUGFpbnQgb3JpZ2luYWxseSBjYW1lIGZyb20KKy8vIDxodHRwOi8vd3d3LmZlbmd5dWFuLmNv
bS9hcnRpY2xlL3dtcHJpbnQuaHRtbD4uCisvLyBDb3B5cmlnaHQgKEMpIDIwMDAgYnkgRmVuZyBZ
dWFuICh3d3cuZmVuZ3l1YW4uY29tKS4KKworc3RhdGljIHVuc2lnbmVkIGJlZ2luUGFpbnRTeXND
YWxsOworc3RhdGljIEJZVEUqIGJlZ2luUGFpbnQ7CisKK3N0YXRpYyB1bnNpZ25lZCBlbmRQYWlu
dFN5c0NhbGw7CitzdGF0aWMgQllURSogZW5kUGFpbnQ7CisKK0hEQyBXSU5BUEkgUGx1Z2luVmll
dzo6SG9va2VkQmVnaW5QYWludChIV05EIGhXbmQsIFBBSU5UU1RSVUNUKiBscFBhaW50KQorewor
ICAgIFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSByZWludGVycHJldF9jYXN0PFBsdWdpblZpZXcq
PihHZXRQcm9wKGhXbmQsIGtXZWJQbHVnaW5WaWV3UHJvcGVydHkpKTsKKyAgICBpZiAocGx1Z2lu
VmlldyAmJiBwbHVnaW5WaWV3LT5tX3dtUHJpbnRIREMpIHsKKyAgICAgICAgLy8gV2UncmUgc2Vj
cmV0bHkgaGFuZGxpbmcgV01fUFJJTlRDTElFTlQsIHNvIHNldCB1cCB0aGUgUEFJTlRTVFJVQ1Qg
c28KKyAgICAgICAgLy8gdGhhdCB0aGUgcGx1Z2luIHdpbGwgcGFpbnQgaW50byB0aGUgSERDIHdl
IHByb3ZpZGUuCisgICAgICAgIG1lbXNldChscFBhaW50LCAwLCBzaXplb2YoUEFJTlRTVFJVQ1Qp
KTsKKyAgICAgICAgbHBQYWludC0+aGRjID0gcGx1Z2luVmlldy0+bV93bVByaW50SERDOworICAg
ICAgICBHZXRDbGllbnRSZWN0KGhXbmQsICZscFBhaW50LT5yY1BhaW50KTsKKyAgICAgICAgcmV0
dXJuIHBsdWdpblZpZXctPm1fd21QcmludEhEQzsKKyAgICB9CisKKyAgICAvLyBDYWxsIHRocm91
Z2ggdG8gdGhlIG9yaWdpbmFsIEJlZ2luUGFpbnQuCisgICAgX19hc20gICBtb3YgICAgIGVheCwg
YmVnaW5QYWludFN5c0NhbGwKKyAgICBfX2FzbSAgIHB1c2ggICAgbHBQYWludAorICAgIF9fYXNt
ICAgcHVzaCAgICBoV25kCisgICAgX19hc20gICBjYWxsICAgIGJlZ2luUGFpbnQKK30KKworQk9P
TCBXSU5BUEkgUGx1Z2luVmlldzo6SG9va2VkRW5kUGFpbnQoSFdORCBoV25kLCBjb25zdCBQQUlO
VFNUUlVDVCogbHBQYWludCkKK3sKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcmVpbnRl
cnByZXRfY2FzdDxQbHVnaW5WaWV3Kj4oR2V0UHJvcChoV25kLCBrV2ViUGx1Z2luVmlld1Byb3Bl
cnR5KSk7CisgICAgaWYgKHBsdWdpblZpZXcgJiYgcGx1Z2luVmlldy0+bV93bVByaW50SERDKSB7
CisgICAgICAgIC8vIFdlJ3JlIHNlY3JldGx5IGhhbmRsaW5nIFdNX1BSSU5UQ0xJRU5ULCBzbyB3
ZSBkb24ndCBoYXZlIHRvIGRvIGFueQorICAgICAgICAvLyBjbGVhbnVwLgorICAgICAgICByZXR1
cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBDYWxsIHRocm91Z2ggdG8gdGhlIG9yaWdpbmFsIEVu
ZFBhaW50LgorICAgIF9fYXNtICAgbW92ICAgICBlYXgsIGVuZFBhaW50U3lzQ2FsbAorICAgIF9f
YXNtICAgcHVzaCAgICBscFBhaW50CisgICAgX19hc20gICBwdXNoICAgIGhXbmQKKyAgICBfX2Fz
bSAgIGNhbGwgICAgZW5kUGFpbnQKK30KKworc3RhdGljIHZvaWQgaG9vayhjb25zdCBjaGFyKiBt
b2R1bGUsIGNvbnN0IGNoYXIqIHByb2MsIHVuc2lnbmVkJiBzeXNDYWxsSUQsIEJZVEUqJiBwUHJv
YywgY29uc3Qgdm9pZCogcE5ld1Byb2MpCit7CisgICAgLy8gU2VlIDxodHRwOi8vd3d3LmZlbmd5
dWFuLmNvbS9hcnRpY2xlL3dtcHJpbnQuaHRtbD4gZm9yIGFuIGV4cGxhbmF0aW9uIG9mCisgICAg
Ly8gaG93IHRoaXMgZnVuY3Rpb24gd29ya3MuCisKKyAgICBISU5TVEFOQ0UgaE1vZCA9IEdldE1v
ZHVsZUhhbmRsZUEobW9kdWxlKTsKKworICAgIHBQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxCWVRF
Kj4oR2V0UHJvY0FkZHJlc3MoaE1vZCwgcHJvYykpOworCisgICAgaWYgKHBQcm9jWzBdICE9IDB4
QjgpCisgICAgICAgIHJldHVybjsKKworICAgIHN5c0NhbGxJRCA9ICpyZWludGVycHJldF9jYXN0
PHVuc2lnbmVkKj4ocFByb2MgKyAxKTsKKworICAgIERXT1JEIGZsT2xkUHJvdGVjdDsKKyAgICBp
ZiAoIVZpcnR1YWxQcm90ZWN0KHBQcm9jLCA1LCBQQUdFX0VYRUNVVEVfUkVBRFdSSVRFLCAmZmxP
bGRQcm90ZWN0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcFByb2NbMF0gPSAweEU5OworICAg
ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4ocFByb2MgKyAxKSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQ+KHBOZXdQcm9jKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHBQcm9j
ICsgNSk7CisKKyAgICBwUHJvYyArPSA1OworfQorCit2b2lkIFBsdWdpblZpZXc6OnNldFVwT2Zm
c2NyZWVuUGFpbnRpbmdIb29rcygpCit7CisgICAgc3RhdGljIGJvb2wgaGF2ZUhvb2tlZCA9IGZh
bHNlOworICAgIGlmIChoYXZlSG9va2VkKQorICAgICAgICByZXR1cm47CisgICAgaGF2ZUhvb2tl
ZCA9IHRydWU7CisKKyAgICAvLyBNb3N0IChhbGw/KSB3aW5kb3dlZCBwbHVnaW5zIGRvbid0IHNl
ZW0gdG8gcmVzcG9uZCB0byBXTV9QUklOVENMSUVOVCwgc28KKyAgICAvLyB3ZSBob29rIGludG8g
QmVnaW5QYWludC9FbmRQYWludCB0byBhbGxvdyB0aGVpciBub3JtYWwgV01fUEFJTlQgaGFuZGxp
bmcKKyAgICAvLyB0byBkcmF3IGludG8gYSBnaXZlbiBIREMuIE5vdGUgdGhhdCB0aGlzIGhvb2tp
bmcgYWZmZWN0cyB0aGUgZW50aXJlCisgICAgLy8gcHJvY2Vzcy4KKyAgICBob29rKCJ1c2VyMzIu
ZGxsIiwgIkJlZ2luUGFpbnQiLCBiZWdpblBhaW50U3lzQ2FsbCwgYmVnaW5QYWludCwgSG9va2Vk
QmVnaW5QYWludCk7CisgICAgaG9vaygidXNlcjMyLmRsbCIsICJFbmRQYWludCIsIGVuZFBhaW50
U3lzQ2FsbCwgZW5kUGFpbnQsIEhvb2tlZEVuZFBhaW50KTsKK30KKwogc3RhdGljIGJvb2wgcmVn
aXN0ZXJQbHVnaW5WaWV3KCkKIHsKICAgICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJlZFdpbmRv
d0NsYXNzID0gZmFsc2U7CkBAIC0yMDEsOSArMjg1LDE5IEBAIFBsdWdpblZpZXc6OnduZFByb2Mo
SFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAg
ICAgICAgIG1fcG9wUG9wdXBzU3RhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgfQogCisg
ICAgaWYgKG1lc3NhZ2UgPT0gV01fUFJJTlRDTElFTlQpIHsKKyAgICAgICAgLy8gTW9zdCAoYWxs
Pykgd2luZG93ZWQgcGx1Z2lucyBkb24ndCByZXNwb25kIHRvIFdNX1BSSU5UQ0xJRU5ULCBzbyB3
ZQorICAgICAgICAvLyBjaGFuZ2UgdGhlIG1lc3NhZ2UgdG8gV01fUEFJTlQgYW5kIHJlbHkgb24g
b3VyIGhvb2tlZCB2ZXJzaW9ucyBvZgorICAgICAgICAvLyBCZWdpblBhaW50L0VuZFBhaW50IHRv
IG1ha2UgdGhlIHBsdWdpbiBkcmF3IGludG8gdGhlIGdpdmVuIEhEQy4KKyAgICAgICAgbWVzc2Fn
ZSA9IFdNX1BBSU5UOworICAgICAgICBtX3dtUHJpbnRIREMgPSByZWludGVycHJldF9jYXN0PEhE
Qz4od1BhcmFtKTsKKyAgICB9CisKICAgICAvLyBDYWxsIHRoZSBwbHVnLWluJ3Mgd2luZG93IHBy
b2MuCiAgICAgTFJFU1VMVCByZXN1bHQgPSA6OkNhbGxXaW5kb3dQcm9jKG1fcGx1Z2luV25kUHJv
YywgaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogCisgICAgbV93bVByaW50SERDID0g
MDsKKwogICAgIG1faXNDYWxsaW5nUGx1Z2luV25kUHJvYyA9IGZhbHNlOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTMwNSw2ICszOTksMzQgQEAgYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5Q
RXZlbnQoTlBFdmVudCYgbnBFdmVudCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFBs
dWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNX
aW5kb3dlZCk7CisgICAgQVNTRVJUKGNvbnRleHQtPnNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3Mo
KSk7CisKKyAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOworICAgIEludFBvaW50
IGxvY2F0aW9uSW5XaW5kb3cgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPmNv
bnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSk7CisKKyAgICBIREMgaGRjID0g
Y29udGV4dC0+Z2V0V2luZG93c0NvbnRleHQoZnJhbWVSZWN0KCksIGZhbHNlKTsKKworICAgIFhG
T1JNIG9yaWdpbmFsVHJhbnNmb3JtOworICAgIEdldFdvcmxkVHJhbnNmb3JtKGhkYywgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKKworICAgIC8vIFRoZSBwbHVnaW4gZXhwZWN0cyB0aGUgREMgdG8gYmUg
aW4gY2xpZW50IGNvb3JkaW5hdGVzLCBzbyB3ZSB0cmFuc2xhdGUKKyAgICAvLyB0aGUgREMgdG8g
bWFrZSB0aGF0IHNvLgorICAgIFhGT1JNIHRyYW5zZm9ybSA9IG9yaWdpbmFsVHJhbnNmb3JtOwor
ICAgIHRyYW5zZm9ybS5lRHggPSBsb2NhdGlvbkluV2luZG93LngoKTsKKyAgICB0cmFuc2Zvcm0u
ZUR5ID0gbG9jYXRpb25JbldpbmRvdy55KCk7CisKKyAgICBTZXRXb3JsZFRyYW5zZm9ybShoZGMs
ICZ0cmFuc2Zvcm0pOworCisgICAgU2VuZE1lc3NhZ2UocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSwg
V01fUFJJTlRDTElFTlQsIHJlaW50ZXJwcmV0X2Nhc3Q8V1BBUkFNPihoZGMpLCBQUkZfQ0xJRU5U
IHwgUFJGX0NISUxEUkVOIHwgUFJGX09XTkVEKTsKKworICAgIFNldFdvcmxkVHJhbnNmb3JtKGhk
YywgJm9yaWdpbmFsVHJhbnNmb3JtKTsKKworICAgIGNvbnRleHQtPnJlbGVhc2VXaW5kb3dzQ29u
dGV4dChoZGMsIGZyYW1lUmVjdCgpLCBmYWxzZSk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmICghbV9pc1N0YXJ0ZWQpIHsKQEAgLTMxMyw4ICs0MzUsMTQgQEAgdm9pZCBQbHVnaW5WaWV3
OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9pc1dpbmRvd2VkIHx8IGNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIGlm
IChjb250ZXh0LT5zaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkpCisgICAgICAgICAgICBwYWlu
dFdpbmRvd2VkUGx1Z2luSW50b0NvbnRleHQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwogICAgIElu
dFJlY3QgcmVjdEluV2luZG93ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50KCkpLT5j
b250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKTsKQEAgLTgwMCw2ICs5MjgsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OmluaXQoKQogCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICByZWdp
c3RlclBsdWdpblZpZXcoKTsKKyAgICAgICAgc2V0VXBPZmZzY3JlZW5QYWludGluZ0hvb2tzKCk7
CiAKICAgICAgICAgRFdPUkQgZmxhZ3MgPSBXU19DSElMRDsKICAgICAgICAgaWYgKGlzU2VsZlZp
c2libGUoKSkKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNTU1NDY4MC4uMTRkOGU0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAw
OS0wMS0yOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IEJ1
ZyAyMzYyMzogV2luZG93ZWQgRmxhc2ggaW5zdGFuY2VzIGRvbid0IHJlc3BvbmQgdG8KKyAgICAg
ICAgV01fUFJJTlRDTElFTlQKKworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjIzPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjUxMzkyMT4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1MzY4NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6cGFpbnREb2N1bWVudFJlY3RUb0NvbnRleHQpOgorICAgICAgICAoV2ViRnJhbWU6OnNwb29s
UGFnZXMpOgorICAgICAgICBDYWxsIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkSW5jbHVkZUNo
aWxkV2luZG93cyBzbyB0aGF0IGNoaWxkCisgICAgICAgIHdpbmRvd3Mgd2lsbCBiZSBwYWludGVk
IGludG8gdGhlIEdyYXBoaWNzQ29udGV4dCByYXRoZXIgdGhhbiBwYWludGVkCisgICAgICAgIGRp
cmVjdGx5IHRvIHRoZSBzY3JlZW4uCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IEFkZGVkIGEgc2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cworICAgICAgICBwYXJhbWV0ZXIsIHdoaWNoIHdlIHBhc3MgYWxvbmcgdG8gcGFpbnRJ
bnRvQmFja2luZ1N0b3JlLgorCisgICAgICAgIChXZWJWaWV3OjpwYWludCk6IFRlbGwgdXBkYXRl
QmFja2luZ1N0b3JlIHRvIGluY2x1ZGUgY2hpbGQgd2luZG93cyBpZgorICAgICAgICB3ZSdyZSBu
b3QgcGFpbnRpbmcgdG8gdGhlIHNjcmVlbi4KKworICAgICAgICAoV2ViVmlldzo6cGFpbnRJbnRv
QmFja2luZ1N0b3JlKTogQWRkZWQgYSBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzCisgICAgICAg
IHBhcmFtdGVyLCB3aGljaCB3ZSB1c2UgdG8gdGVsbCBvdXIgR3JhcGhpY3NDb250ZXh0IHdoZXRo
ZXIgb3Igbm90IHRvCisgICAgICAgIGluY2x1ZGUgY2hpbGQgd2luZG93cy4KKworICAgICAgICAq
IFdlYlZpZXcuaDogQWRkZWQgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyBwYXJhbWV0ZXJzIHRv
CisgICAgICAgIHBhaW50SW50b0JhY2tpbmdTdG9yZSBhbmQgdXBkYXRlQmFja2luZ1N0b3JlLgor
CiAyMDA5LTAxLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZy
YW1lLmNwcCBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMzNjI4MmQuLjcxMGY1Njkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCkBAIC0zMTMsNiArMzEzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJGcmFtZTo6cGFpbnREb2N1bWVudFJlY3RUb0NvbnRleHQoCiAKICAgICBIREMgZGMgPSAoSERD
KShVTE9ORzY0KWRldmljZUNvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdjKGRjKTsKKyAg
ICBnYy5zZXRTaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKHRydWUpOwogICAgIGdjLnNhdmUoKTsK
ICAgICBMT05HIHdpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdDsKICAgICBMT05HIGhlaWdo
dCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CkBAIC0xODEyLDYgKzE4MTMsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vbFBhZ2VzKAogICAgIGZsb2F0IGhlYWRl
ckhlaWdodCA9IDAsIGZvb3RlckhlaWdodCA9IDA7CiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cygmaGVhZGVySGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bv
b2xDdHgocGN0eCk7CisgICAgc3Bvb2xDdHguc2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyh0
cnVlKTsKIAogICAgIGZvciAoVUlOVCBpaSA9IHN0YXJ0UGFnZTsgaWkgPCBlbmRQYWdlOyBpaSsr
KSB7CiAgICAgICAgIEludFJlY3QgcGFnZVJlY3QgPSBtX3BhZ2VSZWN0c1tpaV07CmRpZmYgLS1n
aXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCAzZWU4NWQ0Li5mNGJjODhiIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBzdGF0aWMgdm9p
ZCBnZXRVcGRhdGVSZWN0cyhIUkdOIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBW
ZWN0b3I8SW50UmVjdAogICAgICAgICByZWN0cy5hcHBlbmQoKnJlY3QpOwogfQogCi12b2lkIFdl
YlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBi
b29sIGJhY2tpbmdTdG9yZUNvbXBsZXRlbHlEaXJ0eSkKK3ZvaWQgV2ViVmlldzo6dXBkYXRlQmFj
a2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBIREMgZGMsIGJvb2wgYmFja2luZ1N0b3Jl
Q29tcGxldGVseURpcnR5LCBib29sIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MpCiB7CiAgICAg
TE9DQUxfR0RJX0NPVU5URVIoMCwgX19GVU5DVElPTl9fKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBA
IHZvaWQgV2ViVmlldzo6dXBkYXRlQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBI
REMgZGMsIGJvb2wgYmFja2luZ1N0b3JlCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFpbnRSZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHBhaW50
SW50b0JhY2tpbmdTdG9yZShmcmFtZVZpZXcsIGJpdG1hcERDLCBwYWludFJlY3RzW2ldKTsKKyAg
ICAgICAgICAgIHBhaW50SW50b0JhY2tpbmdTdG9yZShmcmFtZVZpZXcsIGJpdG1hcERDLCBwYWlu
dFJlY3RzW2ldLCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKTsKIAogICAgICAgICBpZiAobV91
aURlbGVnYXRlUHJpdmF0ZSkgewogICAgICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJp
dmF0ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgbV91aURlbGVnYXRlUHJpdmF0ZSk7CkBA
IC04ODQsMTYgKzg4NCwxOSBAQCB2b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBkYywgTFBBUkFNIG9w
dGlvbnMpCiAgICAgT3duUHRyPEhSR04+IHJlZ2lvbjsKICAgICBpbnQgcmVnaW9uVHlwZSA9IE5V
TExSRUdJT047CiAgICAgUEFJTlRTVFJVQ1QgcHM7CisgICAgYm9vbCBwYWludGluZ1RvU2NyZWVu
OwogICAgIGlmICghZGMpIHsKICAgICAgICAgcmVnaW9uLnNldChDcmVhdGVSZWN0UmduKDAsMCww
LDApKTsKICAgICAgICAgcmVnaW9uVHlwZSA9IEdldFVwZGF0ZVJnbihtX3ZpZXdXaW5kb3csIHJl
Z2lvbi5nZXQoKSwgZmFsc2UpOwogICAgICAgICBoZGMgPSBCZWdpblBhaW50KG1fdmlld1dpbmRv
dywgJnBzKTsKICAgICAgICAgcmNQYWludCA9IHBzLnJjUGFpbnQ7CisgICAgICAgIHBhaW50aW5n
VG9TY3JlZW4gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhkYyA9IGRjOwogICAgICAg
ICA6OkdldENsaWVudFJlY3QobV92aWV3V2luZG93LCAmcmNQYWludCk7CiAgICAgICAgIGlmIChv
cHRpb25zICYgUFJGX0VSQVNFQktHTkQpCiAgICAgICAgICAgICA6OkZpbGxSZWN0KGhkYywgJnJj
UGFpbnQsIChIQlJVU0gpR2V0U3RvY2tPYmplY3QoV0hJVEVfQlJVU0gpKTsKKyAgICAgICAgcGFp
bnRpbmdUb1NjcmVlbiA9IGZhbHNlOwogICAgIH0KIAogICAgIEhEQyBiaXRtYXBEQyA9IDo6Q3Jl
YXRlQ29tcGF0aWJsZURDKGhkYyk7CkBAIC05MDEsNyArOTA0LDcgQEAgdm9pZCBXZWJWaWV3Ojpw
YWludChIREMgZGMsIExQQVJBTSBvcHRpb25zKQogICAgIDo6U2VsZWN0T2JqZWN0KGJpdG1hcERD
LCBtX2JhY2tpbmdTdG9yZUJpdG1hcC5nZXQoKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGJhY2tp
bmcgc3RvcmUgaWYgbmVlZGVkLgotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZShmcmFtZVZpZXcsIGJp
dG1hcERDLCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkpOworICAgIHVwZGF0ZUJhY2tpbmdT
dG9yZShmcmFtZVZpZXcsIGJpdG1hcERDLCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHksICFw
YWludGluZ1RvU2NyZWVuKTsKIAogICAgIC8vIE5vdyB3ZSBibGl0IHRoZSB1cGRhdGVkIGJhY2tp
bmcgc3RvcmUKICAgICBJbnRSZWN0IHdpbmRvd0RpcnR5UmVjdCA9IHJjUGFpbnQ7CkBAIC05NDIs
NyArOTQ1LDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpb25zKQog
ICAgICAgICBkZWxldGVCYWNraW5nU3RvcmVTb29uKCk7CiB9CiAKLXZvaWQgV2ViVmlldzo6cGFp
bnRJbnRvQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBIREMgYml0bWFwREMsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgV2ViVmlldzo6cGFpbnRJbnRvQmFja2luZ1N0
b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBIREMgYml0bWFwREMsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKQogewogICAgIExPQ0FMX0dE
SV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKQEAgLTk1OSw2ICs5NjIsNyBAQCB2b2lkIFdl
YlZpZXc6OnBhaW50SW50b0JhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGJp
dG1hcERDLCBjb25zdCBJbgogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHQgZ2MoYml0bWFw
REMsIG1fdHJhbnNwYXJlbnQpOworICAgIGdjLnNldFNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3Mo
c2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyk7CiAgICAgZ2Muc2F2ZSgpOwogICAgIGlmIChtX3Ry
YW5zcGFyZW50KQogICAgICAgICBnYy5jbGVhclJlY3QoZGlydHlSZWN0KTsKZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vV2ViVmlldy5oIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmgKaW5kZXggZWE3MTY4
Yi4uNzc5MGY0OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvV2ViS2l0
L3dpbi9XZWJWaWV3LmgKQEAgLTc0MywxMyArNzQzLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGtl
eVByZXNzKFdQQVJBTSwgTFBBUkFNLCBib29sIHN5c3RlbUtleURvd24gPSBmYWxzZSk7CiAgICAg
Ym9vbCBpblJlc2l6ZXIoTFBBUkFNIGxQYXJhbSk7CiAgICAgdm9pZCBwYWludChIREMsIExQQVJB
TSk7Ci0gICAgdm9pZCBwYWludEludG9CYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3Kiwg
SERDIGJpdG1hcERDLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZv
aWQgcGFpbnRJbnRvQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyBiaXRtYXBE
QywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBib29sIHNob3VsZEluY2x1ZGVD
aGlsZFdpbmRvd3MpOwogICAgIHZvaWQgcGFpbnRJbnRvV2luZG93KEhEQyBiaXRtYXBEQywgSERD
IHdpbmRvd0RDLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIGJvb2wg
ZW5zdXJlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCBhZGRUb0RpcnR5UmVnaW9uKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGFkZFRvRGlydHlSZWdpb24oSFJHTik7CiAgICAg
dm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGR4LCBpbnQg
ZHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFZpZXdSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgSERDID0gMCwgYm9vbCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkg
PSBmYWxzZSk7CisgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3
KiwgSERDID0gMCwgYm9vbCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkgPSBmYWxzZSwgYm9v
bCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzID0gZmFsc2UpOwogICAgIHZvaWQgZGVsZXRlQmFj
a2luZ1N0b3JlKCk7CiAgICAgdm9pZCByZXBhaW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBi
b29sIGNvbnRlbnRDaGFuZ2VkLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlLCBib29sIHJlcGFpbnRD
b250ZW50T25seSA9IGZhbHNlKTsKICAgICB2b2lkIGZyYW1lUmVjdChSRUNUKiByZWN0KTsKLS0g
CjEuNi4xCgo=
</data>
<flag name="review"
          id="13051"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>