<?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>87573</bug_id>
          
          <creation_ts>2012-05-25 23:03:00 -0700</creation_ts>
          <short_desc>Avoid updateFromElement() usage in SVG</short_desc>
          <delta_ts>2012-05-26 02:44:52 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87572</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>634594</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-25 23:03:00 -0700</bug_when>
    <thetext>Avoid updateFromElement() usage in SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634596</commentid>
    <comment_count>1</comment_count>
      <attachid>144195</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-25 23:09:45 -0700</bug_when>
    <thetext>Created attachment 144195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634603</commentid>
    <comment_count>2</comment_count>
      <attachid>144195</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-25 23:49:09 -0700</bug_when>
    <thetext>Comment on attachment 144195
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:-119
&gt; -void RenderSVGModelObject::updateFromElement()
&gt; -{
&gt; -    RenderObject::updateFromElement();
&gt; -    SVGResourcesCache::clientUpdatedFromElement(this, style());
&gt; -}
&gt; -

Don&apos;t we need to add calls to clientWasAddedToTree and clientWillBeRemovedFromTree here?
RenderSVGShape, RenderSVGImage, etc... directly inherit from RenderSVGModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634614</commentid>
    <comment_count>3</comment_count>
      <attachid>144197</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-26 01:09:38 -0700</bug_when>
    <thetext>Created attachment 144197
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634615</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-26 01:10:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Don&apos;t we need to add calls to clientWasAddedToTree and clientWillBeRemovedFromTree here?
&gt; RenderSVGShape, RenderSVGImage, etc... directly inherit from RenderSVGModelObject.
As discussed on IRC, RenderSVGModelObject doesn&apos;t have children, so it doesn&apos;t need this logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634625</commentid>
    <comment_count>5</comment_count>
      <attachid>144195</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-26 02:06:23 -0700</bug_when>
    <thetext>Comment on attachment 144195
Patch

I think this refactoring is done right (had a lengthy discussion with WildFox on IRC)., and new approach makes the removal and addition of SVG resource much more apparent when constructing or destructing the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634626</commentid>
    <comment_count>6</comment_count>
      <attachid>144197</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-26 02:06:40 -0700</bug_when>
    <thetext>Comment on attachment 144197
Patch v2

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

&gt; Source/WebCore/rendering/svg/SVGResourcesCache.cpp:140
&gt; -    if (diff == StyleDifferenceEqual)
&gt; +    if (diff == StyleDifferenceEqual || !renderer-&gt;parent())
&gt;          return;
&gt;  
&gt;      // In this case the proper SVGFE*Element will decide whether the modified CSS properties require a relayout or repaint.
&gt;      if (renderer-&gt;isSVGResourceFilterPrimitive() &amp;&amp; diff == StyleDifferenceRepaint)
&gt;          return;
&gt;  
&gt; -    clientUpdatedFromElement(renderer, newStyle);
&gt; +    SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
&gt; +    cache-&gt;removeResourcesFromRenderObject(renderer);
&gt; +    cache-&gt;addResourcesFromRenderObject(renderer, newStyle);

I think this function deserves a little clarifying why we would want to remove/add the resource here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634627</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-26 02:08:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 144195 [details])
&gt; I think this refactoring is done right (had a lengthy discussion with WildFox on IRC)., and new approach makes the removal and addition of SVG resource much more apparent when constructing or destructing the render tree.

Thanks! The discussion was very helpful. I left a new comment there:
    // Dynamic changes of CSS properties like &apos;clip-path&apos; may require us to recompute the associated resources for a renderer.
    // FIXME: Avoid passing in a useless StyleDifference, but instead compare oldStyle/newStyle to see which resources changed
    // to be able to selectively rebuild individual resources, instead of all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634628</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-26 02:08:39 -0700</bug_when>
    <thetext>Committed r118608: &lt;http://trac.webkit.org/changeset/118608&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144195</attachid>
            <date>2012-05-25 23:09:45 -0700</date>
            <delta_ts>2012-05-26 02:06:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87573-20120526081037.patch</filename>
            <type>text/plain</type>
            <size>17884</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlmYjJkMDUzZWRjYzBk
Y2Q3MmY3ODA0ZjFkODU1NmE1NDBiOWUyMC4uNTExMjJkYTAzMDZmMmNmODExMTA0NGFiMmIyMTI2
OTVjZDcyNjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA1LTI2ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEF2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCkgdXNhZ2UgaW4gU1ZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU3MworCisgICAgICAgIFN0b3AgcmVseWluZyBvbiB1
cGRhdGVGcm9tRWxlbWVudCgpIC0gaW5zdGVhZCByZWx5IG9uIGFkZENoaWxkL3JlbW92ZUNoaWxk
LCB3aGljaAorICAgICAgICBhbGxvd3MgdXMgdG8gb3B0aW1pemUgdGhlIHJlc291cmNlcyByZS1m
ZXRjaGluZy4gV2hlbiBhIGNoaWxkIGlzIGFkZGVkIHRvIHRoZSB0cmVlCisgICAgICAgIHdlIGRv
bid0IG5lZWQgdG8gcmVtb3ZlIGV4aXN0aW5nIHJlc291cmNlcyBmcm9tIHRoZSBTVkdSZXNvdXJj
ZXNDYWNoZSAtIHRoZSByZW5kZXJlcgorICAgICAgICBjYW4ndCBiZSBpbiB0aGUgY2FjaGUgeWV0
LiBTaW1pbGFyeSwgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBjYWNoZSBlYXJsaWVyOiBhcyBz
b29uCisgICAgICAgIGFzIHRoZSByZW5kZXJlciBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUsIGlu
c3RlYWQgb2Ygd2FpdGluZyBmb3Igd2lsbEJlRGVzdHJveWVkKCkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6YWRkQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9j
azo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
aDoKKyAgICAgICAgKFJlbmRlclNWR0Jsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWlu
ZXI6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKFJlbmRlclNWR0NvbnRhaW5lcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW5saW5lOjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdJbmxpbmU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cmVtb3ZlQ2hpbGQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAoUmVuZGVyU1ZH
Um9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXYXNBZGRlZFRvVHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVt
b3ZlZEZyb21UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hl
Lmg6CisgICAgICAgIChTVkdSZXNvdXJjZXNDYWNoZSk6CisgICAgICAgICogc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAg
IChTVkdTdHlsZWRFbGVtZW50KToKKwogMjAxMi0wNS0yNSAgR2FycmV0dCBDYXN0byAgPGdjYXN0
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWxsb3cgV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xp
ZW50IHRvIHNlZSBhcHBsaWVkIGRlY29yYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCBjZjQ0ZWZmZjExNmY5MThiOTVmM2Y2
MTgzNDQxODY4ZGIyYzE4ZTk2Li5jOTgyYjY2NDlkNDYxY2Q1ZWRhYTAwZmYzZjRjNGU3ODE1NzQ5
MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmNwcApAQCAtMTA0LDEwICsxMDQsMTYgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKICAgICBT
VkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHRoaXMsIGRpZmYsIHN0eWxlKCkp
OwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVGcm9tRWxlbWVudCgpCit2b2lkIFJl
bmRlclNWR0Jsb2NrOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkKQogewotICAgIFJlbmRlckJsb2NrOjp1cGRhdGVGcm9tRWxlbWVudCgpOwot
ICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQodGhpcywgc3R5
bGUoKSk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7Cisg
ICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVkVG9UcmVlKGNoaWxkLCBjaGlsZC0+
c3R5bGUoKSk7Cit9CisKK3ZvaWQgUmVuZGVyU1ZHQmxvY2s6OnJlbW92ZUNoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQpCit7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92
ZWRGcm9tVHJlZShjaGlsZCk7CisgICAgUmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
CmluZGV4IDllZjU1YTkxOTZhM2JiOWMzMGVmNDc5Zjg1YjE2OTk2MWFhY2NmYzYuLjQ5MjQ2ODQz
OTQ2NzViOWNhODM2ZWM0NWRmYmNlNzNjZTViZGYyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTM1LDYgKzM1LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3QoKSBjb25zdDsKIAogcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKQEAgLTQ1LDcgKzQ3LDYgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5k
ZXggYTFmZDgzMjFkM2NlNDZlZTJlMTUwYTY2NjMxYWY4MTcxNzlkOGJlYi4uN2IyODY2MTEzOThi
YzJjZDlmNDhlNzU4MDFkMWI3NmU0NTkyYTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtODcsNiArODcsMTkgQEAg
dm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwogfQogCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKK3sKKyAgICBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YWRkQ2hpbGQoY2hpbGQsIGJlZm9yZUNoaWxkKTsKKyAgICBTVkdSZXNvdXJjZXND
YWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUoY2hpbGQsIGNoaWxkLT5zdHlsZSgpKTsKK30KKwor
dm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogY2hpbGQp
Cit7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZShj
aGlsZCk7CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnJlbW92ZUNoaWxkKGNoaWxkKTsKK30K
KworCiBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2VsZldpbGxQYWludCgpCiB7CiAgICAgU1ZH
UmVzb3VyY2VzKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyT2JqZWN0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggNWJlMDM2NjM4NmM0NWNiNjUxNmQxNWY3YTNi
MmZmZGExZDNjZmY3OC4uMzM1NzMyYjg0N2Q5ODVhYzBiMDljMDBjN2RhNmNmZmI2NWU4YjkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCkBAIC01Myw2ICs1Myw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVy
biBtX29iamVjdEJvdW5kaW5nQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggYmYwOTlhZDAzYzcwMmNjZjA5NDYyMThlODdk
NmVmMmUzYWFjMzExMi4uMDU3YmZkYTAwN2UyYzY4NDM0OWUzYzczZmViODZiMDFjZjM1ZDMwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cApAQCAtMTE5LDIxICsxMTksMTkgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmU6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2wKICAgICBTVkdS
ZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHRoaXMsIGRpZmYsIHN0eWxlKCkpOwog
fQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewotICAgIFJl
bmRlcklubGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6
Y2xpZW50VXBkYXRlZEZyb21FbGVtZW50KHRoaXMsIHN0eWxlKCkpOwotfQotCiB2b2lkIFJlbmRl
clNWR0lubGluZTo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCkKIHsKICAgICBSZW5kZXJJbmxpbmU6OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVD
aGlsZCk7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVkVG9UcmVlKGNoaWxk
LCBjaGlsZC0+c3R5bGUoKSk7CisKICAgICBpZiAoUmVuZGVyU1ZHVGV4dCogdGV4dFJlbmRlcmVy
ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHRoaXMpKQogICAg
ICAgICB0ZXh0UmVuZGVyZXItPnN1YnRyZWVDaGlsZFdhc0FkZGVkKGNoaWxkKTsKIH0KIAogdm9p
ZCBSZW5kZXJTVkdJbmxpbmU6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogY2hpbGQpCiB7Cisg
ICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZShjaGlsZCk7
CisKICAgICBSZW5kZXJTVkdUZXh0KiB0ZXh0UmVuZGVyZXIgPSBSZW5kZXJTVkdUZXh0Ojpsb2Nh
dGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IodGhpcyk7CiAgICAgaWYgKCF0ZXh0UmVuZGVyZXIpIHsK
ICAgICAgICAgUmVuZGVySW5saW5lOjpyZW1vdmVDaGlsZChjaGlsZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCAxZGM1YTJlZGFiMTk4
YTlkN2IwNzk1NjVmNmFkZDBiMGQ3ZDBkMGU2Li41MzNhOTlhYTZiMDE3N2U4N2JhOGM3MDRmYTEx
MWIxMWI3MzZjNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmgKQEAgLTU3LDkgKzU3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwCmluZGV4IDI5MTI1OTFlNzk1MmViNTRhZjI0NzUzMTllYjRjZDRlZGYwZmQyMWEuLmMxYzI3
YjA5YTc4YTQ1YjcxMjlmYjU1YTlkYzI4ZTlmNThiYWU4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0xMTEs
MTIgKzExMSw2IEBAIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsCiAgICAgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudFN0eWxlQ2hhbmdlZCh0aGlzLCBkaWZmLCBzdHlsZSgpKTsKIH0KIAotdm9pZCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewotICAgIFJlbmRlck9i
amVjdDo6dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50
VXBkYXRlZEZyb21FbGVtZW50KHRoaXMsIHN0eWxlKCkpOwotfQotCiBib29sIFJlbmRlclNWR01v
ZGVsT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFBvaW50JiwgSGl0VGVzdEFjdGlv
bikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCA1NzE3ZTk4OWU0ZDg0
MmRlZDdiYTA2ZjA4ZjFjYmNiNzVjZDI5MTI0Li5kODI2MDBmNTc5NWIwZmU0NTM0Y2YzNDcwMmVk
MjIxNWJmYTUxMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC02Miw3ICs2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogCiAgICAgc3RhdGljIGJvb2wgY2hl
Y2tJbnRlcnNlY3Rpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgc3Rh
dGljIGJvb2wgY2hlY2tFbmNsb3N1cmUoUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuY3BwCmluZGV4IDNkYmE2NzJkZDc4MDZjOTQyMDJkYTlhNGJlMzAx
Y2UwOTljMDBkYjQuLjgwNzYwZmQ0ODQ3ZTY2NTI3M2NmYjVlYTZmOWE0MzQ0NDNiNmM1Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSgpCiAgICAgICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSAoKml0KS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50
VXBkYXRlZEZyb21FbGVtZW50KHJlbmRlcmVyLCByZW5kZXJlci0+c3R5bGUoKSk7CisgICAgICAg
IFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQocmVuZGVyZXIsIFN0eWxlRGlm
ZmVyZW5jZUxheW91dCwgcmVuZGVyZXItPnN0eWxlKCkpOwogICAgICAgICByZW5kZXJlci0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMWJkZmUyODllZGY0M2ZhZGJmMTQ3NDhmYjdi
MThkYjYyZGYxYmZlZi4uNjYzMjQ1MzMzZDExOGM3ODAwN2EyOTBhMDAyN2QyNzE4YmEyYTViZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBA
IC0zMjYsMTAgKzMyNiwxNiBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogICAgIFNWR1Jlc291
cmNlc0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQodGhpcywgZGlmZiwgc3R5bGUoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbUVsZW1lbnQoKQordm9pZCBSZW5kZXJTVkdS
b290OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkKQogewotICAgIFJlbmRlclJlcGxhY2VkOjp1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIFNW
R1Jlc291cmNlc0NhY2hlOjpjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQodGhpcywgc3R5bGUoKSk7
CisgICAgUmVuZGVyUmVwbGFjZWQ6OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7CisgICAg
U1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVkVG9UcmVlKGNoaWxkLCBjaGlsZC0+c3R5
bGUoKSk7Cit9CisKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCkKK3sKKyAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVtb3ZlZEZy
b21UcmVlKGNoaWxkKTsKKyAgICBSZW5kZXJSZXBsYWNlZDo6cmVtb3ZlQ2hpbGQoY2hpbGQpOwog
fQogCiAvLyBSZW5kZXJCb3ggbWV0aG9kcyB3aWxsIGV4cGVjdCBjb29yZGluYXRlcyB3L28gYW55
IHRyYW5zZm9ybXMgaW4gY29vcmRpbmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggMDViMWQyMjYyNzNjOWEwM2FmMjYyZWYzMTdjODcxY2Qz
NjBiNzY0Yi4uNmZiNTY5NDY4OGFmNjllNmRkYTA2MzhlZjA4N2Q3MDFiNmRlYmJmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTc4LDcgKzc4
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVy
T2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDYWNoZS5jcHAKaW5kZXggMTcxNWY2YzA0MTQwY2JhYzg4YzVlNzMwMzU1MTRlYjhkMDg2
NDljNS4uZDQ5NjE0ZDQ2ZjA5ZTg1NDkxNWMwYzY5OTY0YWQ5MTliZjg0NjYxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAg
LTEyOCwyNCArMTI4LDM4IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudExheW91dENo
YW5nZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpjbGll
bnRTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIp
OwotICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsKQorICAgIGlmIChkaWZmID09
IFN0eWxlRGlmZmVyZW5jZUVxdWFsIHx8ICFyZW5kZXJlci0+cGFyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcHJvcGVyIFNWR0ZFKkVsZW1lbnQgd2ls
bCBkZWNpZGUgd2hldGhlciB0aGUgbW9kaWZpZWQgQ1NTIHByb3BlcnRpZXMgcmVxdWlyZSBhIHJl
bGF5b3V0IG9yIHJlcGFpbnQuCiAgICAgaWYgKHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKCkgJiYgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQocmVuZGVyZXIsIG5ld1N0eWxl
KTsKKyAgICBTVkdSZXNvdXJjZXNDYWNoZSogY2FjaGUgPSByZXNvdXJjZXNDYWNoZUZyb21SZW5k
ZXJPYmplY3QocmVuZGVyZXIpOworICAgIGNhY2hlLT5yZW1vdmVSZXNvdXJjZXNGcm9tUmVuZGVy
T2JqZWN0KHJlbmRlcmVyKTsKKyAgICBjYWNoZS0+YWRkUmVzb3VyY2VzRnJvbVJlbmRlck9iamVj
dChyZW5kZXJlciwgbmV3U3R5bGUpOworCisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlciwgZmFsc2UpOwogfQog
Ci12b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQordm9pZCBTVkdS
ZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQogewogICAgIEFTU0VSVChyZW5kZXJlcik7
CiAgICAgQVNTRVJUKHJlbmRlcmVyLT5wYXJlbnQoKSk7CisgICAgaWYgKCFyZW5kZXJlci0+bm9k
ZSgpIHx8ICFyZW5kZXJlci0+bm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFNWR1Jlc291cmNlc0NhY2hlKiBjYWNoZSA9IHJlc291cmNlc0NhY2hlRnJvbVJlbmRl
ck9iamVjdChyZW5kZXJlcik7CisgICAgY2FjaGUtPmFkZFJlc291cmNlc0Zyb21SZW5kZXJPYmpl
Y3QocmVuZGVyZXIsIG5ld1N0eWxlKTsKK30KIAordm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAg
QVNTRVJUKHJlbmRlcmVyKTsKKyAgICBBU1NFUlQocmVuZGVyZXItPnBhcmVudCgpKTsKKyAgICBp
ZiAoIXJlbmRlcmVyLT5ub2RlKCkgfHwgIXJlbmRlcmVyLT5ub2RlKCktPmlzU1ZHRWxlbWVudCgp
KQorICAgICAgICByZXR1cm47CiAgICAgU1ZHUmVzb3VyY2VzQ2FjaGUqIGNhY2hlID0gcmVzb3Vy
Y2VzQ2FjaGVGcm9tUmVuZGVyT2JqZWN0KHJlbmRlcmVyKTsKICAgICBjYWNoZS0+cmVtb3ZlUmVz
b3VyY2VzRnJvbVJlbmRlck9iamVjdChyZW5kZXJlcik7Ci0gICAgY2FjaGUtPmFkZFJlc291cmNl
c0Zyb21SZW5kZXJPYmplY3QocmVuZGVyZXIsIG5ld1N0eWxlKTsKIAogICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVy
ZXIsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuaAppbmRleCA3MmU1MjZhNjczZjMxNGE1ODRmZWY0M2Q4MjZlMjRlYmY1ZTI0
YTMyLi42MzNmY2Q3M2Q5ZjYxMDM2MGJjODU5ZmEwMGI4ZjcxNzVhN2UyMGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oCkBAIC0zNywx
MCArMzcsMTQgQEAgcHVibGljOgogICAgIFNWR1Jlc291cmNlc0NhY2hlKCk7CiAgICAgflNWR1Jl
c291cmNlc0NhY2hlKCk7CiAKLSAgICB2b2lkIGFkZFJlc291cmNlc0Zyb21SZW5kZXJPYmplY3Qo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqKTsKLSAgICB2b2lkIHJlbW92ZVJlc291
cmNlc0Zyb21SZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIFNWR1Jlc291
cmNlcyogY2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCop
OwogCisgICAgLy8gQ2FsbGVkIGZyb20gYWxsIFNWRyByZW5kZXJlcnMgYWRkQ2hpbGQoKSBtZXRo
b2RzLgorICAgIHN0YXRpYyB2b2lkIGNsaWVudFdhc0FkZGVkVG9UcmVlKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CisKKyAgICAvLyBDYWxsZWQgZnJvbSBhbGwg
U1ZHIHJlbmRlcmVycyByZW1vdmVDaGlsZCgpIG1ldGhvZHMuCisgICAgc3RhdGljIHZvaWQgY2xp
ZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCopOworCiAgICAgLy8gQ2FsbGVk
IGZyb20gYWxsIFNWRyByZW5kZXJlcnMgZGVzdHJveSgpIG1ldGhvZHMgLSBleGNlcHQgZm9yIFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLgogICAgIHN0YXRpYyB2b2lkIGNsaWVudERlc3Ryb3ll
ZChSZW5kZXJPYmplY3QqKTsKIApAQCAtNTAsMTMgKzU0LDEzIEBAIHB1YmxpYzoKICAgICAvLyBD
YWxsZWQgZnJvbSBhbGwgU1ZHIHJlbmRlcmVycyBzdHlsZURpZENoYW5nZSgpIG1ldGhvZHMuCiAg
ICAgc3RhdGljIHZvaWQgY2xpZW50U3R5bGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKIAotICAgIC8vIENhbGxlZCBm
cm9tIGFsbCBTVkcgcmVuZGVyZXJzIHVwZGF0ZUZyb21FbGVtZW50KCkgbWV0aG9kcy4KLSAgICBz
dGF0aWMgdm9pZCBjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLQogICAgIC8vIENhbGxlZCBmcm9tIFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyOjp3aWxsQmVEZXN0cm95ZWQoKS4KICAgICBzdGF0aWMgdm9pZCByZXNv
dXJjZURlc3Ryb3llZChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciopOwogCiBwcml2YXRlOgor
ICAgIHZvaWQgYWRkUmVzb3VyY2VzRnJvbVJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqLCBjb25z
dCBSZW5kZXJTdHlsZSopOworICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2VzRnJvbVJlbmRlck9iamVj
dChSZW5kZXJPYmplY3QqKTsKKwogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgU1ZH
UmVzb3VyY2VzKj4gbV9jYWNoZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAppbmRleCBmMzJlNjZhN2RlOGI1ZjBjZWJiY2YzODM4ZjEyMTU3ZTAxMWQ5ZDQ3Li45
ZTA0NzJiZTEwZGE4ODM5MmU0ZTIwYTYwNWU3OTdjOTEzYTM1NWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zNTAsMTQgKzM1MCw2IEBAIHZvaWQgU1ZHU3R5
bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICB9CiB9CiAKLXZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6YXR0YWNoKCkKLXsKLSAg
ICBTVkdFbGVtZW50OjphdHRhY2goKTsKLQotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLX0KLQog
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdTdHlsZWRFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50Ojpp
bnNlcnRlZEludG8ocm9vdFBhcmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aAppbmRleCBiZTliZjI0YzMxMDczOWZlMWMwZGEzNGZhMGJlMTc3OWM4MzliNDcwLi4wMzdkMjJk
YTZjMjI1NDcwMTE3MTZhOTU5Yzg5NzVlMzUyNzdiYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9w
ZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144197</attachid>
            <date>2012-05-26 01:09:38 -0700</date>
            <delta_ts>2012-05-26 02:06:40 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-87573-20120526101030.patch</filename>
            <type>text/plain</type>
            <size>18275</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4NWNiNjczM2U3Nzg3
