<?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>39965</bug_id>
          
          <creation_ts>2010-05-31 11:19:02 -0700</creation_ts>
          <short_desc>SVG repaintRect should be empty if content got clipped away</short_desc>
          <delta_ts>2010-06-02 01:13:20 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40043</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232469</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-31 11:19:02 -0700</bug_when>
    <thetext>SVG repaintRect should be empty if content got clipped away</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232485</commentid>
    <comment_count>1</comment_count>
      <attachid>57487</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-31 11:47:07 -0700</bug_when>
    <thetext>Created attachment 57487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232662</commentid>
    <comment_count>2</comment_count>
      <attachid>57487</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-01 03:25:05 -0700</bug_when>
    <thetext>Comment on attachment 57487
Patch

Hi Dirk, some comments:

WebCore/ChangeLog:10
 +          The reference of the RenderObjects get already applied to the resource
I don&apos;t understand this comment.
I guess it&apos;s related to the fact that you&apos;re creating ClipperData/MaskerData earlier now, but I don&apos;t understand why this is needed.

WebCore/rendering/RenderSVGImage.cpp:154
 +          
Please remove the extra spaces.

WebCore/rendering/RenderSVGResourceClipper.cpp:274
 +      SVGClipPathElement* clipElement = static_cast&lt;SVGClipPathElement*&gt;(node());
That&apos;s not needed, you can leave it as it was before. You&apos;re not using &apos;clipElement&apos; anywhere but in the if some lines below.

WebCore/rendering/SVGRenderSupport.cpp:306
 +              repaintRect.intersect(masker-&gt;resourceBoundingBox(const_cast&lt;RenderObject*&gt;(object)));
No need for the const_cast again, you already have a local variable &apos;renderer&apos; above.

Okay, not much to fixup, but r-, as long as I don&apos;t understand why you have to early-create ClipperData/MaskerData etc I don&apos;t see the immediate need to do so, especially not if (selfNeedsLayout()) is true :-)
Please enlighten me.

Cheers,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232669</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-01 03:59:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Please enlighten me.
Sure :-) Imagine a RenderPath object. The object has a clipper as resource. This clipper clips away the whole content of the object. Therefore we don&apos;t run through the rendering process in RenderPath::paint, because the repaintRect is zero. No problem up to here.

Now we change the clipPath of the clipper. The resource (the clipper) tells its references to relayout. But we add the object to the resource during the paint phase in applyResource(). But we didn&apos;t enter this phase for the object, because the repaintRect was empty. Therefore the resource don&apos;t know of the referencing object, our RenderPath. This means that the RenderPath doesn&apos;t get relayouted and still don&apos;t get painted.

A complicated scenario, but we already have tests in DRT for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232675</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-01 04:29:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Please enlighten me.
&gt; Sure :-) Imagine a RenderPath object. The object has a clipper as resource. This clipper clips away the whole content of the object. Therefore we don&apos;t run through the rendering process in RenderPath::paint, because the repaintRect is zero. No problem up to here.
&gt; 
&gt; Now we change the clipPath of the clipper. The resource (the clipper) tells its references to relayout. But we add the object to the resource during the paint phase in applyResource(). But we didn&apos;t enter this phase for the object, because the repaintRect was empty. Therefore the resource don&apos;t know of the referencing object, our RenderPath. This means that the RenderPath doesn&apos;t get relayouted and still don&apos;t get painted.
&gt; 
&gt; A complicated scenario, but we already have tests in DRT for this.

Ah, good explaination. Can you somehow move that into a comment, explaining why you&apos;re adding this Masker/ClipperData/.. at this point? That would be perfect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232695</commentid>
    <comment_count>5</comment_count>
      <attachid>57531</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-01 05:32:27 -0700</bug_when>
    <thetext>Created attachment 57531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232734</commentid>
    <comment_count>6</comment_count>
      <attachid>57531</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-01 07:10:24 -0700</bug_when>
    <thetext>Comment on attachment 57531
Patch

r=me, though the ChangeLog looks ugly and the comments I asked for are missing, please fix it before landing.

Can you avoid the linebreaks in the ChangeLog, there is no 80 char limit there.

WebCore/ChangeLog:9
 +          got clipped away.
Here.

WebCore/ChangeLog:11
 +          during the layout phase now.
Here.

The whole sentence &quot; The reference of the RenderObjects need to get applied to MaskerData/ClipperData during the layout phase now.&quot; is still confusing.
How about &quot;The MaskerData/ClipperData &lt;-&gt; RenderObject mapping is now set up during the layout phase, to be able to track....&quot;

Same for &quot;With an empty repaintRect, the painting phase is never called&quot; -&gt; &quot;With an empty repaintRect, the paint() call is never entered.&quot;

&quot;and therefore the object don&apos;t get&quot; -&gt; &quot;and therefore the object doesn&apos;t get&quot;

&quot;This can cause problems, if the resource get changed by animations or scripts&quot; -&gt; &quot;This is problematic, if the resource is dynamically changed by animations/scripts&quot;.

&quot;and therefor won&apos;t get drawn.&quot; -&gt; &quot;and therefore won&apos;t get drawn&quot;.

etc..
Please rework the ChangeLog before landing :-)

WebCore/rendering/RenderSVGResourceClipper.cpp:271
 +      if (!m_clipper.contains(object))
Here the comment is missing, why the m_clipper.set() calls is done here.

WebCore/rendering/RenderSVGResourceMasker.cpp:215
 +      if (!m_masker.contains(object))
Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233129</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-02 01:13:20 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/60541 . Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57487</attachid>
            <date>2010-05-31 11:47:07 -0700</date>
            <delta_ts>2010-06-01 05:32:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39965-20100531204704.patch</filename>
            <type>text/plain</type>
            <size>29608</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDUtMzEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
