<?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>221287</bug_id>
          
          <creation_ts>2021-02-02 12:57:10 -0800</creation_ts>
          <short_desc>Null check renderers consistently in StyleImage code</short_desc>
          <delta_ts>2022-06-08 05:34:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221434</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724839</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-02 12:57:10 -0800</bug_when>
    <thetext>Null check renderers consistently in StyleImage code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724859</commentid>
    <comment_count>1</comment_count>
      <attachid>419060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-02 13:20:34 -0800</bug_when>
    <thetext>Created attachment 419060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724880</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-02 13:58:52 -0800</bug_when>
    <thetext>rdar://73356955</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724881</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-02 14:00:40 -0800</bug_when>
    <thetext>Committed r272235: &lt;https://trac.webkit.org/changeset/272235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725228</commentid>
    <comment_count>4</comment_count>
      <attachid>419060</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-03 11:01:08 -0800</bug_when>
    <thetext>Comment on attachment 419060
Patch

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

&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:57
&gt;      if (m_fixedSize) {

An early return could make the code look better.

if (!m_fixedSize)
    return m_containerSize;

&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:59
&gt; +        if (!renderer)
&gt; +            return { };

This line below could also be simplified since we know after this if-statement render is not null.

    float deviceScaleFactor = renderer ? renderer-&gt;document().deviceScaleFactor() : 1;

&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:106
&gt;  bool StyleGeneratedImage::knownToBeOpaque(const RenderElement* renderer) const

I think this function can take const RenderElement&amp; also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725377</commentid>
    <comment_count>5</comment_count>
      <attachid>419060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-03 15:34:18 -0800</bug_when>
    <thetext>Comment on attachment 419060
Patch

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

&gt;&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:57
&gt;&gt;      if (m_fixedSize) {
&gt; 
&gt; An early return could make the code look better.
&gt; 
&gt; if (!m_fixedSize)
&gt;     return m_containerSize;

I agree.

&gt;&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:59
&gt;&gt; +            return { };
&gt; 
&gt; This line below could also be simplified since we know after this if-statement render is not null.
&gt; 
&gt;     float deviceScaleFactor = renderer ? renderer-&gt;document().deviceScaleFactor() : 1;

Good point!

&gt;&gt; Source/WebCore/rendering/style/StyleGeneratedImage.cpp:106
&gt;&gt;  bool StyleGeneratedImage::knownToBeOpaque(const RenderElement* renderer) const
&gt; 
&gt; I think this function can take const RenderElement&amp; also.

Yes, I didn’t see that before, but I looked carefully and see that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874699</commentid>
    <comment_count>6</comment_count>
      <attachid>419060</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-06-08 05:34:33 -0700</bug_when>
    <thetext>Comment on attachment 419060
Patch

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

&gt; Source/WebCore/rendering/RenderImageResource.cpp:68
&gt; -    ASSERT(m_renderer);
&gt; -    if (m_cachedImage &amp;&amp; m_cachedImageRemoveClientIsNeeded)
&gt; -        m_cachedImage-&gt;removeClient(*renderer());
&gt; +    if (m_cachedImage &amp;&amp; m_renderer &amp;&amp; m_cachedImageRemoveClientIsNeeded)
&gt; +        m_cachedImage-&gt;removeClient(*m_renderer);
&gt;      m_cachedImage = newImage;
&gt;      m_cachedImageRemoveClientIsNeeded = true;
&gt;      if (!m_cachedImage)

I don&apos;t think this sort of random sprinkling of null tests is a good idea. Here m_renderer owns the RenderImageResource and m_renderer is a WeakPtr solely to protect against security issues (it could be CheckedPtr but renderers are already CanMakeWeakPtr). In any case where m_renderer is null, RenderImageResource is itself also likely dead and we are in a bad state. Adding null checks allows code to proceed further in bad state and makes identifying root causes from crash stacks harder.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419060</attachid>
            <date>2021-02-02 13:20:34 -0800</date>
            <delta_ts>2021-02-02 13:31:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221287-20210202132033.patch</filename>
            <type>text/plain</type>
            <size>23776</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRmYmM5OWZlMzBjYWUz
OGM3NmMzOTY5OTdiYzA0MjBiNzc2ZDJjMC4uMjkzMWEwYzFjYzQwOTViZDc2MWYzZmZjMzVkZmVi
NzQ0MzA1NWI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAyLTAyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxsIGNoZWNrIHJlbmRlcmVy
cyBjb25zaXN0ZW50bHkgaW4gU3R5bGVJbWFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyB3ZXJlIGFz
c2VydGluZyByZW5kZXJlcnMgYXJlIG5vbi1udWxsLCB3aXRob3V0IGEKKyAgICAgICAgc3Ryb25n
IGd1YXJhbnRlZSB0aGF0IGlzIHRydWUuIEFkZGluZyBhIGZldyBudWxsIGNoZWNrcyBtYWtlcyB0
aGUgY29kZQorICAgICAgICBlYXNpZXIgdG8gcmVhc29uIGFib3V0LiBBbiBleGNlcHRpb24gd2Fz
IGFkZC9yZW1vdmVDbGllbnQsIHdoaWNoIG5ldmVyCisgICAgICAgIG5lZWQgdG8gYmUgY2FsbGVk
IHdpdGggYSBudWxsIHBvaW50ZXIsIHNvIGZvciB0aGF0IHdlIGNoYW5nZSB0aGUgYXJndW1lbnQK
KyAgICAgICAgdHlwZSBmcm9tIGEgcG9pbnRlciB0byBhIHJlZmVyZW5jZS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6dXBkYXRlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCk6IERpdHRvLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UpOiBDaGVjayByZW5kZXJlciBmb3IgbnVs
bC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRDb250
YWluZXJDb250ZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxpemUpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3duKTogQ2hlY2sg
dGhlIHJlbmRlcmVyIGZvcgorICAgICAgICBudWxsIGJlZm9yZSBwYXNzaW5nIGEgcmVmZXJlbmNl
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNldENv
bnRhaW5lckNvbnRleHQpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OndpbGxCZURl
c3Ryb3llZCk6IFBhc3MgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
TWFya2VyOjpzdHlsZURpZENoYW5nZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJ
bWFnZTo6YWRkQ2xpZW50KTogVGFrZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplIGNvbnN0KTogQ2hlY2sgcmVuZGVyZXIgZm9yIG51
bGwuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjphZGRDbGllbnQpOiBU
YWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6
cmVtb3ZlQ2xpZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZElt
YWdlOjppbWFnZSBjb25zdCk6IENoZWNrIHJlbmRlcmVyIGZvciBudWxsLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlIGNvbnN0KTogRGl0dG8u
CisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlTXVsdGlJbWFnZTo6YWRkQ2xpZW50KTogVGFrZSBhIHJlZmVyZW5j
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTXVsdGlJbWFnZTo6cmVtb3ZlQ2xpZW50KTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oOiBVcGRh
dGUgYWRkL3JlbW92ZUNsaWVudCB0byB0YWtlCisgICAgICAgIGEgcmVmZXJlbmNlLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmg6IERpdHRvLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpSW1hZ2UuaDogRGl0dG8uCisKIDIwMjEtMDEtMjkgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGFjdGl2ZURvY3VtZW50
TG9hZGVyKCkgZm9yIG51bGwgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBlODcxZjA1MmFiY2NmNzdlZTc0NTA1
N2M1N2Q1YWU1ZDFlNDVmMDczLi5lNDAzOTQyMDAwNjE2MTNiM2NjYzQ0ZTVkMTQ2ZWJjOTAwYjI4
MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0z
LDcgKzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAo
a2RlQGNhcmV3b2xmLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNSwgMjAwNiBTYW11ZWwgV2Vp
bmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNjAsMTEgKzM2MCwxMSBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVyKiBvbGRMYXllcnMsIGNv
bnN0IEZpbGxMYXllcgogICAgIC8vIEFkZCBiZWZvcmUgcmVtb3ZpbmcsIHRvIGF2b2lkIHJlbW92
aW5nIGFsbCBjbGllbnRzIG9mIGFuIGltYWdlIHRoYXQgaXMgaW4gYm90aCBzZXRzLgogICAgIGZv
ciAoYXV0byogbGF5ZXIgPSAmbmV3TGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgp
KSB7CiAgICAgICAgIGlmIChsYXllci0+aW1hZ2UoKSkKLSAgICAgICAgICAgIGxheWVyLT5pbWFn
ZSgpLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICBsYXllci0+aW1hZ2UoKS0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICB9CiAgICAgZm9yIChhdXRvKiBsYXllciA9IG9sZExheWVyczsgbGF5
ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgewogICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkp
Ci0gICAgICAgICAgICBsYXllci0+aW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAg
ICAgICAgbGF5ZXItPmltYWdlKCktPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC0zNzMsOSArMzczLDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVJbWFnZShTdHlsZUlt
YWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3SW1hZ2UpCiAgICAgaWYgKG9sZEltYWdlID09
IG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG9sZEltYWdlKQotICAgICAgICBv
bGRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKICAgICBpZiAobmV3SW1hZ2UpCi0gICAgICAgIG5ld0ltYWdlLT5hZGRDbGll
bnQodGhpcyk7CisgICAgICAgIG5ld0ltYWdlLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckVsZW1lbnQ6OnVwZGF0ZVNoYXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hh
cGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVWYWx1ZSkKQEAgLTEwMjgsMTkgKzEw
MjgsMTkgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGlmICho
YXNJbml0aWFsaXplZFN0eWxlKCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBiZ0xheWVyID0gJm1f
c3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4
dCgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gYmdMYXllci0+
aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNsaWVudCh0
aGlzKTsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNsaWVudCgqdGhp
cyk7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAmbV9zdHlsZS5t
YXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhdXRvKiBib3JkZXJJbWFnZSA9IG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKQot
ICAgICAgICAgICAgYm9yZGVySW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgICAg
IGJvcmRlckltYWdlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgICAgICBpZiAoYXV0byogbWFz
a0JveEltYWdlID0gbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQotICAgICAgICAgICAg
bWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgICAgICBtYXNrQm94SW1h
Z2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIGlmIChhdXRvIHNoYXBlVmFsdWUgPSBt
X3N0eWxlLnNoYXBlT3V0c2lkZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBzaGFwZUltYWdl
ID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBzaGFwZUltYWdlLT5yZW1v
dmVDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50
KCp0aGlzKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobV9oYXNQYXVzZWRJbWFnZUFuaW1h
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAKaW5kZXggNDhjNTBkMTM4ZjY4OTU4YTdhZjVlZWI0Zjk2YmNhMjcxNTU1MjM4Ni4uNDI3
MmExYThiNDVlMmM0MzQ5ZTY1MWQ2MDY3MzA0YzlkM2YwOWIwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtNCw3ICs0LDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5j
b20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKQEAgLTM5
LDkgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoUmVuZGVySW1hZ2VSZXNvdXJjZSk7CiAKLVJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRl
ckltYWdlUmVzb3VyY2UoKQotewotfQorUmVuZGVySW1hZ2VSZXNvdXJjZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFs
aXplKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBDYWNoZWRJbWFnZSogc3R5bGVDYWNoZWRJbWFn
ZSkKIHsKQEAgLTYzLDkgKzYxLDggQEAgdm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRDYWNo
ZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0g
bmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAg
ICBpZiAobV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlUmVtb3ZlQ2xpZW50SXNOZWVkZWQp
Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCgqcmVuZGVyZXIoKSk7CisgICAg
aWYgKG1fY2FjaGVkSW1hZ2UgJiYgbV9yZW5kZXJlciAmJiBtX2NhY2hlZEltYWdlUmVtb3ZlQ2xp
ZW50SXNOZWVkZWQpCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCgqbV9yZW5k
ZXJlcik7CiAgICAgbV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOwogICAgIG1fY2FjaGVkSW1hZ2VS
ZW1vdmVDbGllbnRJc05lZWRlZCA9IHRydWU7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKQpAQCAt
ODEsMzcgKzc4LDM1IEBAIHZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24o
KQogICAgIGlmICghbV9jYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KG1fcmVuZGVyZXIpOwogICAgIGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7CiAKLSAgICBpZiAo
IXJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQo
KTsKKyAgICBpZiAobV9yZW5kZXJlciAmJiAhbV9yZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKKyAg
ICAgICAgbV9yZW5kZXJlci0+cmVwYWludCgpOwogfQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRlcklt
YWdlUmVzb3VyY2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewogICAgIGlmICghbV9j
YWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7Ci0gICAgaWYg
KGF1dG8gaW1hZ2UgPSBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkp
KQorICAgIGlmIChhdXRvIGltYWdlID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlciht
X3JlbmRlcmVyLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIHJldHVybiAmSW1h
Z2U6Om51bGxJbWFnZSgpOwogfQogCiB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENvbnRh
aW5lckNvbnRleHQoY29uc3QgSW50U2l6ZSYgaW1hZ2VDb250YWluZXJTaXplLCBjb25zdCBVUkwm
IGltYWdlVVJMKQogewotICAgIGlmICghbV9jYWNoZWRJbWFnZSkKKyAgICBpZiAoIW1fY2FjaGVk
SW1hZ2UgfHwgIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9yZW5k
ZXJlcik7Ci0gICAgbV9jYWNoZWRJbWFnZS0+c2V0Q29udGFpbmVyQ29udGV4dEZvckNsaWVudCgq
cmVuZGVyZXIoKSwgaW1hZ2VDb250YWluZXJTaXplLCByZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSwgaW1hZ2VVUkwpOworICAgIG1fY2FjaGVkSW1hZ2UtPnNldENvbnRhaW5lckNv
bnRleHRGb3JDbGllbnQoKm1fcmVuZGVyZXIsIGltYWdlQ29udGFpbmVyU2l6ZSwgbV9yZW5kZXJl
ci0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCksIGltYWdlVVJMKTsKIH0KIAogTGF5b3V0U2l6ZSBS
ZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllciwgQ2FjaGVkSW1h
Z2U6OlNpemVUeXBlIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKQogICAg
ICAgICByZXR1cm4gTGF5b3V0U2l6ZSgpOwotICAgIExheW91dFNpemUgc2l6ZSA9IG1fY2FjaGVk
SW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCksIG11bHRpcGxpZXIsIHR5cGUp
OwotICAgIGlmIChpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIoKSkpCi0gICAgICAgIHNpemUuc2Nh
bGUoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcigpKS5pbWFnZURldmljZVBpeGVsUmF0
aW8oKSk7CisgICAgTGF5b3V0U2l6ZSBzaXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplRm9y
UmVuZGVyZXIobV9yZW5kZXJlci5nZXQoKSwgbXVsdGlwbGllciwgdHlwZSk7CisgICAgaWYgKGlz
PFJlbmRlckltYWdlPihtX3JlbmRlcmVyLmdldCgpKSkKKyAgICAgICAgc2l6ZS5zY2FsZShkb3du
Y2FzdDxSZW5kZXJJbWFnZT4oKm1fcmVuZGVyZXIpLmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsK
ICAgICByZXR1cm4gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKaW5kZXggMzRlMWRmNzM0
YjRjYWFkNzVjYmY5YTQ5M2E3NmYxMjM0MDUxYTgzMS4uZTdiOGUwNjI3MDhlNjI2OWY4MjZkYmVm
NjY1ZmYyMTMyZGZjNzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCkBAIC00LDcgKzQsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNv
bT4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgpAQCAtNDUs
MTQgKzQ1LDE0IEBAIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZShTdHlsZUltYWdlJiBzdHlsZUltCiB2b2lkIFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjppbml0aWFsaXplKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewog
ICAgIFJlbmRlckltYWdlUmVzb3VyY2U6OmluaXRpYWxpemUocmVuZGVyZXIsIG1fc3R5bGVJbWFn
ZS0+aGFzQ2FjaGVkSW1hZ2UoKSA/IG1fc3R5bGVJbWFnZS5nZXQoKS5jYWNoZWRJbWFnZSgpIDog
bnVsbHB0cik7Ci0gICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQodGhpcy0+cmVuZGVyZXIoKSk7
CisgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQocmVuZGVyZXIpOwogfQogCiB2b2lkIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzaHV0ZG93bigpCiB7CiAgICAgUmVuZGVySW1hZ2VS
ZXNvdXJjZTo6c2h1dGRvd24oKTsKLSAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgbV9zdHls
ZUltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIoKSk7CisgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCgq
cmVuZGVyZXIpOwogfQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlOjppbWFnZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdApAQCAtNjcsOCArNjcsOCBAQCBS
ZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZShjb25zdCBJ
bnRTaXplJiBzaXplKSBjb25zdAogCiB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
OjpzZXRDb250YWluZXJDb250ZXh0KGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IFVSTCYpCiB7
Ci0gICAgQVNTRVJUKHJlbmRlcmVyKCkpOwotICAgIG1fc3R5bGVJbWFnZS0+c2V0Q29udGFpbmVy
Q29udGV4dEZvclJlbmRlcmVyKCpyZW5kZXJlcigpLCBzaXplLCByZW5kZXJlcigpLT5zdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKSk7CisgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQorICAgICAgICBtX3N0eWxlSW1hZ2UtPnNldENvbnRhaW5lckNvbnRleHRGb3JSZW5kZXJl
cigqcmVuZGVyZXIsIHNpemUsIHJlbmRlcmVyLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA4YzI0Y2RhMmY3NDdjMWZhYTRmOTAzMTI5NWM1Zjdm
ZmJjY2I1ZDk2Li43MjkzYmJlY2Q1MTY3NDYzNzA4ODJhZDI2M2QzZDk4MTE1MjNhYzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFuZHJldyBXZWxsaW5ndG9uIChwcm90
b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGFuaWVsIEJhdGVzIChk
YmF0ZXNAaW50dWRhdGEuY29tKQogICoKQEAgLTEwODIsNyArMTA4Miw3IEBAIFJlbmRlckxpc3RN
YXJrZXI6On5SZW5kZXJMaXN0TWFya2VyKCkKIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6d2lsbEJl
RGVzdHJveWVkKCkKIHsKICAgICBpZiAobV9pbWFnZSkKLSAgICAgICAgbV9pbWFnZS0+cmVtb3Zl
Q2xpZW50KHRoaXMpOworICAgICAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAg
IFJlbmRlckJveDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKQEAgLTExMDAsMTAgKzExMDAsMTAg
QEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG8KIAogICAgIGlmIChtX2ltYWdlICE9IHN0eWxlKCku
bGlzdFN0eWxlSW1hZ2UoKSkgewogICAgICAgICBpZiAobV9pbWFnZSkKLSAgICAgICAgICAgIG1f
aW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgICAgIG1faW1hZ2UtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CiAgICAgICAgIG1faW1hZ2UgPSBzdHlsZSgpLmxpc3RTdHlsZUltYWdlKCk7
CiAgICAgICAgIGlmIChtX2ltYWdlKQotICAgICAgICAgICAgbV9pbWFnZS0+YWRkQ2xpZW50KHRo
aXMpOworICAgICAgICAgICAgbV9pbWFnZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdl
LmNwcAppbmRleCAzZjE3ODIxN2I2NWZmOTA2NjU4ZTE1Y2EwMjIxNzE3ZWNhMDg1OTllLi45YjZj
NmIwYmVjY2RjOGRjNDc2NWQzMzNiMzY4OTM4ZjkyMGIxMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yLDcgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1NiwyMyArMTU2LDIwIEBAIHZv
aWQgU3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4dEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQmIHJlbmRlCiAgICAgbV9jYWNoZWRJbWFnZS0+c2V0Q29udGFpbmVyQ29u
dGV4dEZvckNsaWVudChyZW5kZXJlciwgTGF5b3V0U2l6ZShjb250YWluZXJTaXplKSwgY29udGFp
bmVyWm9vbSwgaW1hZ2VVUkwoKSk7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6YWRkQ2xp
ZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQordm9pZCBTdHlsZUNhY2hlZEltYWdlOjphZGRD
bGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKCFtX2lzUGVuZGlu
Zyk7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KHJlbmRlcmVyKTsKLSAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQoKnJlbmRlcmVyKTsKKyAg
ICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQocmVuZGVyZXIpOwogfQogCi12b2lkIFN0eWxlQ2Fj
aGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKK3ZvaWQgU3R5
bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewog
ICAgIEFTU0VSVCghbV9pc1BlbmRpbmcpOwogICAgIGlmICghbV9jYWNoZWRJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVChyZW5kZXJlcik7Ci0KLSAgICBtX2NhY2hlZEltYWdlLT5y
ZW1vdmVDbGllbnQoKnJlbmRlcmVyKTsKKyAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQo
cmVuZGVyZXIpOwogfQogCiBSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKaW5kZXggNTZj
YmM5MGFkZjE4ZDA4ZTBmZmIyYzc5Mjg5MDAxNWMzNGZhNzZlNC4uNTkyYjZhOTBiMDU3MGEzYzY3
YzY2MzU2MWVjYjljNGJmYTgzMThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgm
IGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRy
aW5zaWNSYXRpbykgZmluYWw7CiAgICAgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBzZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBmaW5hbDsKLSAgICB2b2lk
IGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVDbGllbnQo
UmVuZGVyRWxlbWVudCopIGZpbmFsOworICAgIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50JikgZmluYWw7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikg
Y29uc3QgZmluYWw7CiAgICAgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBiMDA2Mzc4MTRlYTNiNGI3MTYwMTc5MDNkZmNkZGZlMjRiYTMw
YmQ2Li5jZTQyYWJjNWUyZmUzMTVhN2E5OWQyMWU1NTIxYWZhZmFjMGNjOWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2Uu
Y3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC01NCw4ICs1NCwxMCBAQCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZQogCiBGbG9hdFNpemUgU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAg
aWYgKG1fZml4ZWRTaXplKSB7CisgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCiAgICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBtX2ltYWdlR2VuZXJh
dG9yVmFsdWUtPmZpeGVkU2l6ZSgqcmVuZGVyZXIpOwogICAgICAgICBpZiAobXVsdGlwbGllciA9
PSAxLjBmKQogICAgICAgICAgICAgcmV0dXJuIGZpeGVkU2l6ZTsKQEAgLTg2LDI4ICs4OCwyNCBA
QCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcgogICAgIGludHJpbnNpY1JhdGlvID0gc2l6ZTsKIH0K
IAotdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCit2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmFkZENsaWVudChSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgIG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS0+YWRkQ2xpZW50KCpyZW5kZXJlcik7CisgICAgbV9pbWFnZUdlbmVyYXRvclZhbHVl
LT5hZGRDbGllbnQocmVuZGVyZXIpOwogfQogCi12b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJl
bW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIEFTU0VS
VChyZW5kZXJlcik7Ci0gICAgbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5yZW1vdmVDbGllbnQoKnJl
bmRlcmVyKTsKKyAgICBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPnJlbW92ZUNsaWVudChyZW5kZXJl
cik7CiB9CiAKIFJlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKIHsKLSAgICBB
U1NFUlQocmVuZGVyZXIpOwotICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmltYWdl
KCpyZW5kZXJlciwgc2l6ZSk7CisgICAgcmV0dXJuIHJlbmRlcmVyID8gbV9pbWFnZUdlbmVyYXRv
clZhbHVlLT5pbWFnZSgqcmVuZGVyZXIsIHNpemUpIDogJkltYWdlOjpudWxsSW1hZ2UoKTsKIH0K
IAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKTsKLSAgICBy
ZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5rbm93blRvQmVPcGFxdWUoKnJlbmRlcmVyKTsK
KyAgICByZXR1cm4gcmVuZGVyZXIgJiYgbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5rbm93blRvQmVP
cGFxdWUoKnJlbmRlcmVyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggMGI1YjlmZjc5N2U1OGQ0ZjM4
MzZmODM2Y2JhNTAzYzE4ZDY2OTEyYy4uMTYzZDY2OTk5NDE1MjkxOWUyMDk3NTlmMjEwMjNiZjJl
ZTM4NmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHZW5lcmF0ZWRJbWFnZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5z
aWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0
aW8pIGZpbmFsOwogICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGFpbmVyQ29udGV4dEZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5l
clNpemUsIGZsb2F0KSBmaW5hbCB7IG1fY29udGFpbmVyU2l6ZSA9IGNvbnRhaW5lclNpemU7IH0K
LSAgICB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgZmluYWw7Ci0gICAgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyRWxlbWVudCopIGZpbmFsOworICAgIHZvaWQgYWRkQ2xpZW50KFJlbmRl
ckVsZW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Jikg
ZmluYWw7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxv
YXRTaXplJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVu
ZGVyRWxlbWVudCopIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlSW1hZ2UuaAppbmRleCA0YTJkMWE3ZGM4OTNhYjhiNDRlYjMwNDFhOGJkM2FhYTFh
ODEzMmNiLi42NTg3Nzk4NzNhZmE3NjdmMTNmNGM0Y2UxZjI2Zjc2NWRmZmI3N2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYwLDggKzYwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyRWxlbWVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50
KFJlbmRlckVsZW1lbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5k
ZXJFbGVtZW50JikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBl
ZEltYWdlUHRyIGRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxl
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUltYWdlLmNwcAppbmRleCBmYTkwNzQ3NGQ0MDE2NDIzZmUw
ODE1Mjc0YzRkOTZmNzBjNmMxOWY1Li44YzNmOGJjMWYyOWU1ZWIxNmRlMjY5OTJjMDgzMGE2MWM0
YzczMWI3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUltYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDUtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgTm9hbSBSb3NlbnRoYWwgKG5vYW1Ad2Via2l0Lm9yZykKICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0xMzQsMTQgKzEzNCwxNCBAQCB2b2lkIFN0eWxlTXVsdGlJbWFnZTo6c2V0Q29u
dGFpbmVyQ29udGV4dEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcgogICAg
IG1fc2VsZWN0ZWRJbWFnZS0+c2V0Q29udGFpbmVyQ29udGV4dEZvclJlbmRlcmVyKHJlbmRlcmVy
LCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tKTsKIH0KIAotdm9pZCBTdHlsZU11bHRpSW1h
Z2U6OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVNdWx0aUlt
YWdlOjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFtX3Nl
bGVjdGVkSW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBtX3NlbGVjdGVkSW1hZ2UtPmFkZENs
aWVudChyZW5kZXJlcik7CiB9CiAKLXZvaWQgU3R5bGVNdWx0aUltYWdlOjpyZW1vdmVDbGllbnQo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCit2b2lkIFN0eWxlTXVsdGlJbWFnZTo6cmVtb3ZlQ2xp
ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewogICAgIGlmICghbV9zZWxlY3RlZEltYWdl
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVNdWx0aUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVNdWx0aUltYWdlLmgKaW5kZXggZmQwZmEzMzE0Mjc3Y2UzOTZjNTRhYzgxMDgzNDg4MWJl
MTI2YmFlMS4uNDcyY2YwYjI3MjZhOTQyNDE4ODhkMDVmZmNkMDY0ZWRlNmNkZWRkZiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpSW1hZ2UuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDIwIE5vYW0gUm9zZW50aGFs
IChub2FtQHdlYmtpdC5vcmcpCiAgKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01Nyw4ICs1Nyw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50
KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0
U2l6ZSYgaW50cmluc2ljUmF0aW8pIGZpbmFsOwogICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q29udGFpbmVyQ29udGV4dEZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCk7Ci0gICAg
dm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlQ2xp
ZW50KFJlbmRlckVsZW1lbnQqKSBmaW5hbDsKKyAgICB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVt
ZW50JikgZmluYWw7CisgICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCYpIGZpbmFs
OwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6
ZSYpIGNvbnN0IGZpbmFsOwogICAgIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Qg
ZmluYWw7Cg==
</data>
<flag name="review"
          id="437210"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>