MmFmMTI3MjlkZWY5MjA2MjdhMDU5Y2Y5NC4uYjBlODI4MGZhMGVlNjdhN2E3ZWU3YmRjN2M2YjRl
ZTY0MGQyNGRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA1LTI2ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEF2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCkgdXNhZ2UgaW4gU1ZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU3MworCisgICAgICAgIFN0b3AgcmVseWluZyBvbiB1
cGRhdGVGcm9tRWxlbWVudCgpIC0gaW5zdGVhZCByZWx5IG9uIGFkZENoaWxkL3JlbW92ZUNoaWxk
LCB3aGljaAorICAgICAgICBhbGxvd3MgdXMgdG8gb3B0aW1pemUgdGhlIHJlc291cmNlcyByZS1m
ZXRjaGluZy4gV2hlbiBhIGNoaWxkIGlzIGFkZGVkIHRvIHRoZSB0cmVlCisgICAgICAgIHdlIGRv
bid0IG5lZWQgdG8gcmVtb3ZlIGV4aXN0aW5nIHJlc291cmNlcyBmcm9tIHRoZSBTVkdSZXNvdXJj
ZXNDYWNoZSAtIHRoZSByZW5kZXJlcgorICAgICAgICBjYW4ndCBiZSBpbiB0aGUgY2FjaGUgeWV0
LiBTaW1pbGFyeSwgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBjYWNoZSBlYXJsaWVyOiBhcyBz
b29uCisgICAgICAgIGFzIHRoZSByZW5kZXJlciBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUsIGlu
c3RlYWQgb2Ygd2FpdGluZyBmb3Igd2lsbEJlRGVzdHJveWVkKCkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
OgorICAgICAgICAoUmVuZGVyU1ZHQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5l
cjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdDb250YWluZXI6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAoUmVuZGVyU1ZHQ29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbmxpbmU6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0lubGluZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmg6CisgICAgICAgIChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpyZWdpc3RlclJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpyZW1vdmVDaGlsZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgIChSZW5kZXJTVkdS
b290KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHVGV4dDo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudFN0eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckNhbkhhdmVS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oOgorICAgICAgICAoU1ZHUmVzb3VyY2Vz
Q2FjaGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3R5bGVkRWxlbWVudCk6CisKIDIw
MTItMDUtMjUgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gSW5zdHJ1bWVudCBWOCBHQyB3aXRoIFRyYWNlRXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggY2Y0NGVmZmYxMTZmOTE4
Yjk1ZjNmNjE4MzQ0MTg2OGRiMmMxOGU5Ni4uYzRmOWEyODRkNmQ1ZGEwYjZmNWQzNjUyNzE1MTE4
NmQ2NzZmMDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5jcHAKQEAgLTEwNCwxMiArMTA0LDYgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQK
ICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHRoaXMsIGRpZmYsIHN0
eWxlKCkpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVGcm9tRWxlbWVudCgpCi17
Ci0gICAgUmVuZGVyQmxvY2s6OnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNsaWVudFVwZGF0ZWRGcm9tRWxlbWVudCh0aGlzLCBzdHlsZSgpKTsKLX0KLQogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
aAppbmRleCA5ZWY1NWE5MTk2YTNiYjljMzBlZjQ3OWY4NWIxNjk5NjFhYWNjZmM2Li43ZjViNzg1
MzI4YjA1NzNlMjlmZjM5OGZmMjA3NzExNTg1MjNhMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC00NSw3ICs0NSw2IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGExZmQ4
MzIxZDNjZTQ2ZWUyZTE1MGE2NjYzMWFmODE3MTc5ZDhiZWIuLjdiMjg2NjExMzk4YmMyY2Q5ZjQ4
ZTc1ODAxZDFiNzZlNDU5MmEzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTg3LDYgKzg3LDE5IEBAIHZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0K
IAordm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQs
IFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCit7CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNs
aWVudFdhc0FkZGVkVG9UcmVlKGNoaWxkLCBjaGlsZC0+c3R5bGUoKSk7Cit9CisKK3ZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKQoreworICAg
IFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOwor
ICAgIFJlbmRlclNWR01vZGVsT2JqZWN0OjpyZW1vdmVDaGlsZChjaGlsZCk7Cit9CisKKwogYm9v
bCBSZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQogewogICAgIFNWR1Jlc291cmNl
cyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRl
ck9iamVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oCmluZGV4IDViZTAzNjYzODZjNDVjYjY1MTZkMTVmN2EzYjJmZmRhMWQz
Y2ZmNzguLjMzNTczMmI4NDdkOTg1YWMwYjA5YzAwYzdkYTZjZmZiNjVlOGI5MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaApAQCAt
NTMsNiArNTMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVD
aGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RCb3VuZGluZ0JveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCmluZGV4IGJmMDk5YWQwM2M3MDJjY2YwOTQ2MjE4ZTg3ZDZlZjJlM2Fh
YzMxMTIuLjA1N2JmZGEwMDdlMmM2ODQzNDllM2M3M2ZlYjg2YjAxY2YzNWQzMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTEx
OSwyMSArMTE5LDE5IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lOjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sCiAgICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNsaWVudFN0eWxlQ2hhbmdlZCh0aGlzLCBkaWZmLCBzdHlsZSgpKTsKIH0KIAotdm9p
ZCBSZW5kZXJTVkdJbmxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KCkKLXsKLSAgICBSZW5kZXJJbmxp
bmU6OnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFVw
ZGF0ZWRGcm9tRWxlbWVudCh0aGlzLCBzdHlsZSgpKTsKLX0KLQogdm9pZCBSZW5kZXJTVkdJbmxp
bmU6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpCiB7CiAgICAgUmVuZGVySW5saW5lOjphZGRDaGlsZChjaGlsZCwgYmVmb3JlQ2hpbGQpOwor
ICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXYXNBZGRlZFRvVHJlZShjaGlsZCwgY2hpbGQt
PnN0eWxlKCkpOworCiAgICAgaWYgKFJlbmRlclNWR1RleHQqIHRleHRSZW5kZXJlciA9IFJlbmRl
clNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0aGlzKSkKICAgICAgICAgdGV4
dFJlbmRlcmVyLT5zdWJ0cmVlQ2hpbGRXYXNBZGRlZChjaGlsZCk7CiB9CiAKIHZvaWQgUmVuZGVy
U1ZHSW5saW5lOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKQogeworICAgIFNWR1Jl
c291cmNlc0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOworCiAgICAg
UmVuZGVyU1ZHVGV4dCogdGV4dFJlbmRlcmVyID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVy
U1ZHVGV4dEFuY2VzdG9yKHRoaXMpOwogICAgIGlmICghdGV4dFJlbmRlcmVyKSB7CiAgICAgICAg
IFJlbmRlcklubGluZTo6cmVtb3ZlQ2hpbGQoY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggMWRjNWEyZWRhYjE5OGE5ZDdiMDc5
NTY1ZjZhZGQwYjBkN2QwZDBlNi4uNTMzYTk5YWE2YjAxNzdlODdiYThjNzA0ZmExMTFiMTFiNzM2
YzQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5oCkBAIC01Nyw5ICs1Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGls
ZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRl
eCAyOTEyNTkxZTc5NTJlYjU0YWYyNDc1MzE5ZWI0Y2Q0ZWRmMGZkMjFhLi5jMWMyN2IwOWE3OGE0
NWI3MTI5ZmI1NWE5ZGMyOGU5ZjU4YmFlOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtMTExLDEyICsxMTEs
NiBAQCB2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bAogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGll
bnRTdHlsZUNoYW5nZWQodGhpcywgZGlmZiwgc3R5bGUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZH
TW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21FbGVtZW50KCkKLXsKLSAgICBSZW5kZXJPYmplY3Q6OnVw
ZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFVwZGF0ZWRG
cm9tRWxlbWVudCh0aGlzLCBzdHlsZSgpKTsKLX0KLQogYm9vbCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIEhpdFRlc3RBY3Rpb24pCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKaW5kZXggNTcxN2U5ODllNGQ4NDJkZWQ3YmEw
NmYwOGYxY2JjYjc1Y2QyOTEyNC4uZDgyNjAwZjU3OTViMGZlNDUzNGNmMzQ3MDJlZDIyMTViZmE1
MTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuaApAQCAtNjIsNyArNjIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAgIHN0YXRpYyBib29sIGNoZWNrSW50ZXJz
ZWN0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHN0YXRpYyBib29s
IGNoZWNrRW5jbG9zdXJlKFJlbmRlck9iamVjdCosIGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcAppbmRleCAzZGJhNjcyZGQ3ODA2Yzk0MjAyZGE5YTRiZTMwMWNlMDk5YzAw
ZGI0Li44MDc2MGZkNDg0N2U2NjUyNzNjZmI1ZWE2ZjlhNDM0NDQzYjZjNWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXI6OnJlZ2lzdGVyUmVzb3VyY2UoKQogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gKCppdCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFVwZGF0ZWRG
cm9tRWxlbWVudChyZW5kZXJlciwgcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICBTVkdSZXNv
dXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHJlbmRlcmVyLCBTdHlsZURpZmZlcmVuY2VM
YXlvdXQsIHJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5
b3V0KHRydWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCmluZGV4IDFiZGZlMjg5ZWRmNDNmYWRiZjE0NzQ4ZmI3YjE4ZGI2MmRm
MWJmZWYuLjY2MzI0NTMzM2QxMThjNzgwMDdhMjkwYTAwMjdkMjcxOGJhMmE1YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzI2LDEw
ICszMjYsMTYgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFMKICAgICBTVkdSZXNvdXJjZXNDYWNo
ZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHRoaXMsIGRpZmYsIHN0eWxlKCkpOwogfQogCi12b2lkIFJl
bmRlclNWR1Jvb3Q6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6YWRk
Q2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsK
LSAgICBSZW5kZXJSZXBsYWNlZDo6dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBTVkdSZXNvdXJj
ZXNDYWNoZTo6Y2xpZW50VXBkYXRlZEZyb21FbGVtZW50KHRoaXMsIHN0eWxlKCkpOworICAgIFJl
bmRlclJlcGxhY2VkOjphZGRDaGlsZChjaGlsZCwgYmVmb3JlQ2hpbGQpOworICAgIFNWR1Jlc291
cmNlc0NhY2hlOjpjbGllbnRXYXNBZGRlZFRvVHJlZShjaGlsZCwgY2hpbGQtPnN0eWxlKCkpOwor
fQorCit2b2lkIFJlbmRlclNWR1Jvb3Q6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogY2hpbGQp
Cit7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZShj
aGlsZCk7CisgICAgUmVuZGVyUmVwbGFjZWQ6OnJlbW92ZUNoaWxkKGNoaWxkKTsKIH0KIAogLy8g
UmVuZGVyQm94IG1ldGhvZHMgd2lsbCBleHBlY3QgY29vcmRpbmF0ZXMgdy9vIGFueSB0cmFuc2Zv
cm1zIGluIGNvb3JkaW5hdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCmluZGV4IDA1YjFkMjI2MjczYzlhMDNhZjI2MmVmMzE3Yzg3MWNkMzYwYjc2NGIu
LjZmYjU2OTQ2ODhhZjY5ZTZkZGEwNjM4ZWYwODdkNzAxYjZkZWJiZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC03OCw3ICs3OCw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCA2NTgzYjJmOThhYzBlOTVlYjM2YjlhMGQ5NWU2NGVmNzczNDAzN2JmLi5hMmNhZTdkYmJj
ZTIzZjUwMjBhZWY5Yzc5YTNlNzU1OWMzOWE5ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTUyOSwxMSArNTI5LDE1IEBAIEZsb2F0
UmVjdCBSZW5kZXJTVkdUZXh0OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0
CiB2b2lkIFJlbmRlclNWR1RleHQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgUmVuZGVyU1ZHQmxvY2s6OmFkZENoaWxkKGNo
aWxkLCBiZWZvcmVDaGlsZCk7CisKKyAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRk
ZWRUb1RyZWUoY2hpbGQsIGNoaWxkLT5zdHlsZSgpKTsKICAgICBzdWJ0cmVlQ2hpbGRXYXNBZGRl
ZChjaGlsZCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVGV4dDo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCkKIHsKKyAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVtb3Zl
ZEZyb21UcmVlKGNoaWxkKTsKKwogICAgIFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyos
IDI+IGFmZmVjdGVkQXR0cmlidXRlczsKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250
Q2FjaGVQdXJnZVByZXZlbnRlcjsKICAgICBzdWJ0cmVlQ2hpbGRXaWxsQmVSZW1vdmVkKGNoaWxk
LCBhZmZlY3RlZEF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxNzE1ZjZjMDQxNDBjYmFjODhjNWU3MzAz
NTUxNGViOGQwODY0OWM1Li5hMjcyNDQzODQyNWE0ZDQ0NjMzYTZjMjIyNDAwOWNlYTRhMTcyYjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmNwcApAQCAtMTI4LDI0ICsxMjgsNDEgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50TGF5b3V0Q2hhbmdlZChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHZvaWQgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNsaWVudFN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQogewogICAgIEFTU0VS
VChyZW5kZXJlcik7Ci0gICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwpCisgICAg
aWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgfHwgIXJlbmRlcmVyLT5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBwcm9wZXIgU1ZHRkUq
RWxlbWVudCB3aWxsIGRlY2lkZSB3aGV0aGVyIHRoZSBtb2RpZmllZCBDU1MgcHJvcGVydGllcyBy
ZXF1aXJlIGEgcmVsYXlvdXQgb3IgcmVwYWludC4KICAgICBpZiAocmVuZGVyZXItPmlzU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUoKSAmJiBkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGNsaWVudFVwZGF0ZWRGcm9tRWxlbWVudChyZW5kZXJl
ciwgbmV3U3R5bGUpOworICAgIFNWR1Jlc291cmNlc0NhY2hlKiBjYWNoZSA9IHJlc291cmNlc0Nh
Y2hlRnJvbVJlbmRlck9iamVjdChyZW5kZXJlcik7CisgICAgY2FjaGUtPnJlbW92ZVJlc291cmNl
c0Zyb21SZW5kZXJPYmplY3QocmVuZGVyZXIpOworICAgIGNhY2hlLT5hZGRSZXNvdXJjZXNGcm9t
UmVuZGVyT2JqZWN0KHJlbmRlcmVyLCBuZXdTdHlsZSk7CisKKyAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyLCBm
YWxzZSk7CiB9CiAKLXZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFVwZGF0ZWRGcm9tRWxl
bWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUp
CitzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJDYW5IYXZlUmVzb3VyY2VzKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKICAgICBBU1NFUlQocmVuZGVy
ZXItPnBhcmVudCgpKTsKKyAgICByZXR1cm4gcmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXIt
PmlzU1ZHSW5saW5lVGV4dCgpOworfQogCit2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRX
YXNBZGRlZFRvVHJlZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3U3R5bGUpCit7CisgICAgaWYgKCFyZW5kZXJlckNhbkhhdmVSZXNvdXJjZXMocmVuZGVyZXIp
KQorICAgICAgICByZXR1cm47CiAgICAgU1ZHUmVzb3VyY2VzQ2FjaGUqIGNhY2hlID0gcmVzb3Vy
Y2VzQ2FjaGVGcm9tUmVuZGVyT2JqZWN0KHJlbmRlcmVyKTsKLSAgICBjYWNoZS0+cmVtb3ZlUmVz
b3VyY2VzRnJvbVJlbmRlck9iamVjdChyZW5kZXJlcik7CiAgICAgY2FjaGUtPmFkZFJlc291cmNl
c0Zyb21SZW5kZXJPYmplY3QocmVuZGVyZXIsIG5ld1N0eWxlKTsKK30KKwordm9pZCBTVkdSZXNv
dXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCit7CisgICAgaWYgKCFyZW5kZXJlckNhbkhhdmVSZXNvdXJjZXMocmVuZGVyZXIpKQor
ICAgICAgICByZXR1cm47CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGUqIGNhY2hlID0gcmVzb3VyY2Vz
Q2FjaGVGcm9tUmVuZGVyT2JqZWN0KHJlbmRlcmVyKTsKKyAgICBjYWNoZS0+cmVtb3ZlUmVzb3Vy
Y2VzRnJvbVJlbmRlck9iamVjdChyZW5kZXJlcik7CiAKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyLCBmYWxz
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlc0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmgKaW5kZXggNzJlNTI2YTY3M2YzMTRhNTg0ZmVmNDNkODI2ZTI0ZWJmNWUyNGEzMi4uNjMz
ZmNkNzNkOWY2MTAzNjBiYzg1OWZhMDBiOGY3MTc1YTdlMjBiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaApAQCAtMzcsMTAgKzM3LDE0
IEBAIHB1YmxpYzoKICAgICBTVkdSZXNvdXJjZXNDYWNoZSgpOwogICAgIH5TVkdSZXNvdXJjZXND
YWNoZSgpOwogCi0gICAgdm9pZCBhZGRSZXNvdXJjZXNGcm9tUmVuZGVyT2JqZWN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFJlbmRlclN0eWxlKik7Ci0gICAgdm9pZCByZW1vdmVSZXNvdXJjZXNGcm9t
UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyBTVkdSZXNvdXJjZXMqIGNh
Y2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqKTsKIAorICAg
IC8vIENhbGxlZCBmcm9tIGFsbCBTVkcgcmVuZGVyZXJzIGFkZENoaWxkKCkgbWV0aG9kcy4KKyAg
ICBzdGF0aWMgdm9pZCBjbGllbnRXYXNBZGRlZFRvVHJlZShSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUpOworCisgICAgLy8gQ2FsbGVkIGZyb20gYWxsIFNWRyByZW5k
ZXJlcnMgcmVtb3ZlQ2hpbGQoKSBtZXRob2RzLgorICAgIHN0YXRpYyB2b2lkIGNsaWVudFdpbGxC
ZVJlbW92ZWRGcm9tVHJlZShSZW5kZXJPYmplY3QqKTsKKwogICAgIC8vIENhbGxlZCBmcm9tIGFs
bCBTVkcgcmVuZGVyZXJzIGRlc3Ryb3koKSBtZXRob2RzIC0gZXhjZXB0IGZvciBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci4KICAgICBzdGF0aWMgdm9pZCBjbGllbnREZXN0cm95ZWQoUmVuZGVy
T2JqZWN0Kik7CiAKQEAgLTUwLDEzICs1NCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZy
b20gYWxsIFNWRyByZW5kZXJlcnMgc3R5bGVEaWRDaGFuZ2UoKSBtZXRob2RzLgogICAgIHN0YXRp
YyB2b2lkIGNsaWVudFN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAKLSAgICAvLyBDYWxsZWQgZnJvbSBhbGwg
U1ZHIHJlbmRlcmVycyB1cGRhdGVGcm9tRWxlbWVudCgpIG1ldGhvZHMuCi0gICAgc3RhdGljIHZv
aWQgY2xpZW50VXBkYXRlZEZyb21FbGVtZW50KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclN0
eWxlKiBuZXdTdHlsZSk7Ci0KICAgICAvLyBDYWxsZWQgZnJvbSBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcjo6d2lsbEJlRGVzdHJveWVkKCkuCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VEZXN0
cm95ZWQoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqKTsKIAogcHJpdmF0ZToKKyAgICB2b2lk
IGFkZFJlc291cmNlc0Zyb21SZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
U3R5bGUqKTsKKyAgICB2b2lkIHJlbW92ZVJlc291cmNlc0Zyb21SZW5kZXJPYmplY3QoUmVuZGVy
T2JqZWN0Kik7CisKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIFNWR1Jlc291cmNl
cyo+IG1fY2FjaGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAK
aW5kZXggZjMyZTY2YTdkZThiNWYwY2ViYmNmMzgzOGYxMjE1N2UwMTFkOWQ0Ny4uOWUwNDcyYmUx
MGRhODgzOTJlNGUyMGE2MDVlNzk3YzkxM2EzNTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcApAQCAtMzUwLDE0ICszNTAsNiBAQCB2b2lkIFNWR1N0eWxlZEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgfQogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpCi17Ci0gICAgU1ZHRWxl
bWVudDo6YXR0YWNoKCk7Ci0KLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJl
cigpKQotICAgICAgICBvYmplY3QtPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KIE5vZGU6Oklu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHU3R5bGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKHJvb3RQYXJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXgg
YmU5YmYyNGMzMTA3MzlmZTFjMGRhMzRmYTBiZTE3NzljODM5YjQ3MC4uMDM3ZDIyZGE2YzIyNTQ3
MDExNzE2YTk1OWM4OTc1ZTM1Mjc3YmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5oCkBAIC03MSw3ICs3MSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVh
bCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwo=
</data>
<flag name="review"
          id="150963"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>