cmVwYWludFJlY3Qgc2hvdWxkIGJlIGVtcHR5IGlmIGNvbnRlbnQgZ290IGNsaXBwZWQgYXdheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjUKKyAg
ICAgICAgCisgICAgICAgIFRoZSBTVkcgcmVwYWludFJlY3Qgb2YgdGhlIHJlbmRlcmVyIHdhcyBu
b3QgZW1wdHksIGlmIHRoZSBjb250ZW50CisgICAgICAgIGdvdCBjbGlwcGVkIGF3YXkuCisgICAg
ICAgIFRoZSByZWZlcmVuY2Ugb2YgdGhlIFJlbmRlck9iamVjdHMgZ2V0IGFscmVhZHkgYXBwbGll
ZCB0byB0aGUgcmVzb3VyY2UKKyAgICAgICAgZHVyaW5nIHRoZSBsYXlvdXQgcGhhc2Ugbm93LiBU
aGlzIGd1YXJhbnRlZXMgYSByZWxheW91dGluZyBvZiB0aGUgb2JqZWN0CisgICAgICAgIGV2ZW4g
aWYgdGhlIHJlcGFpbnRSZWN0IGlzIGVtcHR5LgorICAgICAgICBUaGUgY29tcGxldGUgcmVwYWlu
dFJlY3QgY2FsY3VsYXRpb24gKGluY2x1ZGluZyB0aGUgc21hbGxlc3QgY2xpcHBpbmcKKyAgICAg
ICAgYXJlYSBhbmQgc2hhZG93IHNpemUgY2FsY3VsYXRpb24pIG1vdmVkIGZyb20gdGhlIHJlbmRl
cmVycyB0byBTVkdSZW5kZXJTdXBwb3J0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBh
dGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6dXBkYXRlQ2FjaGVkQm91bmRh
cmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2UuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cmVzb3VyY2VCb3VuZGluZ0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXI6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6cmVzb3VyY2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZVNvbGlkQ29sb3I6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6
OnN0cm9rZUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJCYXNlOjppbnRlcnNl
Y3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVSZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6Omhhc0NsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omhhc01h
c2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aGFzRmlsdGVyKToKKwog
MjAxMC0wNS0zMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGFkZCBhIGZpbGUgbm90IGFkZGVkIGluIHI2MDQ0NS4KSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsMjMgKzI5Nyw4IEBA
IHZvaWQgUmVuZGVyUGF0aDo6dXBkYXRlQ2FjaGVkQm91bmRhcmllcygKICAgICB9CiAKICAgICAv
LyBDYWNoZSBzbWFsbGVzdCBwb3NzaWJsZSByZXBhaW50IHJlY3RhbmdsZQotCi0gICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlLiBXZSBhc3N1bWUgdGhhdCB0aGVyZSBpcyBu
byByZXNvdXJjZSwgaWYgdGhlIHJlY3QgaXMgZW1wdHkuCi0gICAgRmxvYXRSZWN0IHJlY3QgPSBm
aWx0ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKLSAgICAgICAgbV9yZXBhaW50Qm91bmRpbmdCb3ggPSBtX3N0cm9rZUFuZE1hcmtlckJvdW5k
aW5nQm94OwotICAgIGVsc2UKLSAgICAgICAgbV9yZXBhaW50Qm91bmRpbmdCb3ggPSByZWN0Owot
Ci0gICAgcmVjdCA9IGNsaXBwZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlm
ICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVwYWludEJvdW5kaW5nQm94LmludGVyc2Vj
dChyZWN0KTsKLQotICAgIHJlY3QgPSBtYXNrZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMp
OwotICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVwYWludEJvdW5kaW5nQm94
LmludGVyc2VjdChyZWN0KTsKLQotICAgIHN2Z1N0eWxlLT5pbmZsYXRlRm9yU2hhZG93KG1fcmVw
YWludEJvdW5kaW5nQm94KTsKKyAgICBtX3JlcGFpbnRCb3VuZGluZ0JveCA9IG1fc3Ryb2tlQW5k
TWFya2VyQm91bmRpbmdCb3g7CisgICAgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2Vz
KHRoaXMsIG1fcmVwYWludEJvdW5kaW5nQm94KTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niwy
MCArMTQ2LDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6c3Ryb2tlQm91bgogRmxv
YXRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IGNvbXB1dGVDb250YWluZXJC
b3VuZGluZ0JveCh0aGlzLCB0cnVlKTsKLQotICAgIEZsb2F0UmVjdCByZWN0ID0gZmlsdGVyQm91
bmRpbmdCb3hGb3JSZW5kZXJlcih0aGlzKTsKLSAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICByZXBhaW50UmVjdCA9IHJlY3Q7Ci0KLSAgICByZWN0ID0gY2xpcHBlckJvdW5kaW5nQm94
Rm9yUmVuZGVyZXIodGhpcyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVw
YWludFJlY3QuaW50ZXJzZWN0KHJlY3QpOwotCi0gICAgcmVjdCA9IG1hc2tlckJvdW5kaW5nQm94
Rm9yUmVuZGVyZXIodGhpcyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVw
YWludFJlY3QuaW50ZXJzZWN0KHJlY3QpOwotCi0gICAgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aW5m
bGF0ZUZvclNoYWRvdyhyZXBhaW50UmVjdCk7CisgICAgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRo
UmVzb3VyY2VzKHRoaXMsIHJlcGFpbnRSZWN0KTsKIAogICAgIHJldHVybiByZXBhaW50UmVjdDsK
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDYwNDQ0
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEsMjQgKzE1MSw5IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVwYWludFJl
Y3RJbkwKICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBjYWNoZWQgcmVwYWludCByZWN0LCBy
ZXR1cm4gdGhhdAogICAgIGlmICghbV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKLQorICAgICAgICAKICAg
ICBtX2NhY2hlZExvY2FsUmVwYWludFJlY3QgPSBtX2xvY2FsQm91bmRzOwotCi0gICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlLiBXZSBhc3N1bWUgdGhhdCB0aGVyZSBpcyBu
byBmaWx0ZXIsCi0gICAgLy8gY2xpcHBlciBvciBtYXNrZXIgaWYgdGhlIHJlY3RzIGFyZSBlbXB0
eS4KLSAgICBGbG9hdFJlY3QgcmVjdCA9IGZpbHRlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIodGhp
cyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgbV9jYWNoZWRMb2NhbFJlcGFp
bnRSZWN0ID0gcmVjdDsKLQotICAgIHJlY3QgPSBjbGlwcGVyQm91bmRpbmdCb3hGb3JSZW5kZXJl
cih0aGlzKTsKLSAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICBtX2NhY2hlZExvY2Fs
UmVwYWludFJlY3QuaW50ZXJzZWN0KHJlY3QpOwotCi0gICAgcmVjdCA9IG1hc2tlckJvdW5kaW5n
Qm94Rm9yUmVuZGVyZXIodGhpcyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAg
bV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0LmludGVyc2VjdChyZWN0KTsKLQotICAgIHN0eWxlKCkt
PnN2Z1N0eWxlKCktPmluZmxhdGVGb3JTaGFkb3cobV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0KTsK
KyAgICBpbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXModGhpcywgbV9jYWNoZWRMb2Nh
bFJlcGFpbnRSZWN0KTsKIAogICAgIHJldHVybiBtX2NhY2hlZExvY2FsUmVwYWludFJlY3Q7CiB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlLmgJKHJldmlzaW9uIDYwNDQ0
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNv
dXJjZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSosIEdyYXBoaWNzQ29udGV4dComLCB1bnNp
Z25lZCBzaG9ydCByZXNvdXJjZU1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5
UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0
KSB7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94
KFJlbmRlck9iamVjdCopID0gMDsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSgpIGNvbnN0ID0gMDsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2NiwxMiArMjY2LDIxIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxj
dWxhdGUKICAgICB9CiB9CiAKLUZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJl
c291cmNlQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCkKK0Zs
b2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCiB7CisgICAgaWYgKCFtX2NsaXBwZXIuY29udGFpbnMob2JqZWN0
KSkKKyAgICAgICAgbV9jbGlwcGVyLnNldChvYmplY3QsIG5ldyBDbGlwcGVyRGF0YSk7CisKKyAg
ICBTVkdDbGlwUGF0aEVsZW1lbnQqIGNsaXBFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQ2xpcFBh
dGhFbGVtZW50Kj4obm9kZSgpKTsKKyAgICAvLyBSZXNvdXJjZSB3YXMgbm90IGxheW91dGVkIHll
dC4gR2l2ZSBiYWNrIHRoZSBib3VuZGluZ0JveCBvZiB0aGUgb2JqZWN0LgorICAgIGlmIChzZWxm
TmVlZHNMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3go
KTsKKyAgICAKICAgICBpZiAobV9jbGlwQm91bmRhcmllcy5pc0VtcHR5KCkpCiAgICAgICAgIGNh
bGN1bGF0ZUNsaXBDb250ZW50UmVwYWludFJlY3QoKTsKIAotICAgIGlmIChzdGF0aWNfY2FzdDxT
VkdDbGlwUGF0aEVsZW1lbnQqPihub2RlKCkpLT5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CisgICAgaWYgKGNsaXBFbGVt
ZW50LT5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVD
VEJPVU5ESU5HQk9YKSB7CisgICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCA9IG9i
amVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCks
IG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZv
cm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkp
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgJ
KHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2xpZW50KFJlbmRlck9iamVjdCopOwogCiAgICAgdmlydHVh
bCBib29sIGFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqLCBHcmFwaGlj
c0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0Kik7CiAKICAgICB2
aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVy
biBDbGlwcGVyUmVzb3VyY2VUeXBlOyB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzksMTAgKzI3OSwxMCBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
CiAgICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwogfQogCi1GbG9h
dFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goY29uc3Qg
RmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCkKK0Zsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBpZiAoU1ZHRmlsdGVyRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlckVs
ZW1lbnQqPihub2RlKCkpKQotICAgICAgICByZXR1cm4gZWxlbWVudC0+ZmlsdGVyQm91bmRpbmdC
b3gob2JqZWN0Qm91bmRpbmdCb3gpOworICAgICAgICByZXR1cm4gZWxlbWVudC0+ZmlsdGVyQm91
bmRpbmdCb3gob2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKIAogICAgIHJldHVybiBGbG9h
dFJlY3QoKTsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuaAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHls
ZSosIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpOwogICAg
IHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqLCBHcmFwaGljc0Nv
bnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKIAotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVh
bCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqKTsKIAogICAgIFBh
c3NPd25QdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRQcmltaXRpdmVzKCk7CiAKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgJKHJldmlzaW9u
IDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBhcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3ND
b250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lk
IHBvc3RBcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIEdyYXBoaWNzQ29udGV4dComLCB1bnNp
Z25lZCBzaG9ydCByZXNvdXJjZU1vZGUpOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNl
Qm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCopIHsg
cmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZFN0b3BzKEdy
YWRpZW50RGF0YSosIGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCShyZXZp
c2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIEFmZmluZVRy
YW5zZm9ybSBtYXJrZXJUcmFuc2Zvcm1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZs
b2F0IGFuZ2xlLCBmbG9hdCBzdHJva2VXaWR0aCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSosIEdyYXBoaWNzQ29udGV4
dComLCB1bnNpZ25lZCBzaG9ydCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYpIHsgcmV0dXJuIEZsb2F0
UmVjdCgpOyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChSZW5k
ZXJPYmplY3QqKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiAgICAgRmxvYXRQb2ludCByZWZl
cmVuY2VQb2ludCgpIGNvbnN0OwogICAgIGZsb2F0IGFuZ2xlKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiA2
MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjEwLDEyICsyMTAsMjEgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6Y2FsY3VsYXRlTQogICAgIH0KIH0KIAotRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91
bmRpbmdCb3gpCitGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlc291cmNlQm91
bmRpbmdCb3goUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CisgICAgaWYgKCFtX21hc2tlci5jb250
YWlucyhvYmplY3QpKQorICAgICAgICBtX21hc2tlci5zZXQob2JqZWN0LCBuZXcgTWFza2VyRGF0
YSk7CisKKyAgICAvLyBSZXNvdXJjZSB3YXMgbm90IGxheW91dGVkIHlldC4gR2l2ZSBiYWNrIGNs
aXBwaW5nIHJlY3Qgb2YgdGhlIG1hc2suCisgICAgU1ZHTWFza0VsZW1lbnQqIG1hc2tFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U1ZHTWFza0VsZW1lbnQqPihub2RlKCkpOworICAgIEZsb2F0UmVjdCBv
YmplY3RCb3VuZGluZ0JveCA9IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKKyAgICBGbG9h
dFJlY3QgbWFza0JvdW5kYXJpZXMgPSBtYXNrRWxlbWVudC0+bWFza0JvdW5kaW5nQm94KG9iamVj
dEJvdW5kaW5nQm94KTsKKyAgICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkpCisgICAgICAgIHJldHVy
biBtYXNrQm91bmRhcmllczsKKwogICAgIGlmIChtX21hc2tCb3VuZGFyaWVzLmlzRW1wdHkoKSkK
ICAgICAgICAgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCi0gICAgU1ZHTWFz
a0VsZW1lbnQqIG1hc2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHTWFza0VsZW1lbnQqPihub2Rl
KCkpOwogICAgIGlmICghbWFza0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
IApAQCAtMjI3LDcgKzIzNiw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
cmVzb3UKICAgICAgICAgbWFza1JlY3QgPSAgdHJhbnNmb3JtLm1hcFJlY3QobWFza1JlY3QpOwog
ICAgIH0KIAotICAgIG1hc2tSZWN0LmludGVyc2VjdChtYXNrRWxlbWVudC0+bWFza0JvdW5kaW5n
Qm94KG9iamVjdEJvdW5kaW5nQm94KSk7CisgICAgbWFza1JlY3QuaW50ZXJzZWN0KG1hc2tCb3Vu
ZGFyaWVzKTsKICAgICByZXR1cm4gbWFza1JlY3Q7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNsaWVu
dChSZW5kZXJPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRl
ck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0
IHJlc291cmNlTW9kZSk7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0Jv
eChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5k
aW5nQm94KFJlbmRlck9iamVjdCopOwogCiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBt
YXNrVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNWR01hc2tF
bGVtZW50Kj4obm9kZSgpKS0+bWFza1VuaXRzKCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBtYXNrQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gdG9Vbml0VHlwZShzdGF0
aWNfY2FzdDxTVkdNYXNrRWxlbWVudCo+KG5vZGUoKSktPm1hc2tDb250ZW50VW5pdHMoKSk7IH0K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCShy
ZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3Jh
cGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIEdyYXBoaWNzQ29udGV4dCom
LCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJl
c291cmNlQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgeyByZXR1cm4gRmxvYXRSZWN0KCk7
IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVj
dCopIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291
cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQog
ICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaAkocmV2
aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlk
Q29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSosIEdy
YXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqLCBHcmFwaGljc0NvbnRleHQq
JiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYpIHsgcmV0dXJuIEZsb2F0UmVjdCgp
OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmpl
Y3QqKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0K
ICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsx
ODYsNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHVGV4dDo6b2JqZWN0Qm91bmRpbmdCCiAKIEZsb2F0
UmVjdCBSZW5kZXJTVkdUZXh0OjpzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0ID0gb2JqZWN0Qm91bmRpbmdCb3goKTsKKyAgICBGbG9hdFJlY3Qg
c3Ryb2tlUmVjdCA9IG9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBTVkcgbmVlZHMgdG8g
aW5jbHVkZSB0aGUgc3Ryb2tlV2lkdGgoKSwgbm90IHRoZSB0ZXh0U3Ryb2tlV2lkdGgoKS4KICAg
ICBpZiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aGFzU3Ryb2tlKCkpIHsKQEAgLTIwMiwzMSArMjAy
LDE2IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdUZXh0OjpzdHJva2VCb3VuZGluZ0IKICAgICAgICAg
fQogI2VuZGlmCiAKLSAgICAgICAgcmVwYWludFJlY3QuaW5mbGF0ZShzdHJva2VXaWR0aCk7Cisg
ICAgICAgIHN0cm9rZVJlY3QuaW5mbGF0ZShzdHJva2VXaWR0aCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIHJlcGFpbnRSZWN0OworICAgIHJldHVybiBzdHJva2VSZWN0OwogfQogCiBGbG9hdFJlY3Qg
UmVuZGVyU1ZHVGV4dDo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogewog
ICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHN0cm9rZUJvdW5kaW5nQm94KCk7Ci0KLSAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUuIFdlIGFzc3VtZSB0aGF0IHRoZXJl
IGlzIG5vIGZpbHRlciwKLSAgICAvLyBjbGlwcGVyIG9yIG1hc2tlciBpZiB0aGUgcmVjdHMgYXJl
IGVtcHR5LgotICAgIEZsb2F0UmVjdCByZWN0ID0gZmlsdGVyQm91bmRpbmdCb3hGb3JSZW5kZXJl
cih0aGlzKTsKLSAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXBhaW50UmVjdCA9
IHJlY3Q7Ci0KLSAgICByZWN0ID0gY2xpcHBlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIodGhpcyk7
Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0
KHJlY3QpOwotCi0gICAgcmVjdCA9IG1hc2tlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIodGhpcyk7
Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0
KHJlY3QpOwotCi0gICAgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aW5mbGF0ZUZvclNoYWRvdyhyZXBh
aW50UmVjdCk7CisgICAgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2VzKHRoaXMsIHJl
cGFpbnRSZWN0KTsKIAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsMzEg
KzI4MCwzMyBAQCBib29sIFNWR1JlbmRlckJhc2U6OmlzT3ZlcmZsb3dIaWRkZW4oY29uCiAgICAg
cmV0dXJuIG9iamVjdC0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT0hJRERFTjsKIH0KIAotRmxv
YXRSZWN0IFNWR1JlbmRlckJhc2U6OmZpbHRlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0Cit2b2lkIFNWR1JlbmRlckJhc2U6OmludGVyc2Vj
dFJlcGFpbnRSZWN0V2l0aFJlc291cmNlcyhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgRmxv
YXRSZWN0JiByZXBhaW50UmVjdCkgY29uc3QKIHsKKyAgICBBU1NFUlQob2JqZWN0KTsKKyAgICBB
U1NFUlQob2JqZWN0LT5zdHlsZSgpKTsKKyAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5
bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgaWYgKCFzdmdTdHlsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29u
c3RfY2FzdDxSZW5kZXJPYmplY3QqPihvYmplY3QpOwogI2lmIEVOQUJMRShGSUxURVJTKQotICAg
IGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gZ2V0UmVuZGVyU1ZHUmVzb3Vy
Y2VCeUlkPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPihvYmplY3QtPmRvY3VtZW50KCksIG9iamVj
dC0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyUmVzb3VyY2UoKSkpCi0gICAgICAgIHJldHVy
biBmaWx0ZXItPnJlc291cmNlQm91bmRpbmdCb3gob2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgp
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisgICAgaWYgKHN2Z1N0eWxlLT5o
YXNGaWx0ZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
ciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4ob2Jq
ZWN0LT5kb2N1bWVudCgpLCBzdmdTdHlsZS0+ZmlsdGVyUmVzb3VyY2UoKSkpCisgICAgICAgICAg
ICByZXBhaW50UmVjdCA9IGZpbHRlci0+cmVzb3VyY2VCb3VuZGluZ0JveChyZW5kZXJlcik7Cisg
ICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotfQotCi1GbG9hdFJlY3QgU1ZH
UmVuZGVyQmFzZTo6Y2xpcHBlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciog
Y2xpcHBlciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI+KG9iamVjdC0+ZG9jdW1lbnQoKSwgb2JqZWN0LT5zdHlsZSgpLT5zdmdTdHlsZSgpLT5jbGlw
cGVyUmVzb3VyY2UoKSkpCi0gICAgICAgIHJldHVybiBjbGlwcGVyLT5yZXNvdXJjZUJvdW5kaW5n
Qm94KG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7CiAKLSAgICByZXR1cm4gRmxvYXRSZWN0
KCk7Ci19Ci0KLUZsb2F0UmVjdCBTVkdSZW5kZXJCYXNlOjptYXNrZXJCb3VuZGluZ0JveEZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KSBjb25zdAotewotICAgIGlmIChSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJl
bmRlclNWR1Jlc291cmNlTWFza2VyPihvYmplY3QtPmRvY3VtZW50KCksIG9iamVjdC0+c3R5bGUo
KS0+c3ZnU3R5bGUoKS0+bWFza2VyUmVzb3VyY2UoKSkpCi0gICAgICAgIHJldHVybiBtYXNrZXIt
PnJlc291cmNlQm91bmRpbmdCb3gob2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKLQotICAg
IHJldHVybiBGbG9hdFJlY3QoKTsKKyAgICBpZiAoc3ZnU3R5bGUtPmhhc0NsaXBwZXIoKSkgewor
ICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0UmVuZGVy
U1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4ob2JqZWN0LT5kb2N1bWVu
dCgpLCBzdmdTdHlsZS0+Y2xpcHBlclJlc291cmNlKCkpKQorICAgICAgICAgICAgcmVwYWludFJl
Y3QuaW50ZXJzZWN0KGNsaXBwZXItPnJlc291cmNlQm91bmRpbmdCb3gocmVuZGVyZXIpKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKHN2Z1N0eWxlLT5oYXNNYXNrZXIoKSkgeworICAgICAgICBpZiAo
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJ
ZDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4ob2JqZWN0LT5kb2N1bWVudCgpLCBzdmdTdHlsZS0+
bWFza2VyUmVzb3VyY2UoKSkpCisgICAgICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QobWFz
a2VyLT5yZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ob2JqZWN0
KSkpOworICAgIH0KKyAgICAKKyAgICBzdmdTdHlsZS0+aW5mbGF0ZUZvclNoYWRvdyhyZXBhaW50
UmVjdCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlUGFpbnRpbmdSZXNvdXJj
ZShTVkdQYWludCogcGFpbnQsIFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1JlbmRlclN1cHBvcnQuaAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9TVkdSZW5kZXJTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCw4IEBA
IHB1YmxpYzoKICAgICAvLyBzdHJva2VCb3VuZGluZ0JveCgpIGluY2x1ZGVzIHRoZSBtYXJrZXIg
Ym91bmRhcmllcyBmb3IgYSBSZW5kZXJQYXRoIG9iamVjdAogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAotICAg
IC8vIHJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiBmaWx0ZXIsIGNsaXBwZXIsIG1hcmtlciBh
bmQgbWFza2VyIChvciB0aGUgZW1wdHkgcmVjdCBpZiBubyBmaWx0ZXIpIGluIGxvY2FsIGNvb3Jk
aW5hdGVzCi0gICAgRmxvYXRSZWN0IGZpbHRlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgRmxvYXRSZWN0IGNsaXBwZXJCb3VuZGluZ0JveEZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIEZsb2F0UmVjdCBtYXNr
ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAg
IC8vIENhbGN1bGF0ZXMgdGhlIHJlcGFpbnRSZWN0IGluIGNvbWJpbmF0aW9uIHdpdGggZmlsdGVy
LCBjbGlwcGVyIGFuZCBtYXNrZXIgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgdm9pZCBpbnRl
cnNlY3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXMoY29uc3QgUmVuZGVyT2JqZWN0KiwgRmxvYXRS
ZWN0JikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgSW50UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM0LDYgKzczNCw3IEBAIHZvaWQg
d3JpdGVSZXNvdXJjZXMoVGV4dFN0cmVhbSYgdHMsIGNvbnMKICAgICBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUgPSBvYmplY3Quc3R5bGUoKTsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3Zn
U3R5bGUgPSBzdHlsZS0+c3ZnU3R5bGUoKTsKIAorICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIg
PSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KG9iamVjdCk7CiAgICAgaWYgKCFzdmdTdHlsZS0+
bWFza2VyUmVzb3VyY2UoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291
cmNlTWFza2VyKiBtYXNrZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI+KG9iamVjdC5kb2N1bWVudCgpLCBzdmdTdHlsZS0+bWFza2VyUmVzb3VyY2Uo
KSkpIHsKICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOwpAQCAtNzQxLDcgKzc0
Miw3IEBAIHZvaWQgd3JpdGVSZXNvdXJjZXMoVGV4dFN0cmVhbSYgdHMsIGNvbnMKICAgICAgICAg
ICAgIHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAibWFza2VyIiwgc3ZnU3R5bGUtPm1hc2tl
clJlc291cmNlKCkpOwogICAgICAgICAgICAgdHMgPDwgIiAiOwogICAgICAgICAgICAgd3JpdGVT
dGFuZGFyZFByZWZpeCh0cywgKm1hc2tlciwgMCk7Ci0gICAgICAgICAgICB0cyA8PCAiICIgPDwg
bWFza2VyLT5yZXNvdXJjZUJvdW5kaW5nQm94KG9iamVjdC5vYmplY3RCb3VuZGluZ0JveCgpKSA8
PCAiXG4iOworICAgICAgICAgICAgdHMgPDwgIiAiIDw8IG1hc2tlci0+cmVzb3VyY2VCb3VuZGlu
Z0JveCgmcmVuZGVyZXIpIDw8ICJcbiI7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFzdmdT
dHlsZS0+Y2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgpKSB7CkBAIC03NTEsNyArNzUyLDcgQEAg
dm9pZCB3cml0ZVJlc291cmNlcyhUZXh0U3RyZWFtJiB0cywgY29ucwogICAgICAgICAgICAgd3Jp
dGVOYW1lQW5kUXVvdGVkVmFsdWUodHMsICJjbGlwUGF0aCIsIHN2Z1N0eWxlLT5jbGlwcGVyUmVz
b3VyY2UoKSk7CiAgICAgICAgICAgICB0cyA8PCAiICI7CiAgICAgICAgICAgICB3cml0ZVN0YW5k
YXJkUHJlZml4KHRzLCAqY2xpcHBlciwgMCk7Ci0gICAgICAgICAgICB0cyA8PCAiICIgPDwgY2xp
cHBlci0+cmVzb3VyY2VCb3VuZGluZ0JveChvYmplY3Qub2JqZWN0Qm91bmRpbmdCb3goKSkgPDwg
IlxuIjsKKyAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBjbGlwcGVyLT5yZXNvdXJjZUJvdW5kaW5n
Qm94KCZyZW5kZXJlcikgPDwgIlxuIjsKICAgICAgICAgfQogICAgIH0KICNpZiBFTkFCTEUoRklM
VEVSUykKQEAgLTc2Miw3ICs3NjMsNyBAQCB2b2lkIHdyaXRlUmVzb3VyY2VzKFRleHRTdHJlYW0m
IHRzLCBjb25zCiAgICAgICAgICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywgImZpbHRl
ciIsIHN2Z1N0eWxlLT5maWx0ZXJSZXNvdXJjZSgpKTsKICAgICAgICAgICAgIHRzIDw8ICIgIjsK
ICAgICAgICAgICAgIHdyaXRlU3RhbmRhcmRQcmVmaXgodHMsICpmaWx0ZXIsIDApOwotICAgICAg
ICAgICAgdHMgPDwgIiAiIDw8IGZpbHRlci0+cmVzb3VyY2VCb3VuZGluZ0JveChvYmplY3Qub2Jq
ZWN0Qm91bmRpbmdCb3goKSkgPDwgIlxuIjsKKyAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBmaWx0
ZXItPnJlc291cmNlQm91bmRpbmdCb3goJnJlbmRlcmVyKSA8PCAiXG4iOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBT
VkdfUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChTdHJpbmcsIGluaGVy
aXRlZFJlc291cmNlcywgbWFya2VyRW5kLCBNYXJrZXJFbmRSZXNvdXJjZSwgbWFya2VyRW5kUmVz
b3VyY2UsIFN0cmluZygpKQogCiAgICAgLy8gY29udmVuaWVuY2UKKyAgICBib29sIGhhc0NsaXBw
ZXIoKSBjb25zdCB7IHJldHVybiAhY2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgpOyB9CisgICAg
Ym9vbCBoYXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiAhbWFza2VyUmVzb3VyY2UoKS5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuICFmaWx0ZXJSZXNvdXJj
ZSgpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuICFt
YXJrZXJTdGFydFJlc291cmNlKCkuaXNFbXB0eSgpIHx8ICFtYXJrZXJNaWRSZXNvdXJjZSgpLmlz
RW1wdHkoKSB8fCAhbWFya2VyRW5kUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGhh
c1N0cm9rZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZVBhaW50KCktPnBhaW50VHlwZSgpICE9IFNW
R1BhaW50OjpTVkdfUEFJTlRUWVBFX05PTkU7IH0KICAgICBib29sIGhhc0ZpbGwoKSBjb25zdCB7
IHJldHVybiBmaWxsUGFpbnQoKS0+cGFpbnRUeXBlKCkgIT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZ
UEVfTk9ORTsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA0NDgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNS0zMSAgRGlyayBT
Y2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNWRyByZXBhaW50UmVjdCBzaG91bGQgYmUgZW1wdHkgaWYgY29u
dGVudCBnb3QgY2xpcHBlZCBhd2F5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTk2NQorICAgICAgICAKKyAgICAgICAgTmV3IHJlcGFpbnRSZWN0IGNh
bGN1bGF0aW9uIGNhdXNlcyB1cGRhdGVzIG9mIHRlc3RzLCB3aGVyZSB0aGUgY29udGVudCBnZXRz
CisgICAgICAgIGNsaXBwZWQgYXdheS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC13aXRoLWNvbnRhaW5lci1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL3N2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXdpdGgtaW52aXNpYmlsZS1jaGls
ZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vZW1wdHkt
Y2xpcC1wYXRoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2N1c3Rv
bS9lbXB0eS1tYXNrLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wNS0zMSAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2NsaXAtcGF0aC9jbGlw
LXBhdGgtd2l0aC1jb250YWluZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9zdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC13aXRoLWNvbnRhaW5lci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDYwNDQ0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L3N2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXdpdGgtY29udGFpbmVyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOSw1ICs5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
ICAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICg3MCw0MCkgc2l6ZSAyMDB4MTcw
CiAgICAgICAgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICg3MCw0MCkgc2l6ZSAyMDB4
MTcwCiAgICAgICAgICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICg3MCw0MCkgc2l6ZSAyMDB4
MTcwIFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDcwLjAwLDQwLjAw
KX1dIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdfV0gW2RhdGE9Ik0xMDAuMDAs
MC4wMCBMMTYwLjAwLDE3MC4wMCBMMC4wMCw2MC4wMCBMMjAwLjAwLDYwLjAwIEwzMC4wMCwxNzAu
MDAgWiJdCi0gICAgUmVuZGVyUGF0aCB7cmVjdH0gYXQgKDQwLDQwKSBzaXplIDMwMHgzMDAgW2Zp
bGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwODAwMF19XSBbZGF0YT0iTTQwLjAwLDQwLjAwIEwz
NDAuMDAsNDAuMDAgTDM0MC4wMCwzNDAuMDAgTDQwLjAwLDM0MC4wMCBaIl0KKyAgICBSZW5kZXJQ
YXRoIHtyZWN0fSBhdCAoMCwwKSBzaXplIDB4MCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0j
MDA4MDAwXX1dIFtkYXRhPSJNNDAuMDAsNDAuMDAgTDM0MC4wMCw0MC4wMCBMMzQwLjAwLDM0MC4w
MCBMNDAuMDAsMzQwLjAwIFoiXQogICAgICAgW2NsaXBQYXRoPSJjbGlwIl0gUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyIHtjbGlwUGF0aH0gYXQgKDAsMCkgc2l6ZSAweDAKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9zdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC13aXRoLWludmlzaWJpbGUt
Y2hpbGQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9zdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC13aXRoLWludmlzaWJpbGUtY2hpbGQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA2MDQ0NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC13aXRoLWludmlzaWJpbGUtY2hpbGQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC04LDUgKzgsNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICg3MCw0MCkgc2l6ZSAyMDB4MTcwCiAg
ICAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNzAsNDApIHNpemUgMjAweDE3MAog
ICAgICAgICAgICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKDcwLDQwKSBzaXplIDIwMHgxNzAgW3Ry
YW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oNzAuMDAsNDAuMDApfV0gW2Zp
bGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF19XSBbZGF0YT0iTTEwMC4wMCwwLjAwIEwx
NjAuMDAsMTcwLjAwIEwwLjAwLDYwLjAwIEwyMDAuMDAsNjAuMDAgTDMwLjAwLDE3MC4wMCBaIl0K
LSAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAoNDAsNDApIHNpemUgMzAweDMwMCBbZmlsbD17W3R5
cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXX1dIFtkYXRhPSJNNDAuMDAsNDAuMDAgTDM0MC4wMCw0
MC4wMCBMMzQwLjAwLDM0MC4wMCBMNDAuMDAsMzQwLjAwIFoiXQorICAgIFJlbmRlclBhdGgge3Jl
Y3R9IGF0ICgwLDApIHNpemUgMHgwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBd
fV0gW2RhdGE9Ik00MC4wMCw0MC4wMCBMMzQwLjAwLDQwLjAwIEwzNDAuMDAsMzQwLjAwIEw0MC4w
MCwzNDAuMDAgWiJdCiAgICAgICBbY2xpcFBhdGg9ImNsaXAiXSBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIge2NsaXBQYXRofSBhdCAoMCwwKSBzaXplIDB4MApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9jdXN0b20vZW1wdHktY2xpcC1wYXRoLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9lbXB0eS1jbGlwLXBh
dGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDQ0NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvY3VzdG9tL2VtcHR5LWNsaXAtcGF0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTcsMTAgKzcsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIge2NsaXBQYXRofSBbaWQ9ImVtcHR5cmVjdCJdIFtjbGlw
UGF0aFVuaXRzPXVzZXJTcGFjZU9uVXNlXQogICAgICAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAo
MCwwKSBzaXplIDB4MCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXX1dIFtkYXRh
PSIiXQogICAgIFJlbmRlclBhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgMTAweDEwMCBbZmlsbD17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXX1dIFtkYXRhPSJNMC4wMCwwLjAwIEwxMDAuMDAs
MC4wMCBMMTAwLjAwLDEwMC4wMCBMMC4wMCwxMDAuMDAgWiJdCi0gICAgUmVuZGVyU1ZHQ29udGFp
bmVyIHtnfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAKKyAgICBSZW5kZXJTVkdDb250YWluZXIge2d9
IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBbY2xpcFBhdGg9Im5vdGhpbmciXSBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIge2NsaXBQYXRofSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVy
UGF0aCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2Nv
bG9yPSNGRjAwMDBdfV0gW2RhdGE9Ik0wLjAwLDAuMDAgTDEwMC4wMCwwLjAwIEwxMDAuMDAsMTAw
LjAwIEwwLjAwLDEwMC4wMCBaIl0KLSAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDAp
IHNpemUgMTAweDEwMAorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAw
eDAKICAgICAgIFtjbGlwUGF0aD0iZW1wdHlyZWN0Il0gUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
IHtjbGlwUGF0aH0gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAgIFJlbmRlclBhdGgge3JlY3R9IGF0
ICgwLDApIHNpemUgMTAweDEwMCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jRkYwMDAwXX1d
IFtkYXRhPSJNMC4wMCwwLjAwIEwxMDAuMDAsMC4wMCBMMTAwLjAwLDEwMC4wMCBMMC4wMCwxMDAu
MDAgWiJdCiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwxMTYpIHNpemUgNDUyeDM4
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9lbXB0eS1tYXNrLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1
c3RvbS9lbXB0eS1tYXNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjA0NDQpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9lbXB0eS1tYXNrLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
ICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIge21hc2t9IFtpZD0ibWFzayJdIFttYXNrVW5pdHM9
b2JqZWN0Qm91bmRpbmdCb3hdIFttYXNrQ29udGVudFVuaXRzPXVzZXJTcGFjZU9uVXNlXQogICAg
ICAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAoMCwwKSBzaXplIDB4MCBbZmlsbD17W3R5cGU9U09M
SURdIFtjb2xvcj0jRkZGRkZGXX1dIFtkYXRhPSJNLTAuNTAsLTAuNTAgTC0wLjQwLC0wLjUwIEwt
MC40MCwtMC40MCBMLTAuNTAsLTAuNDAgWiJdCi0gICAgUmVuZGVyUGF0aCB7cmVjdH0gYXQgKDIw
LDIwKSBzaXplIDEwMHgxMDAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwODAwMF19XSBb
ZGF0YT0iTTIwLjAwLDIwLjAwIEwxMjAuMDAsMjAuMDAgTDEyMC4wMCwxMjAuMDAgTDIwLjAwLDEy
MC4wMCBaIl0KKyAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAoMCwwKSBzaXplIDB4MCBbZmlsbD17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXX1dIFtkYXRhPSJNMjAuMDAsMjAuMDAgTDEyMC4w
MCwyMC4wMCBMMTIwLjAwLDEyMC4wMCBMMjAuMDAsMTIwLjAwIFoiXQogICAgICAgW21hc2tlcj0i
bWFzayJdIFJlbmRlclNWR1Jlc291cmNlTWFza2VyIHttYXNrfSBhdCAoMCwwKSBzaXplIDB4MAog
ICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICg2MCw2MCkgc2l6ZSAyMXgxOCBjb250YWlucyAx
IGNodW5rKHMpCiAgICAgICBbbWFza2VyPSJtYXNrIl0gUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIg
e21hc2t9IGF0ICgwLDApIHNpemUgMHgwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57531</attachid>
            <date>2010-06-01 05:32:27 -0700</date>
            <delta_ts>2010-06-01 07:10:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39965-20100601143224.patch</filename>
            <type>text/plain</type>
            <size>29817</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMTAtMDYtMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
cmVwYWludFJlY3Qgc2hvdWxkIGJlIGVtcHR5IGlmIGNvbnRlbnQgZ290IGNsaXBwZWQgYXdheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjUKKyAg
ICAgICAgCisgICAgICAgIFRoZSBTVkcgcmVwYWludFJlY3Qgb2YgdGhlIHJlbmRlcmVyIHdhcyBu
b3QgZW1wdHksIGlmIHRoZSBjb250ZW50CisgICAgICAgIGdvdCBjbGlwcGVkIGF3YXkuCisgICAg
ICAgIFRoZSByZWZlcmVuY2Ugb2YgdGhlIFJlbmRlck9iamVjdHMgbmVlZCB0byBnZXQgYXBwbGll
ZCB0byBNYXNrZXJEYXRhL0NsaXBwZXJEYXRhCisgICAgICAgIGR1cmluZyB0aGUgbGF5b3V0IHBo
YXNlIG5vdy4KKyAgICAgICAgV2UgYXBwbHkgdGhlIG9iamVjdCB0byB0aGUgcmVzb3VyY2Ugb24g
cGFpbnRpbmcgYXQgdGhlIG1vbWVudC4gV2l0aCBhbiBlbXB0eQorICAgICAgICByZXBhaW50UmVj
dCwgdGhlIHBhaW50aW5nIHBoYXNlIGlzIG5ldmVyIGNhbGxlZCBhbmQgdGhlcmVmb3JlIHRoZSBv
YmplY3QgZG9uJ3QgZ2V0CisgICAgICAgIGFwcGxpZWQgdG8gdGhlIHJlc291cmNlLiBUaGlzIGNh
biBjYXVzZSBwcm9ibGVtcywgaWYgdGhlIHJlc291cmNlIGdldCBjaGFuZ2VkIGJ5IGFuaW1hdGlv
bnMKKyAgICAgICAgb3Igc2NyaXB0cy4gT24gYSBjaGFuZ2UsIHRoZSByZXNvdXJjZSB0ZWxscyBh
bGwgaXQncyBjYWxsZXIgdG8gcmVsYXlvdXQuIElmIHRoZQorICAgICAgICByZWZlcmVuY2UgdG8g
dGhlIGNhbGxlciAob3VyIFJlbmRlck9iamVjdCkgaXMgbWlzc2luZywgdGhlIG9iamVjdCB3b24n
dCBldmVyIHVwZGF0ZQorICAgICAgICBhbmQgdGhlcmVmb3Igd29uJ3QgZ2V0IGRyYXduLgorICAg
ICAgICBXZSBhbHJlYWR5IGhhdmUgTGF5b3V0VGVzdHMgdGhhdCBjb3ZlciB0aGlzIHByb2JsZW0u
CisgICAgICAgIFRoZSBjb21wbGV0ZSByZXBhaW50UmVjdCBjYWxjdWxhdGlvbiAoaW5jbHVkaW5n
IHRoZSBzbWFsbGVzdCBjbGlwcGluZworICAgICAgICBhcmVhIGFuZCBzaGFkb3cgc2l6ZSBjYWxj
dWxhdGlvbikgbW92ZWQgZnJvbSB0aGUgcmVuZGVyZXJzIHRvIFNWR1JlbmRlclN1cHBvcnQuIFRo
aXMKKyAgICAgICAgZWxpbWluYXRlcyByZWR1bmRhbnQgY29kZS4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OnVwZGF0
ZUNhY2hlZEJvdW5kYXJpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpyZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpyZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJlc291cmNlQm91bmRpbmdC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6cmVzb3VyY2VCb3VuZGluZ0JveCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpzdHJva2VCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdUZXh0OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
QmFzZTo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2VzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JlbmRlclN0eWxlOjpoYXNDbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN0eWxlOjpoYXNNYXNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omhh
c0ZpbHRlcik6CisKIDIwMTAtMDYtMDEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhdGguY3BwCShyZXZpc2lvbiA2MDQ3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsMjMgKzI5Nyw4IEBAIHZvaWQgUmVuZGVy
UGF0aDo6dXBkYXRlQ2FjaGVkQm91bmRhcmllcygKICAgICB9CiAKICAgICAvLyBDYWNoZSBzbWFs
bGVzdCBwb3NzaWJsZSByZXBhaW50IHJlY3RhbmdsZQotCi0gICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gYmUgY2FyZWZ1bCBoZXJlLiBXZSBhc3N1bWUgdGhhdCB0aGVyZSBpcyBubyByZXNvdXJjZSwg
aWYgdGhlIHJlY3QgaXMgZW1wdHkuCi0gICAgRmxvYXRSZWN0IHJlY3QgPSBmaWx0ZXJCb3VuZGlu
Z0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAg
bV9yZXBhaW50Qm91bmRpbmdCb3ggPSBtX3N0cm9rZUFuZE1hcmtlckJvdW5kaW5nQm94OwotICAg
IGVsc2UKLSAgICAgICAgbV9yZXBhaW50Qm91bmRpbmdCb3ggPSByZWN0OwotCi0gICAgcmVjdCA9
IGNsaXBwZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlmICghcmVjdC5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fcmVwYWludEJvdW5kaW5nQm94LmludGVyc2VjdChyZWN0KTsKLQot
ICAgIHJlY3QgPSBtYXNrZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlmICgh
cmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVwYWludEJvdW5kaW5nQm94LmludGVyc2VjdChy
ZWN0KTsKLQotICAgIHN2Z1N0eWxlLT5pbmZsYXRlRm9yU2hhZG93KG1fcmVwYWludEJvdW5kaW5n
Qm94KTsKKyAgICBtX3JlcGFpbnRCb3VuZGluZ0JveCA9IG1fc3Ryb2tlQW5kTWFya2VyQm91bmRp
bmdCb3g7CisgICAgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2VzKHRoaXMsIG1fcmVw
YWludEJvdW5kaW5nQm94KTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdDb250YWluZXIuY3BwCShyZXZpc2lvbiA2MDQ3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwyMCArMTQ2LDcgQEAg
RmxvYXRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6c3Ryb2tlQm91bgogRmxvYXRSZWN0IFJlbmRl
clNWR0NvbnRhaW5lcjo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogewog
ICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IGNvbXB1dGVDb250YWluZXJCb3VuZGluZ0JveCh0
aGlzLCB0cnVlKTsKLQotICAgIEZsb2F0UmVjdCByZWN0ID0gZmlsdGVyQm91bmRpbmdCb3hGb3JS
ZW5kZXJlcih0aGlzKTsKLSAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXBhaW50
UmVjdCA9IHJlY3Q7Ci0KLSAgICByZWN0ID0gY2xpcHBlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIo
dGhpcyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVwYWludFJlY3QuaW50
ZXJzZWN0KHJlY3QpOwotCi0gICAgcmVjdCA9IG1hc2tlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIo
dGhpcyk7Ci0gICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmVwYWludFJlY3QuaW50
ZXJzZWN0KHJlY3QpOwotCi0gICAgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aW5mbGF0ZUZvclNoYWRv
dyhyZXBhaW50UmVjdCk7CisgICAgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2VzKHRo
aXMsIHJlcGFpbnRSZWN0KTsKIAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDYwNDcwKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMjIg
KzE1Myw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVwYWludFJlY3RJbkwKICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKIAogICAgIG1fY2FjaGVkTG9jYWxS
ZXBhaW50UmVjdCA9IG1fbG9jYWxCb3VuZHM7Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBi
ZSBjYXJlZnVsIGhlcmUuIFdlIGFzc3VtZSB0aGF0IHRoZXJlIGlzIG5vIGZpbHRlciwKLSAgICAv
LyBjbGlwcGVyIG9yIG1hc2tlciBpZiB0aGUgcmVjdHMgYXJlIGVtcHR5LgotICAgIEZsb2F0UmVj
dCByZWN0ID0gZmlsdGVyQm91bmRpbmdCb3hGb3JSZW5kZXJlcih0aGlzKTsKLSAgICBpZiAoIXJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBtX2NhY2hlZExvY2FsUmVwYWludFJlY3QgPSByZWN0Owot
Ci0gICAgcmVjdCA9IGNsaXBwZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlm
ICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdC5pbnRl
cnNlY3QocmVjdCk7Ci0KLSAgICByZWN0ID0gbWFza2VyQm91bmRpbmdCb3hGb3JSZW5kZXJlcih0
aGlzKTsKLSAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICBtX2NhY2hlZExvY2FsUmVw
YWludFJlY3QuaW50ZXJzZWN0KHJlY3QpOwotCi0gICAgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aW5m
bGF0ZUZvclNoYWRvdyhtX2NhY2hlZExvY2FsUmVwYWludFJlY3QpOworICAgIGludGVyc2VjdFJl
cGFpbnRSZWN0V2l0aFJlc291cmNlcyh0aGlzLCBtX2NhY2hlZExvY2FsUmVwYWludFJlY3QpOwog
CiAgICAgcmV0dXJuIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKIH0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2UuaAkocmV2aXNpb24gNjA0NzApCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlck9iamVj
dCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291
cmNlTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJP
YmplY3QqLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQpIHsgfQotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgPSAwOwor
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0Kikg
PSAwOwogCiAgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3QgPSAwOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDYwNDcwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYs
MjAgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmNhbGN1bGF0ZQogICAgIH0KIH0K
IAotRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cmVzb3VyY2VCb3VuZGluZ0Jv
eChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KQorRmxvYXRSZWN0IFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKKyAgICBpZiAoIW1fY2xpcHBlci5jb250YWlucyhvYmplY3QpKQorICAgICAgICBtX2Ns
aXBwZXIuc2V0KG9iamVjdCwgbmV3IENsaXBwZXJEYXRhKTsKKworICAgIC8vIFJlc291cmNlIHdh
cyBub3QgbGF5b3V0ZWQgeWV0LiBHaXZlIGJhY2sgdGhlIGJvdW5kaW5nQm94IG9mIHRoZSBvYmpl
Y3QuCisgICAgaWYgKHNlbGZOZWVkc0xheW91dCgpKQorICAgICAgICByZXR1cm4gb2JqZWN0LT5v
YmplY3RCb3VuZGluZ0JveCgpOworICAgIAogICAgIGlmIChtX2NsaXBCb3VuZGFyaWVzLmlzRW1w
dHkoKSkKICAgICAgICAgY2FsY3VsYXRlQ2xpcENvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAgICAg
aWYgKHN0YXRpY19jYXN0PFNWR0NsaXBQYXRoRWxlbWVudCo+KG5vZGUoKSktPmNsaXBQYXRoVW5p
dHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIHsK
KyAgICAgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94ID0gb2JqZWN0LT5vYmplY3RCb3Vu
ZGluZ0JveCgpOwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdC
b3gueSgpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGlu
Z0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkocmV2aXNpb24gNjA0NzAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNv
dXJjZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSosIEdyYXBoaWNzQ29udGV4dComLCB1bnNp
Z25lZCBzaG9ydCByZXNvdXJjZU1vZGUpOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNl
Qm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVz
b3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZH
UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIENsaXBwZXJSZXNvdXJj
ZVR5cGU7IH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAkocmV2aXNpb24gNjA0NzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSwxMCArMjc5LDEwIEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICBmaWx0ZXJEYXRh
LT5zb3VyY2VHcmFwaGljQnVmZmVyLmNsZWFyKCk7CiB9CiAKLUZsb2F0UmVjdCBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmIG9iamVj
dEJvdW5kaW5nQm94KQorRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZXNvdXJj
ZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlmIChTVkdGaWx0ZXJF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxlbWVudCo+KG5vZGUoKSkp
Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5maWx0ZXJCb3VuZGluZ0JveChvYmplY3RCb3VuZGlu
Z0JveCk7CisgICAgICAgIHJldHVybiBlbGVtZW50LT5maWx0ZXJCb3VuZGluZ0JveChvYmplY3Qt
Pm9iamVjdEJvdW5kaW5nQm94KCkpOwogCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCShyZXZpc2lv
biA2MDQ3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBhcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3NDb250
ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHBv
c3RBcHBseVJlc291cmNlKFJlbmRlck9iamVjdCosIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25l
ZCBzaG9ydCByZXNvdXJjZU1vZGUpOwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VC
b3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNv
dXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCopOwogCiAgICAgUGFzc093blB0cjxTVkdGaWx0
ZXJCdWlsZGVyPiBidWlsZFByaW1pdGl2ZXMoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gNjA0NzApCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGFwcGx5UmVzb3Vy
Y2UoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWdu
ZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5UmVzb3Vy
Y2UoUmVuZGVyT2JqZWN0KiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291
cmNlTW9kZSk7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25z
dCBGbG9hdFJlY3QmKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0KikgeyByZXR1cm4gRmxvYXRSZWN0
KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkU3RvcHMoR3JhZGllbnREYXRhKiwgY29u
c3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+JikgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHJldmlzaW9uIDYwNDcwKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hcmtlclRy
YW5zZm9ybWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgYW5nbGUsIGZsb2F0
IHN0cm9rZVdpZHRoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJl
bmRlck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNo
b3J0KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91
bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICB2
aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCopIHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAKICAgICBGbG9hdFBvaW50IHJlZmVyZW5jZVBvaW50KCkgY29u
c3Q7CiAgICAgZmxvYXQgYW5nbGUoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDYwNDcwKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTAsMTIgKzIxMCwyMSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpjYWxjdWxh
dGVNCiAgICAgfQogfQogCi1GbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlc291
cmNlQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCkKK0Zsb2F0
UmVjdCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKKyAgICBpZiAoIW1fbWFza2VyLmNvbnRhaW5zKG9iamVjdCkpCisg
ICAgICAgIG1fbWFza2VyLnNldChvYmplY3QsIG5ldyBNYXNrZXJEYXRhKTsKKworICAgIC8vIFJl
c291cmNlIHdhcyBub3QgbGF5b3V0ZWQgeWV0LiBHaXZlIGJhY2sgY2xpcHBpbmcgcmVjdCBvZiB0
aGUgbWFzay4KKyAgICBTVkdNYXNrRWxlbWVudCogbWFza0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdNYXNrRWxlbWVudCo+KG5vZGUoKSk7CisgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94
ID0gb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpOworICAgIEZsb2F0UmVjdCBtYXNrQm91bmRh
cmllcyA9IG1hc2tFbGVtZW50LT5tYXNrQm91bmRpbmdCb3gob2JqZWN0Qm91bmRpbmdCb3gpOwor
ICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIG1hc2tCb3VuZGFyaWVz
OworCiAgICAgaWYgKG1fbWFza0JvdW5kYXJpZXMuaXNFbXB0eSgpKQogICAgICAgICBjYWxjdWxh
dGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CiAKLSAgICBTVkdNYXNrRWxlbWVudCogbWFza0Vs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdNYXNrRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgaWYgKCFt
YXNrRWxlbWVudCkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCkBAIC0yMjcsNyArMjM2
LDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpyZXNvdQogICAgICAgICBt
YXNrUmVjdCA9ICB0cmFuc2Zvcm0ubWFwUmVjdChtYXNrUmVjdCk7CiAgICAgfQogCi0gICAgbWFz
a1JlY3QuaW50ZXJzZWN0KG1hc2tFbGVtZW50LT5tYXNrQm91bmRpbmdCb3gob2JqZWN0Qm91bmRp
bmdCb3gpKTsKKyAgICBtYXNrUmVjdC5pbnRlcnNlY3QobWFza0JvdW5kYXJpZXMpOwogICAgIHJl
dHVybiBtYXNrUmVjdDsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiA2MDQ3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2xpZW50KFJlbmRlck9iamVjdCop
OwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
U3R5bGUqLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsK
LSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVj
dCYpOworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2Jq
ZWN0Kik7CiAKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0
IHsgcmV0dXJuIHRvVW5pdFR5cGUoc3RhdGljX2Nhc3Q8U1ZHTWFza0VsZW1lbnQqPihub2RlKCkp
LT5tYXNrVW5pdHMoKSk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250
ZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNWR01hc2tF
bGVtZW50Kj4obm9kZSgpKS0+bWFza0NvbnRlbnRVbml0cygpKTsgfQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHJldmlzaW9uIDYwNDcwKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGFwcGx5
UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqLCBHcmFwaGljc0NvbnRleHQqJiwg
dW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5
UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0
IHJlc291cmNlTW9kZSk7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0Jv
eChjb25zdCBGbG9hdFJlY3QmKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0KikgeyByZXR1cm4gRmxv
YXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRl
clNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCShyZXZpc2lvbiA2MDQ3MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBs
eVJlc291cmNlKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiwgR3JhcGhpY3NDb250ZXh0KiYs
IHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBcHBs
eVJlc291cmNlKFJlbmRlck9iamVjdCosIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9y
dCByZXNvdXJjZU1vZGUpOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdC
b3goY29uc3QgRmxvYXRSZWN0JikgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCopIHsgcmV0dXJuIEZs
b2F0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJj
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5k
ZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gNjA0NzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIEZsb2F0UmVj
dCBSZW5kZXJTVkdUZXh0OjpvYmplY3RCb3VuZGluZ0IKIAogRmxvYXRSZWN0IFJlbmRlclNWR1Rl
eHQ6OnN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgcmVwYWludFJl
Y3QgPSBvYmplY3RCb3VuZGluZ0JveCgpOworICAgIEZsb2F0UmVjdCBzdHJva2VSZWN0ID0gb2Jq
ZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIFNWRyBuZWVkcyB0byBpbmNsdWRlIHRoZSBzdHJv
a2VXaWR0aCgpLCBub3QgdGhlIHRleHRTdHJva2VXaWR0aCgpLgogICAgIGlmIChzdHlsZSgpLT5z
dmdTdHlsZSgpLT5oYXNTdHJva2UoKSkgewpAQCAtMjAyLDMxICsyMDIsMTYgQEAgRmxvYXRSZWN0
IFJlbmRlclNWR1RleHQ6OnN0cm9rZUJvdW5kaW5nQgogICAgICAgICB9CiAjZW5kaWYKIAotICAg
ICAgICByZXBhaW50UmVjdC5pbmZsYXRlKHN0cm9rZVdpZHRoKTsKKyAgICAgICAgc3Ryb2tlUmVj
dC5pbmZsYXRlKHN0cm9rZVdpZHRoKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVwYWludFJlY3Q7
CisgICAgcmV0dXJuIHN0cm9rZVJlY3Q7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdUZXh0Ojpy
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gc3Ryb2tlQm91bmRpbmdCb3goKTsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIGJlIGNhcmVmdWwgaGVyZS4gV2UgYXNzdW1lIHRoYXQgdGhlcmUgaXMgbm8gZmlsdGVyLAot
ICAgIC8vIGNsaXBwZXIgb3IgbWFza2VyIGlmIHRoZSByZWN0cyBhcmUgZW1wdHkuCi0gICAgRmxv
YXRSZWN0IHJlY3QgPSBmaWx0ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKHRoaXMpOwotICAgIGlm
ICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJlcGFpbnRSZWN0ID0gcmVjdDsKLQotICAgIHJl
Y3QgPSBjbGlwcGVyQm91bmRpbmdCb3hGb3JSZW5kZXJlcih0aGlzKTsKLSAgICBpZiAoIXJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QocmVjdCk7Ci0KLSAgICBy
ZWN0ID0gbWFza2VyQm91bmRpbmdCb3hGb3JSZW5kZXJlcih0aGlzKTsKLSAgICBpZiAoIXJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QocmVjdCk7Ci0KLSAgICBz
dHlsZSgpLT5zdmdTdHlsZSgpLT5pbmZsYXRlRm9yU2hhZG93KHJlcGFpbnRSZWN0KTsKKyAgICBp
bnRlcnNlY3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXModGhpcywgcmVwYWludFJlY3QpOwogCiAg
ICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAJKHJldmlzaW9uIDYwNDcwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCwzMSArMjgwLDMzIEBAIGJvb2wg
U1ZHUmVuZGVyQmFzZTo6aXNPdmVyZmxvd0hpZGRlbihjb24KICAgICByZXR1cm4gb2JqZWN0LT5z
dHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPSElEREVOOwogfQogCi1GbG9hdFJlY3QgU1ZHUmVuZGVy
QmFzZTo6ZmlsdGVyQm91bmRpbmdCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCkgY29uc3QKK3ZvaWQgU1ZHUmVuZGVyQmFzZTo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRo
UmVzb3VyY2VzKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBGbG9hdFJlY3QmIHJlcGFpbnRS
ZWN0KSBjb25zdAogeworICAgIEFTU0VSVChvYmplY3QpOworICAgIEFTU0VSVChvYmplY3QtPnN0
eWxlKCkpOworICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IG9iamVjdC0+c3R5
bGUoKS0+c3ZnU3R5bGUoKTsKKyAgICBpZiAoIXN2Z1N0eWxlKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlck9i
amVjdCo+KG9iamVjdCk7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgaWYgKFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI+KG9iamVjdC0+ZG9jdW1lbnQoKSwgb2JqZWN0LT5zdHlsZSgpLT5zdmdT
dHlsZSgpLT5maWx0ZXJSZXNvdXJjZSgpKSkKLSAgICAgICAgcmV0dXJuIGZpbHRlci0+cmVzb3Vy
Y2VCb3VuZGluZ0JveChvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBpZiAoc3ZnU3R5bGUtPmhhc0ZpbHRlcigpKSB7Cisg
ICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gZ2V0UmVuZGVyU1ZH
UmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPihvYmplY3QtPmRvY3VtZW50KCks
IHN2Z1N0eWxlLT5maWx0ZXJSZXNvdXJjZSgpKSkKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0g
ZmlsdGVyLT5yZXNvdXJjZUJvdW5kaW5nQm94KHJlbmRlcmVyKTsKKyAgICB9CiAjZW5kaWYKLSAg
ICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLUZsb2F0UmVjdCBTVkdSZW5kZXJCYXNlOjpjbGlw
cGVyQm91bmRpbmdCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkgY29u
c3QKLXsKLSAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0UmVu
ZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4ob2JqZWN0LT5kb2N1
bWVudCgpLCBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCktPmNsaXBwZXJSZXNvdXJjZSgpKSkK
LSAgICAgICAgcmV0dXJuIGNsaXBwZXItPnJlc291cmNlQm91bmRpbmdCb3gob2JqZWN0LT5vYmpl
Y3RCb3VuZGluZ0JveCgpKTsKIAotICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLX0KLQotRmxvYXRS
ZWN0IFNWR1JlbmRlckJhc2U6Om1hc2tlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyKiBtYXNrZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI+KG9iamVjdC0+ZG9jdW1lbnQoKSwgb2JqZWN0LT5zdHlsZSgpLT5zdmdTdHlsZSgpLT5t
YXNrZXJSZXNvdXJjZSgpKSkKLSAgICAgICAgcmV0dXJuIG1hc2tlci0+cmVzb3VyY2VCb3VuZGlu
Z0JveChvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOwotCi0gICAgcmV0dXJuIEZsb2F0UmVj
dCgpOworICAgIGlmIChzdmdTdHlsZS0+aGFzQ2xpcHBlcigpKSB7CisgICAgICAgIGlmIChSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPihvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxlLT5j
bGlwcGVyUmVzb3VyY2UoKSkpCisgICAgICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoY2xp
cHBlci0+cmVzb3VyY2VCb3VuZGluZ0JveChyZW5kZXJlcikpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoc3ZnU3R5bGUtPmhhc01hc2tlcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlciogbWFza2VyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291
cmNlTWFza2VyPihvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxlLT5tYXNrZXJSZXNvdXJjZSgp
KSkKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChtYXNrZXItPnJlc291cmNlQm91
bmRpbmdCb3gocmVuZGVyZXIpKTsKKyAgICB9CisgICAgCisgICAgc3ZnU3R5bGUtPmluZmxhdGVG
b3JTaGFkb3cocmVwYWludFJlY3QpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW52YWxpZGF0
ZVBhaW50aW5nUmVzb3VyY2UoU1ZHUGFpbnQqIHBhaW50LCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgJKHJldmlzaW9uIDYwNDcwKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OCwxMCArNTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gc3Ryb2tlQm91bmRpbmdCb3goKSBpbmNs
dWRlcyB0aGUgbWFya2VyIGJvdW5kYXJpZXMgZm9yIGEgUmVuZGVyUGF0aCBvYmplY3QKICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
UmVjdCgpOyB9CiAKLSAgICAvLyByZXR1cm5zIHRoZSBib3VuZGluZyBib3ggb2YgZmlsdGVyLCBj
bGlwcGVyLCBtYXJrZXIgYW5kIG1hc2tlciAob3IgdGhlIGVtcHR5IHJlY3QgaWYgbm8gZmlsdGVy
KSBpbiBsb2NhbCBjb29yZGluYXRlcwotICAgIEZsb2F0UmVjdCBmaWx0ZXJCb3VuZGluZ0JveEZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIEZsb2F0UmVjdCBjbGlw
cGVyQm91bmRpbmdCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICBGbG9hdFJlY3QgbWFza2VyQm91bmRpbmdCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICAvLyBDYWxjdWxhdGVzIHRoZSByZXBhaW50UmVjdCBpbiBjb21iaW5h
dGlvbiB3aXRoIGZpbHRlciwgY2xpcHBlciBhbmQgbWFza2VyIGluIGxvY2FsIGNvb3JkaW5hdGVz
LgorICAgIHZvaWQgaW50ZXJzZWN0UmVwYWludFJlY3RXaXRoUmVzb3VyY2VzKGNvbnN0IFJlbmRl
ck9iamVjdCosIEZsb2F0UmVjdCYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIElu
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDYwNDcwKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNCw2
ICs3MzQsNyBAQCB2b2lkIHdyaXRlUmVzb3VyY2VzKFRleHRTdHJlYW0mIHRzLCBjb25zCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LnN0eWxlKCk7CiAgICAgY29uc3QgU1ZH
UmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUtPnN2Z1N0eWxlKCk7CiAKKyAgICBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihvYmplY3QpOwogICAg
IGlmICghc3ZnU3R5bGUtPm1hc2tlclJlc291cmNlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlm
IChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VC
eUlkPFJlbmRlclNWR1Jlc291cmNlTWFza2VyPihvYmplY3QuZG9jdW1lbnQoKSwgc3ZnU3R5bGUt
Pm1hc2tlclJlc291cmNlKCkpKSB7CiAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50
KTsKQEAgLTc0MSw3ICs3NDIsNyBAQCB2b2lkIHdyaXRlUmVzb3VyY2VzKFRleHRTdHJlYW0mIHRz
LCBjb25zCiAgICAgICAgICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywgIm1hc2tlciIs
IHN2Z1N0eWxlLT5tYXNrZXJSZXNvdXJjZSgpKTsKICAgICAgICAgICAgIHRzIDw8ICIgIjsKICAg
ICAgICAgICAgIHdyaXRlU3RhbmRhcmRQcmVmaXgodHMsICptYXNrZXIsIDApOwotICAgICAgICAg
ICAgdHMgPDwgIiAiIDw8IG1hc2tlci0+cmVzb3VyY2VCb3VuZGluZ0JveChvYmplY3Qub2JqZWN0
Qm91bmRpbmdCb3goKSkgPDwgIlxuIjsKKyAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBtYXNrZXIt
PnJlc291cmNlQm91bmRpbmdCb3goJnJlbmRlcmVyKSA8PCAiXG4iOwogICAgICAgICB9CiAgICAg
fQogICAgIGlmICghc3ZnU3R5bGUtPmNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKSkgewpAQCAt
NzUxLDcgKzc1Miw3IEBAIHZvaWQgd3JpdGVSZXNvdXJjZXMoVGV4dFN0cmVhbSYgdHMsIGNvbnMK
ICAgICAgICAgICAgIHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAiY2xpcFBhdGgiLCBzdmdT
dHlsZS0+Y2xpcHBlclJlc291cmNlKCkpOwogICAgICAgICAgICAgdHMgPDwgIiAiOwogICAgICAg
ICAgICAgd3JpdGVTdGFuZGFyZFByZWZpeCh0cywgKmNsaXBwZXIsIDApOwotICAgICAgICAgICAg
dHMgPDwgIiAiIDw8IGNsaXBwZXItPnJlc291cmNlQm91bmRpbmdCb3gob2JqZWN0Lm9iamVjdEJv
dW5kaW5nQm94KCkpIDw8ICJcbiI7CisgICAgICAgICAgICB0cyA8PCAiICIgPDwgY2xpcHBlci0+
cmVzb3VyY2VCb3VuZGluZ0JveCgmcmVuZGVyZXIpIDw8ICJcbiI7CiAgICAgICAgIH0KICAgICB9
CiAjaWYgRU5BQkxFKEZJTFRFUlMpCkBAIC03NjIsNyArNzYzLDcgQEAgdm9pZCB3cml0ZVJlc291
cmNlcyhUZXh0U3RyZWFtJiB0cywgY29ucwogICAgICAgICAgICAgd3JpdGVOYW1lQW5kUXVvdGVk
VmFsdWUodHMsICJmaWx0ZXIiLCBzdmdTdHlsZS0+ZmlsdGVyUmVzb3VyY2UoKSk7CiAgICAgICAg
ICAgICB0cyA8PCAiICI7CiAgICAgICAgICAgICB3cml0ZVN0YW5kYXJkUHJlZml4KHRzLCAqZmls
dGVyLCAwKTsKLSAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBmaWx0ZXItPnJlc291cmNlQm91bmRp
bmdCb3gob2JqZWN0Lm9iamVjdEJvdW5kaW5nQm94KCkpIDw8ICJcbiI7CisgICAgICAgICAgICB0
cyA8PCAiICIgPDwgZmlsdGVyLT5yZXNvdXJjZUJvdW5kaW5nQm94KCZyZW5kZXJlcikgPDwgIlxu
IjsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA2MDQ3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOSBA
QCBwdWJsaWM6CiAgICAgU1ZHX1JTX0RFRklORV9BVFRSSUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJ
QUwoU3RyaW5nLCBpbmhlcml0ZWRSZXNvdXJjZXMsIG1hcmtlckVuZCwgTWFya2VyRW5kUmVzb3Vy
Y2UsIG1hcmtlckVuZFJlc291cmNlLCBTdHJpbmcoKSkKIAogICAgIC8vIGNvbnZlbmllbmNlCisg
ICAgYm9vbCBoYXNDbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gIWNsaXBwZXJSZXNvdXJjZSgpLmlz
RW1wdHkoKTsgfQorICAgIGJvb2wgaGFzTWFza2VyKCkgY29uc3QgeyByZXR1cm4gIW1hc2tlclJl
c291cmNlKCkuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biAhZmlsdGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc01hcmtlcnMoKSBj
b25zdCB7IHJldHVybiAhbWFya2VyU3RhcnRSZXNvdXJjZSgpLmlzRW1wdHkoKSB8fCAhbWFya2Vy
TWlkUmVzb3VyY2UoKS5pc0VtcHR5KCkgfHwgIW1hcmtlckVuZFJlc291cmNlKCkuaXNFbXB0eSgp
OyB9CiAgICAgYm9vbCBoYXNTdHJva2UoKSBjb25zdCB7IHJldHVybiBzdHJva2VQYWludCgpLT5w
YWludFR5cGUoKSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9OT05FOyB9CiAgICAgYm9vbCBo
YXNGaWxsKCkgY29uc3QgeyByZXR1cm4gZmlsbFBhaW50KCktPnBhaW50VHlwZSgpICE9IFNWR1Bh
aW50OjpTVkdfUEFJTlRUWVBFX05PTkU7IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwNDcwKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTAtMDYtMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcgcmVwYWludFJlY3Qgc2hvdWxk
IGJlIGVtcHR5IGlmIGNvbnRlbnQgZ290IGNsaXBwZWQgYXdheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjUKKyAgICAgICAgCisgICAgICAgIE5l
dyByZXBhaW50UmVjdCBjYWxjdWxhdGlvbiBjYXVzZXMgdXBkYXRlcyBvZiB0ZXN0cywgd2hlcmUg
dGhlIGNvbnRlbnQgZ2V0cworICAgICAgICBjbGlwcGVkIGF3YXkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2NsaXAtcGF0aC9jbGlwLXBhdGgtd2l0aC1jb250YWluZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC13aXRo
LWludmlzaWJpbGUtY2hpbGQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9z
dmcvY3VzdG9tL2VtcHR5LWNsaXAtcGF0aC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL3N2Zy9jdXN0b20vZW1wdHktbWFzay1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDYtMDEg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJl
dmlld2VkOiBDaHJvbWl1bTogcmViYXNlbGluZSBzb21lIHN2ZyB0ZXN0cy4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC13aXRoLWNvbnRhaW5l
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXdpdGgtY29udGFpbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjA0NzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2NsaXAtcGF0aC9jbGlw
LXBhdGgtd2l0aC1jb250YWluZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDUg
KzksNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJTVkdD
b250YWluZXIge3VzZX0gYXQgKDcwLDQwKSBzaXplIDIwMHgxNzAKICAgICAgICAgICAgIFJlbmRl
clNWR0NvbnRhaW5lciB7Z30gYXQgKDcwLDQwKSBzaXplIDIwMHgxNzAKICAgICAgICAgICAgICAg
UmVuZGVyUGF0aCB7cGF0aH0gYXQgKDcwLDQwKSBzaXplIDIwMHgxNzAgW3RyYW5zZm9ybT17bT0o
KDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oNzAuMDAsNDAuMDApfV0gW2ZpbGw9e1t0eXBlPVNP
TElEXSBbY29sb3I9IzAwMDAwMF19XSBbZGF0YT0iTTEwMC4wMCwwLjAwIEwxNjAuMDAsMTcwLjAw
IEwwLjAwLDYwLjAwIEwyMDAuMDAsNjAuMDAgTDMwLjAwLDE3MC4wMCBaIl0KLSAgICBSZW5kZXJQ
YXRoIHtyZWN0fSBhdCAoNDAsNDApIHNpemUgMzAweDMwMCBbZmlsbD17W3R5cGU9U09MSURdIFtj
b2xvcj0jMDA4MDAwXX1dIFtkYXRhPSJNNDAuMDAsNDAuMDAgTDM0MC4wMCw0MC4wMCBMMzQwLjAw
LDM0MC4wMCBMNDAuMDAsMzQwLjAwIFoiXQorICAgIFJlbmRlclBhdGgge3JlY3R9IGF0ICgwLDAp
IHNpemUgMHgwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdfV0gW2RhdGE9Ik00
MC4wMCw0MC4wMCBMMzQwLjAwLDQwLjAwIEwzNDAuMDAsMzQwLjAwIEw0MC4wMCwzNDAuMDAgWiJd
CiAgICAgICBbY2xpcFBhdGg9ImNsaXAiXSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIge2NsaXBQ
YXRofSBhdCAoMCwwKSBzaXplIDB4MApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXdpdGgtaW52aXNpYmlsZS1jaGlsZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXdpdGgtaW52aXNpYmlsZS1jaGlsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwNDcw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXdp
dGgtaW52aXNpYmlsZS1jaGlsZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNSAr
OCw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICBSZW5kZXJTVkdDb250
YWluZXIge3VzZX0gYXQgKDcwLDQwKSBzaXplIDIwMHgxNzAKICAgICAgICAgICBSZW5kZXJTVkdD
b250YWluZXIge2d9IGF0ICg3MCw0MCkgc2l6ZSAyMDB4MTcwCiAgICAgICAgICAgICBSZW5kZXJQ
YXRoIHtwYXRofSBhdCAoNzAsNDApIHNpemUgMjAweDE3MCBbdHJhbnNmb3JtPXttPSgoMS4wMCww
LjAwKSgwLjAwLDEuMDApKSB0PSg3MC4wMCw0MC4wMCl9XSBbZmlsbD17W3R5cGU9U09MSURdIFtj
b2xvcj0jMDAwMDAwXX1dIFtkYXRhPSJNMTAwLjAwLDAuMDAgTDE2MC4wMCwxNzAuMDAgTDAuMDAs
NjAuMDAgTDIwMC4wMCw2MC4wMCBMMzAuMDAsMTcwLjAwIFoiXQotICAgIFJlbmRlclBhdGgge3Jl
Y3R9IGF0ICg0MCw0MCkgc2l6ZSAzMDB4MzAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMw
MDgwMDBdfV0gW2RhdGE9Ik00MC4wMCw0MC4wMCBMMzQwLjAwLDQwLjAwIEwzNDAuMDAsMzQwLjAw
IEw0MC4wMCwzNDAuMDAgWiJdCisgICAgUmVuZGVyUGF0aCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAw
eDAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwODAwMF19XSBbZGF0YT0iTTQwLjAwLDQw
LjAwIEwzNDAuMDAsNDAuMDAgTDM0MC4wMCwzNDAuMDAgTDQwLjAwLDM0MC4wMCBaIl0KICAgICAg
IFtjbGlwUGF0aD0iY2xpcCJdIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciB7Y2xpcFBhdGh9IGF0
ICgwLDApIHNpemUgMHgwCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3Rv
bS9lbXB0eS1jbGlwLXBhdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2VtcHR5LWNsaXAtcGF0aC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDYwNDcwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vZW1w
dHktY2xpcC1wYXRoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNywxMCArNywxMCBA
QCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlciB7Y2xpcFBhdGh9IFtpZD0iZW1wdHlyZWN0Il0gW2NsaXBQYXRoVW5pdHM9dXNlclNwYWNl
T25Vc2VdCiAgICAgICAgIFJlbmRlclBhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgMHgwIFtmaWxs
PXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdfV0gW2RhdGE9IiJdCiAgICAgUmVuZGVyUGF0
aCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDgwMDBdfV0gW2RhdGE9Ik0wLjAwLDAuMDAgTDEwMC4wMCwwLjAwIEwxMDAuMDAsMTAwLjAw
IEwwLjAwLDEwMC4wMCBaIl0KLSAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNp
emUgMTAweDEwMAorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAweDAK
ICAgICAgIFtjbGlwUGF0aD0ibm90aGluZyJdIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciB7Y2xp
cFBhdGh9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAoMCww
KSBzaXplIDEwMHgxMDAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9I0ZGMDAwMF19XSBbZGF0
YT0iTTAuMDAsMC4wMCBMMTAwLjAwLDAuMDAgTDEwMC4wMCwxMDAuMDAgTDAuMDAsMTAwLjAwIFoi
XQotICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisgICAg
UmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgW2NsaXBQYXRo
PSJlbXB0eXJlY3QiXSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIge2NsaXBQYXRofSBhdCAoMCww
KSBzaXplIDB4MAogICAgICAgUmVuZGVyUGF0aCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAw
IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRjAwMDBdfV0gW2RhdGE9Ik0wLjAwLDAuMDAg
TDEwMC4wMCwwLjAwIEwxMDAuMDAsMTAwLjAwIEwwLjAwLDEwMC4wMCBaIl0KICAgICBSZW5kZXJT
VkdDb250YWluZXIge2d9IGF0ICgwLDExNikgc2l6ZSA0NTJ4MzgKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2VtcHR5LW1hc2stZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2VtcHR5LW1hc2stZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2MDQ3MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvY3VzdG9tL2VtcHR5LW1hc2stZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcg
KzUsNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJTVkdIaWRkZW5D
b250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlciB7bWFza30gW2lkPSJtYXNrIl0gW21hc2tVbml0cz1vYmplY3RCb3VuZGluZ0JveF0g
W21hc2tDb250ZW50VW5pdHM9dXNlclNwYWNlT25Vc2VdCiAgICAgICAgIFJlbmRlclBhdGgge3Jl
Y3R9IGF0ICgwLDApIHNpemUgMHgwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRkZGRkZd
fV0gW2RhdGE9Ik0tMC41MCwtMC41MCBMLTAuNDAsLTAuNTAgTC0wLjQwLC0wLjQwIEwtMC41MCwt
MC40MCBaIl0KLSAgICBSZW5kZXJQYXRoIHtyZWN0fSBhdCAoMjAsMjApIHNpemUgMTAweDEwMCBb
ZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXX1dIFtkYXRhPSJNMjAuMDAsMjAuMDAg
TDEyMC4wMCwyMC4wMCBMMTIwLjAwLDEyMC4wMCBMMjAuMDAsMTIwLjAwIFoiXQorICAgIFJlbmRl
clBhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgMHgwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDgwMDBdfV0gW2RhdGE9Ik0yMC4wMCwyMC4wMCBMMTIwLjAwLDIwLjAwIEwxMjAuMDAsMTIw
LjAwIEwyMC4wMCwxMjAuMDAgWiJdCiAgICAgICBbbWFza2VyPSJtYXNrIl0gUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIge21hc2t9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgUmVuZGVyU1ZHVGV4dCB7
dGV4dH0gYXQgKDYwLDYwKSBzaXplIDIxeDE4IGNvbnRhaW5zIDEgY2h1bmsocykKICAgICAgIFtt
YXNrZXI9Im1hc2siXSBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciB7bWFza30gYXQgKDAsMCkgc2l6
ZSAweDAK
</data>
<flag name="review"
          id="42141"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>