<?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>10835</bug_id>
          
          <creation_ts>2006-09-13 06:05:47 -0700</creation_ts>
          <short_desc>REGRESSION: LOTS of SVG-related leaks</short_desc>
          <delta_ts>2006-09-15 16:49:28 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55388</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-09-13 06:05:47 -0700</bug_when>
    <thetext>Buildbot indicates that the leaks originated with &lt;http://build.webkit.org/post-commit-leaks-powerpc-mac-os-x/builds/2515&gt;, which corresponds to revision 16308.  Revision 16308 is the fix for bug 10750, &quot;SVG needs SVGAnimatedTypeNamePropertyName&lt;ClassName&gt; classes&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55403</commentid>
    <comment_count>1</comment_count>
      <attachid>10529</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-09-13 08:42:46 -0700</bug_when>
    <thetext>Created attachment 10529
Initial patch

This should fix the mem leaks we&apos;ve been seeing recently.
Though I have no idea wheter all of them are fixed, because
if I run run-webkit-tests --leaks, _no_ SVG related memory
leaks are shown, before and after this patch. No idea why.

But it&apos;s quite clear that there are memory leaks in SVGList&apos;s
which reference ptr objects. This patch fixes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55411</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-09-13 09:58:12 -0700</bug_when>
    <thetext>If anyone takes a look at the patch, please read this first :-)

I orignally had clearVector() a non-const method, and it didn&apos;t
take the Vector&lt;Item&gt; param. I planned to make m_vector protected
and access it from SVGList::clearVector, though that never compiled.
Anyone can enlighten me why?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55448</commentid>
    <comment_count>3</comment_count>
      <attachid>10529</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-13 14:41:01 -0700</bug_when>
    <thetext>Comment on attachment 10529
Initial patch

This could be done in a cleaner fashion using a Vector of RefPtrs and pointer-specialization in the SVGList template (similar to how hashtraits is constructed).

But this is OK as is, and it&apos;s good to get this landed to get the leaks fixed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55496</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-09-14 06:14:57 -0700</bug_when>
    <thetext>This patch did not appear to fix the memory leaks.  &lt;http://build.webkit.org/results/post-commit-leaks-powerpc-mac-os-x/2541/DumpRenderTree5-leaks.txt&gt; contains the leaks output from the most recent buildbot build, and indicates leaks under SVGPathElement::createSVGPathSegCurvetoCubicAbs, SVGTransformable::parseTransformAttribute and SVGLengthList::parse.

Nikolas, are you testing for leaks with a debug build?  In release builds I believe we use a custom memory allocator which will circumvent the `leaks&apos; tools check for memory leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55508</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-09-14 09:26:13 -0700</bug_when>
    <thetext>Hi Mark,

&gt; leaks under SVGPathElement::createSVGPathSegCurvetoCubicAbs,
&gt; SVGTransformable::parseTransformAttribute and SVGLengthList::parse.
&gt; 
&gt; Nikolas, are you testing for leaks with a debug build?  In release builds I
&gt; believe we use a custom memory allocator which will circumvent the `leaks&apos;
&gt; tools check for memory leaks.

Hah! That&apos;s it! I used release builds on osx, as I do actual debugging
within Linux - well, now that&apos;s really stupid... Will try with a debug
build later on today...

Thanks a lot, Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55604</commentid>
    <comment_count>6</comment_count>
      <attachid>10578</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-09-15 12:33:20 -0700</bug_when>
    <thetext>Created attachment 10578
Updated patch

Now that I can finally check for leaks locally on osx, I could really fix them.
It&apos;s done in a much better way now - new SVGListTraits class which is modelled
after WTF::VectorTraits which makes virtual functions unneccessary and removes
the SVGListBase base class. Down to 2 leaks again. No regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55611</commentid>
    <comment_count>7</comment_count>
      <attachid>10578</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-15 14:40:55 -0700</bug_when>
    <thetext>Comment on attachment 10578
Updated patch

This could be done cleaner, without having to modify the generator, or having getFirst() etc, return a RefPtr (instead of a raw pointer).

Given how many leaks the existing code causes, I think it&apos;s worth landing this now, and filling a follow-up bug about cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55623</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-09-15 16:49:28 -0700</bug_when>
    <thetext>Landed as r16378.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10529</attachid>
            <date>2006-09-13 08:42:46 -0700</date>
            <delta_ts>2006-09-15 12:33:20 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>mem-leak-fixes.diff</filename>
            <type>text/plain</type>
            <size>3453</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShSZXZpc2lvbiAxNjM0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShBcmJlaXRza29waWUpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDYtMDktMTMgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggbmV3bHkgaW50cm9kdWNlZCBtZW1vcnkgbGVha3MgaW4gU1ZHLiBUaGFua3MgdG8g
YWxsIHBlb3BsZSBub3RpY2luZyEKKworICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaXN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaXN0QmFzZTo6flNWR0xpc3RCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3RCYXNlOjpjbGVhclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0QmFzZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2xlYXJWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyTGlz
dC5jcHA6IHMvZmxvYXQvZG91YmxlLyAtIGZvcmdvdCB0aGF0IQorICAgICAgICAoU1ZHTnVtYmVy
TGlzdDo6U1ZHTnVtYmVyTGlzdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR051bWJlckxpc3Qu
aDogRGl0dG8uCisKIDIwMDYtMDktMTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IGVzZWlkZWwuCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlzdC5oCShSZXZp
c2lvbiAxNjM0MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpc3QuaAkoQXJiZWl0c2tvcGll
KQpAQCAtMzksMTIgKzM5LDE0IEBACiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTGlz
dEJhc2UoKSB7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHTGlzdEJhc2UoKSB7IH0KKyAgICAgICAg
dmlydHVhbCB+U1ZHTGlzdEJhc2UoKSB7IGNsZWFyVmVjdG9yKG1fdmVjdG9yKTsgfQogCisgICAg
ICAgIC8vIFRvIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBTVkdMaXN0IHNwZWNpYWxpemF0aW9ucyEK
ICAgICAgICAgdmlydHVhbCBJdGVtIG51bGxJdGVtKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJWZWN0b3IoVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpIGNvbnN0IHsgdmVjdG9y
LmNsZWFyKCk7IH0KIAogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZJdGVtcygpIGNvbnN0
IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQotICAgICAgICB2b2lkIGNsZWFyKEV4Y2VwdGlv
bkNvZGUgJikgeyBtX3ZlY3Rvci5jbGVhcigpOyB9CisgICAgICAgIHZvaWQgY2xlYXIoRXhjZXB0
aW9uQ29kZSAmKSB7IGNsZWFyVmVjdG9yKG1fdmVjdG9yKTsgfQogCiAgICAgICAgIEl0ZW0gaW5p
dGlhbGl6ZShJdGVtIG5ld0l0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICB7CkBAIC0x
MzcsMTcgKzEzOSwzNiBAQAogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgSXRl
bSBudWxsSXRlbSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJWZWN0b3IoVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yPEl0ZW0+Ojpjb25zdF9pdGVyYXRvciBpdGVy
YXRvcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaXRlcmF0b3IgZW5kID0gdmVjdG9yLmVu
ZCgpOworICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHZlY3Rvci5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgKCppdCktPmRlcmVmKCk7CisKKyAgICAgICAg
ICAgIHZlY3Rvci5jbGVhcigpOyAgICAKKyAgICAgICAgfQogICAgIH07CiAKLSAgICAvLyBTcGVj
aWFsaXphdGlvbiBmb3IgU3RyaW5nLi4uCisgICAgLy8gU3BlY2lhbGl6YXRpb24gZm9yIGRvdWJs
ZQogICAgIHRlbXBsYXRlPD4KKyAgICBjbGFzcyBTVkdMaXN0PGRvdWJsZT4gOiBwdWJsaWMgU1ZH
TGlzdEJhc2U8ZG91YmxlPgorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgZG91
YmxlIG51bGxJdGVtKCkgY29uc3QgeyByZXR1cm4gMC4wOyB9CisgICAgfTsKKworICAgIC8vIFNw
ZWNpYWxpemF0aW9uIGZvciBTdHJpbmcKKyAgICB0ZW1wbGF0ZTw+CiAgICAgY2xhc3MgU1ZHTGlz
dDxTdHJpbmc+IDogcHVibGljIFNWR0xpc3RCYXNlPFN0cmluZz4KICAgICB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBudWxsSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgfTsKIAotICAgIC8vIFNwZWNpYWxpemF0aW9uIGZvciBGbG9hdFBvaW50Li4u
CisgICAgLy8gU3BlY2lhbGl6YXRpb24gZm9yIEZsb2F0UG9pbnQKICAgICB0ZW1wbGF0ZTw+CiAg
ICAgY2xhc3MgU1ZHTGlzdDxGbG9hdFBvaW50PiA6IHB1YmxpYyBTVkdMaXN0QmFzZTxGbG9hdFBv
aW50PgogICAgIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCShSZXZpc2lv
biAxNjM0MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCShBcmJlaXRz
a29waWUpCkBAIC0zMiw3ICszMiw3IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU1ZH
TnVtYmVyTGlzdDo6U1ZHTnVtYmVyTGlzdCgpCi0gICAgOiBTVkdMaXN0PGZsb2F0PigpCisgICAg
OiBTVkdMaXN0PGRvdWJsZT4oKQogewogfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdO
dW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlz
dC5oCShSZXZpc2lvbiAxNjM0MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3Qu
aAkoQXJiZWl0c2tvcGllKQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQog
ewotICAgIGNsYXNzIFNWR051bWJlckxpc3QgOiBwdWJsaWMgU1ZHTGlzdDxmbG9hdD4KKyAgICBj
bGFzcyBTVkdOdW1iZXJMaXN0IDogcHVibGljIFNWR0xpc3Q8ZG91YmxlPgogICAgIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNWR051bWJlckxpc3QoKTsK
</data>
<flag name="review"
          id="3406"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10578</attachid>
            <date>2006-09-15 12:33:20 -0700</date>
            <delta_ts>2006-09-15 14:40:55 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>svg-mem-leak-fixes.diff</filename>
            <type>text/plain</type>
            <size>22018</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjM3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDYtMDktMTUgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlczogaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDgzNQorICAgICAgICBGaXggc3ZnIG1lbW9yeSBsZWFrcy4KKworICAgICAgICBSZXdvcmtl
ZCBTVkdMaXN0IHRvIGRlYWwgd2l0aCBSZWZQdHIncyBmb3IgcHRyIHR5cGVzCisgICAgICAgIHdo
aWNoIG1ha2VzIG1hbnVhbCByZWZjb3VudGluZyB1bm5lY2Vzc2FyeSwgYW5kIGlzIG11Y2ggc2Fm
ZXIuCisKKyAgICAgICAgUmVtb3ZpbmcgYWxsIHZpcnR1YWwgZnVuY3Rpb25zIChudWxsSXRlbSkg
ZnJvbSBTVkdMaXN0LCBhbmQKKyAgICAgICAgYWxzbyByZW1vdmUgU1ZHTGlzdEJhc2UuIFN3aXRj
aCB0byBhIHNpbWlsYXIgY29uY2VwdCBsaWtlCisgICAgICAgIFZlY3Rvci9WZWN0b3JUcmFpdHMg
KHNlZSBuZXcgZmlsZSBTVkdMaXN0VHJhaXRzLmgpLgorCisgICAgICAgIENyZWRpdHMgZ28gdG8g
RXJpYy9NYWNpZWogZm9yIHRoZSBpbnNwaXJhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OiBBZGQgU1ZHTGlzdFRyYWl0cy5jcHAgdG8gYnVpbGQKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOiBHZW5lcmF0b3IgY2hhbmdlcyBmb3IgU1ZHVHJhbnNmb3Jt
L1BhdGhTZWcvTGVuZ3RoTGlzdCAobm93IFJlZlB0ciBiYXNlZCkKKyAgICAgICAgKiBrY2FudmFz
L1JlbmRlclNWR1RleHQuY3BwOiBBZGQgc29tZSBnZXQoKSBtZXRob2RzLCBhcyBTVkdMZW5ndGhM
aXN0IGlzIFJlZlB0ciBiYXNlZCBub3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
Ojp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudC5jcHA6IEFkZCBzb21lIGdldCgpIG1ldGhvZHMsIGFzIFNWR1Ry
YW5zZm9ybUxpc3QgaXMgUmVmUHRyIGJhc2VkIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUaW1lckV2ZW50KToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHA6IEJlIFJlZlB0ciBiYXNlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q6OlNWR0VsZW1lbnRJbnN0YW5jZUxp
c3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2VMaXN0Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aExpc3Q6OlNWR0xlbmd0aExpc3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdMZW5ndGhMaXN0Lmg6IERpdHRvLgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaXN0Lmg6IFJl
d3JvdGUsIGFzIGRlc2NyaWJlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RUeXBl
T3BlcmF0aW9uczo6bnVsbEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6U1ZHTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojp+U1ZHTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpnZXRGaXJz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpnZXRMYXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6cmVwbGFj
ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6cmVtb3ZlSXRlbSk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0xpc3RUcmFpdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHTGlzdFRyYWl0cy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDogQWRkIHNvbWUgZ2V0KCkgbWV0aG9kcywg
YXMgU1ZHUGF0aFNlZ0xpc3QgaXMgUmVmUHRyIGJhc2VkIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhFbGVtZW50Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0
aFNlZ0xpc3QuY3BwOiBCZSBSZWZQdHIgYmFzZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnTGlzdDo6U1ZHUGF0aFNlZ0xpc3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXRoU2Vn
TGlzdC5oOiBEaXR0by4KKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcDogU3R5
bGUgY2xlYW51cC4KKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHA6IEJlIFJlZlB0ciBiYXNlZC4KKyAg
ICAgICAgKFNWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9ybUxpc3QpOgorICAgICAgICAoU1ZH
VHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCk6CisgICAgICAgIChT
VkdUcmFuc2Zvcm1MaXN0Ojpjb25zb2xpZGF0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuaDogRGl0dG8uCisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuY3BwOiBGaXggUmVmUHRyIHVzYWdlIG9mIFNWR1RyYW5zZm9ybS4KKyAgICAgICAgKFNWR1Ry
YW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKwogMjAwNi0wOS0xNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTaWVkZWwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gMTYzNzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNiArODc4LDE2IEBACiAgICAgICBt
eSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgIG15ICRo
YXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CiAKKyAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBTVkdM
ZW5ndGhMaXN0IC8gU1ZHVHJhbnNmb3JtTGlzdCAvIFNWR1BhdGhTZWdMaXN0LgorICAgICAgIyBU
aGVzZSBsaXN0cyBzdGlsbCB1c2UgUmVmUHRyIG9iamVjdHMsIHdoaWNoIHdpbGwgYmUgY2hhbmdl
ZCBpbiBmdXR1cmUuCisgICAgICAjIEZvciBub3cgdGhleSBuZWVkIHNwZWNpYWwgdHJlYXRtZW50
IGluIHRoZSBnZW5lcmF0aW9uLgorICAgICAgbXkgJGlzUmVmUHRyID0gMDsKKyAgICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiU1ZHTGVuZ3RoTGlzdCIgb3IKKyAgICAgICAgICAkaW50ZXJmYWNl
TmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlzdCIgb3IKKyAgICAgICAgICAkaW50ZXJmYWNlTmFtZSBl
cSAiU1ZHUGF0aFNlZ0xpc3QiKSB7CisgICAgICAgICRpc1JlZlB0ciA9IDE7CisgICAgICB9CisK
ICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7
CiAgICAgICAgIGlmICghJGhhc09wdGlvbmFsQXJndW1lbnRzICYmICRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CiAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiAgICAgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6ZSgpO1xuIik7CkBAIC04ODYs
NyArODk2LDcgQEAKIAogICAgICAgICBpZiAoJGhhc09wdGlvbmFsQXJndW1lbnRzKSB7CiAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChhcmdzQ291bnQgPCAiIC4gKCRw
YXJhbUluZGV4ICsgMSkgLiAiKSB7XG4iKTsKLSAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAkcGFyYW1JbmRleCwg
IiAgICAiIHggMyk7CisgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgJHBhcmFtSW5kZXgsICIgICAgIiB4IDMsICRp
c1JlZlB0cik7CiAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cblxuIik7
CiAgICAgICAgIH0KIApAQCAtOTE1LDcgKzkyNSw3IEBACiAgICAgICB9CiAKICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4iKTsKLSAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlv
bkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRwYXJhbUluZGV4LCAiICAgICIgeCAy
KTsKKyAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAk
ZnVuY3Rpb25TdHJpbmcsICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaXNSZWZQdHIpOwogCiAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsgIyBlbmQgY2FzZQogICAgIH0KQEAg
LTk3MCw2ICs5ODAsNyBAQAogICAgIG15ICRmdW5jdGlvblN0cmluZyA9IHNoaWZ0OwogICAgIG15
ICRwYXJhbUluZGV4ID0gc2hpZnQ7CiAgICAgbXkgJGluZGVudCA9IHNoaWZ0OworICAgIG15ICRp
c1JlZlB0ciA9IHNoaWZ0OwogCiAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25z
fSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKQEAg
LTk4Miw3ICs5OTMsNyBAQAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2Vw
dGlvbnN9OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4ganNV
bmRlZmluZWQoKTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4iIC4gJGluZGVudCAuICJLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRmdW5jdGlvblN0cmluZykgLiAiO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRmdW5j
dGlvblN0cmluZywgJGlzUmVmUHRyKSAuICI7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0
aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAicmV0dXJuIHJlc3VsdDtcbiIpOwogICAgIH0KQEAgLTExNTUsNyArMTE2Niw4IEBACiB7
CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwogICAgIG15ICR2YWx1ZSA9IHNoaWZ0OwotICAg
IAorICAgIG15ICRpc1JlZlB0ciA9IHNoaWZ0OworIAogICAgIG15ICR0eXBlID0gJGNvZGVHZW5l
cmF0b3ItPlN0cmlwTW9kdWxlKCRzaWduYXR1cmUtPnR5cGUpOwogCiAgICAgaWYgKCR0eXBlIGVx
ICJib29sZWFuIikgewpAQCAtMTI1MSw2ICsxMjYzLDExIEBACiAgICAgICAgICRpbXBsSW5jbHVk
ZXN7Imtqc19odG1sLmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxDb2xsZWN0
aW9uLmgifSA9IDE7CiAgICAgICAgIHJldHVybiAiZ2V0SFRNTENvbGxlY3Rpb24oZXhlYywgJHZh
bHVlLmdldCgpKSI7CisgICAgfSBlbHNpZiAoKCR0eXBlIGVxICJTVkdMZW5ndGgiIG9yCisgICAg
ICAgICAgICAgICR0eXBlIGVxICJTVkdUcmFuc2Zvcm0iKSBhbmQgJGlzUmVmUHRyIGVxIDEpIHsK
KyAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CisgICAgICAgJGltcGxJbmNs
dWRlc3siJHR5cGUuaCJ9ID0gMTsKKyAgICAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlLmdl
dCgpKSI7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNWR1JlY3QiIG9yCiAgICAgICAgICAgICAg
JHR5cGUgZXEgIlNWR1BvaW50IiBvcgogICAgICAgICAgICAgICR0eXBlIGVxICJTVkdOdW1iZXIi
KSB7CkBAIC0xMjYxLDcgKzEyNzgsMTIgQEAKICAgICAgICAgJGpvaW5lZE5hbWUgPSAkdHlwZTsK
ICAgICAgICAgJGpvaW5lZE5hbWUgPX4gcy9BYnN8UmVsLy87CiAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IiRqb2luZWROYW1lLmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFs
dWUpIjsKKworICAgICAgICBpZiAoJGlzUmVmUHRyIGVxIDEpIHsKKyAgICAgICAgICAgIHJldHVy
biAidG9KUyhleGVjLCAkdmFsdWUuZ2V0KCkpIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKKyAgICAgICAgfQogICAgIH0gZWxzaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgJGlt
cGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlw
ZS5oIn0gPSAxOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL1JlbmRlclNWR1RleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMTYz
NzApCisrKyBXZWJDb3JlL2tjYW52YXMvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDggKzQ5LDggQEAKIHsKICAgICBTVkdUZXh0RWxlbWVudCAqdGV4dCA9IHN0YXRpY19j
YXN0PFNWR1RleHRFbGVtZW50ICo+KGVsZW1lbnQoKSk7CiAKLSAgICBTVkdMZW5ndGgqIHhPZmZz
ZXQgPSB0ZXh0LT54KCktPmdldEZpcnN0KCk7Ci0gICAgU1ZHTGVuZ3RoKiB5T2Zmc2V0ID0gdGV4
dC0+eSgpLT5nZXRGaXJzdCgpOworICAgIFNWR0xlbmd0aCogeE9mZnNldCA9IHRleHQtPngoKS0+
Z2V0Rmlyc3QoKS5nZXQoKTsKKyAgICBTVkdMZW5ndGgqIHlPZmZzZXQgPSB0ZXh0LT55KCktPmdl
dEZpcnN0KCkuZ2V0KCk7CiAKICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRl
KHhPZmZzZXQgPyB4T2Zmc2V0LT52YWx1ZSgpIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHlPZmZzZXQgPyB5T2Zmc2V0LT52YWx1ZSgpIDogMCk7CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNjM3MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogICAgICAgICAgICAg
aWYgKHRyYW5zZm9ybUxpc3QpIHsKICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgPCB0cmFuc2Zv
cm1MaXN0LT5udW1iZXJPZkl0ZW1zKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBTVkdU
cmFuc2Zvcm0gKnZhbHVlID0gdHJhbnNmb3JtTGlzdC0+Z2V0SXRlbShpLCBlYyk7CisgICAgICAg
ICAgICAgICAgICAgIFNWR1RyYW5zZm9ybSAqdmFsdWUgPSB0cmFuc2Zvcm1MaXN0LT5nZXRJdGVt
KGksIGVjKS5nZXQoKTs7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAJKHJldmlz
aW9uIDE2MzcwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1ZHRWxlbWVudEluc3RhbmNlTGlzdDo6U1ZHRWxlbWVudEluc3RhbmNlTGlzdCgpCi0gICAg
OiBTVkdMaXN0PFNWR0VsZW1lbnRJbnN0YW5jZSo+KCkKKyAgICA6IFNWR0xpc3Q8UmVmUHRyPFNW
R0VsZW1lbnRJbnN0YW5jZT4gPigpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xlbmd0aExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0
aExpc3QuY3BwCShyZXZpc2lvbiAxNjM3MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0
aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR0xlbmd0aExpc3Q6OlNWR0xlbmd0aExpc3QoKQotICAgIDogU1ZHTGlzdDxT
VkdMZW5ndGgqPigpCisgICAgOiBTVkdMaXN0PFJlZlB0cjxTVkdMZW5ndGg+ID4oKQogewogfQog
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkocmV2aXNpb24gMTYzNzApCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
KworI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkU3Ry
aW5nTGlzdC5oIgogCiAjaW5jbHVkZSAiU1ZHTWF0cml4LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjM3MCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBACiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZm9yKGludCBpID0gMDsgaSA8IGxlbjsgKytp
KQogICAgIHsKLSAgICAgICAgU1ZHUGF0aFNlZyAqcCA9IHBhdGhTZWdMaXN0KCktPmdldEl0ZW0o
aSwgZWMpOworICAgICAgICBTVkdQYXRoU2VnICpwID0gcGF0aFNlZ0xpc3QoKS0+Z2V0SXRlbShp
LCBlYykuZ2V0KCk7OwogICAgICAgICBzd2l0Y2gocC0+cGF0aFNlZ1R5cGUoKSkKICAgICAgICAg
ewogICAgICAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19BQlM6CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCShyZXZpc2lvbiAxNjM3MCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdQYXRoU2VnTGlzdDo6U1ZHUGF0
aFNlZ0xpc3QoKQotICAgIDogU1ZHTGlzdDxTVkdQYXRoU2VnKj4oKQorICAgIDogU1ZHTGlzdDxS
ZWZQdHI8U1ZHUGF0aFNlZz4gPigpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1RyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNm
b3JtLmNwcAkocmV2aXNpb24gMTYzNzApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zv
cm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKCkgOiBTaGFyZWQ8U1ZH
VHJhbnNmb3JtPigpCitTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybSgpCisgICAgOiBTaGFyZWQ8
U1ZHVHJhbnNmb3JtPigpCisgICAgLCBtX21hdHJpeChTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdN
YXRyaXgoKSkKIHsKLSAgICBtX21hdHJpeCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJp
eCgpOwotCiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9VTktOT1dOOwogICAgIG1fYW5nbGUg
PSAwOwogfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAJKHJldmlz
aW9uIDE2MzcwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBTVkdUcmFuc2Zvcm1MaXN0OjpTVkdUcmFuc2Zvcm1MaXN0KCkKLSAgICA6IFNWR0xpc3Q8U1ZH
VHJhbnNmb3JtKj4oKQorICAgIDogU1ZHTGlzdDxSZWZQdHI8U1ZHVHJhbnNmb3JtPiA+KCkKIHsK
IH0KIApAQCAtNDAsMTIgKzQwLDEyIEBACiB7CiB9CiAKLVNWR1RyYW5zZm9ybSogU1ZHVHJhbnNm
b3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkg
Y29uc3QKK1JlZlB0cjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1Ry
YW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4KTsKIH0K
IAotU1ZHVHJhbnNmb3JtKiBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25zb2xpZGF0ZSgpCitSZWZQdHI8
U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25zb2xpZGF0ZSgpCiB7CiAgICAgU1ZH
VHJhbnNmb3JtKiBvYmogPSBjb25jYXRlbmF0ZSgpOwogICAgIGlmICghb2JqKQpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHJldmlzaW9uIDE2MzcwKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAKICAgICAgICAgaWYgKHN1YnRyYW5zZm9ybVswXS5zdGFydHNXaXRoKCI7Iikg
fHwgc3VidHJhbnNmb3JtWzBdLnN0YXJ0c1dpdGgoIiwiKSkKICAgICAgICAgICAgIHN1YnRyYW5z
Zm9ybVswXSA9IHN1YnRyYW5zZm9ybVswXS5taWQoMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKLSAg
ICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gdChuZXcgU1ZHVHJhbnNmb3JtKCkpOworICAgICAg
ICBTVkdUcmFuc2Zvcm0qIHQgPSBuZXcgU1ZHVHJhbnNmb3JtKCk7CiAKICAgICAgICAgaWYgKHN1
YnRyYW5zZm9ybVswXSA9PSAicm90YXRlIikgewogICAgICAgICAgICAgaWYgKHBhcmFtcy5jb3Vu
dCgpID09IDMpCkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICAgICAgICAgIGJyZWFrOyAvLyBmYWls
ZWQgdG8gcGFyc2UgYSB2YWxpZCB0cmFuc2Zvcm0sIGFib3J0LgogICAgICAgICAKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGxpc3QtPmFwcGVuZEl0ZW0odC5yZWxlYXNl
KCkucmVsZWFzZSgpLCBlYyk7CisgICAgICAgIGxpc3QtPmFwcGVuZEl0ZW0odCwgZWMpOwogICAg
IH0KIH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxpc3Qu
aAkocmV2aXNpb24gMTYzNzApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2VMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUKIHsKLSAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2VMaXN0IDogcHVibGljIFNWR0xp
c3Q8U1ZHRWxlbWVudEluc3RhbmNlKj4KKyAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2VMaXN0
IDogcHVibGljIFNWR0xpc3Q8UmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gPgogICAgIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QoKTsKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDE2MzcwKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGVuZ3RoTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdM
aXN0PFNWR0xlbmd0aCo+CisgICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdMaXN0
PFJlZlB0cjxTVkdMZW5ndGg+ID4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMZW5n
dGhMaXN0KCk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlzdC5oCShyZXZpc2lvbiAxNjM3MCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjAsMzMgKzIwLDQwIEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGlzdF9ICi0jZGVmaW5lIEtTVkdfU1ZH
TGlzdF9ICisjaWZuZGVmIFNWR0xpc3RfSAorI2RlZmluZSBTVkdMaXN0X0gKIAogI2lmZGVmIFNW
R19TVVBQT1JUCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRlICJTaGFyZWQu
aCIKLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiU1ZHTGlzdFRyYWl0cy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVtPgotICAgIGNs
YXNzIFNWR0xpc3RCYXNlIDogcHVibGljIFNoYXJlZDxTVkdMaXN0QmFzZTxJdGVtPiA+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KKyAgICBzdHJ1Y3QgU1ZHTGlzdFR5cGVPcGVyYXRpb25z
CiAgICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHTGlzdEJhc2UoKSB7IH0KLSAgICAgICAg
dmlydHVhbCB+U1ZHTGlzdEJhc2UoKSB7IGNsZWFyVmVjdG9yKG1fdmVjdG9yKTsgfQorICAgICAg
ICBzdGF0aWMgSXRlbSBudWxsSXRlbSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBT
VkdMaXN0VHJhaXRzPFVzZXNEZWZhdWx0SW5pdGlhbGl6ZXI8SXRlbT46OnZhbHVlLCBJdGVtPjo6
bnVsbEl0ZW0oKTsKKyAgICAgICAgfQorICAgIH07CiAKLSAgICAgICAgLy8gVG8gYmUgaW1wbGVt
ZW50ZWQgYnkgdGhlIFNWR0xpc3Qgc3BlY2lhbGl6YXRpb25zIQotICAgICAgICB2aXJ0dWFsIEl0
ZW0gbnVsbEl0ZW0oKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhclZlY3Rv
cihWZWN0b3I8SXRlbT4mIHZlY3RvcikgY29uc3QgeyB2ZWN0b3IuY2xlYXIoKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+CisgICAgY2xhc3MgU1ZHTGlzdCA6IHB1YmxpYyBTaGFyZWQ8
U1ZHTGlzdDxJdGVtPiA+CisgICAgeworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgU1ZH
TGlzdFR5cGVPcGVyYXRpb25zPEl0ZW0+IFR5cGVPcGVyYXRpb25zOwogCisgICAgcHVibGljOgor
ICAgICAgICBTVkdMaXN0KCkgeyB9CisgICAgICAgIHZpcnR1YWwgflNWR0xpc3QoKSB7IG1fdmVj
dG9yLmNsZWFyKCk7IH0KKwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZJdGVtcygpIGNv
bnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQotICAgICAgICB2b2lkIGNsZWFyKEV4Y2Vw
dGlvbkNvZGUgJikgeyBjbGVhclZlY3RvcihtX3ZlY3Rvcik7IH0KKyAgICAgICAgdm9pZCBjbGVh
cihFeGNlcHRpb25Db2RlICYpIHsgbV92ZWN0b3IuY2xlYXIoKTsgfQogCiAgICAgICAgIEl0ZW0g
aW5pdGlhbGl6ZShJdGVtIG5ld0l0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICB7CkBA
IC01Nyw3ICs2NCw3IEBACiAgICAgICAgIEl0ZW0gZ2V0Rmlyc3QoKSBjb25zdAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAobV92ZWN0b3IuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBudWxsSXRlbSgpOworICAgICAgICAgICAgICAgIHJldHVybiBUeXBlT3BlcmF0aW9uczo6
bnVsbEl0ZW0oKTsKIAogICAgICAgICAgICAgcmV0dXJuIG1fdmVjdG9yLmZpcnN0KCk7CiAgICAg
ICAgIH0KQEAgLTY1LDcgKzcyLDcgQEAKICAgICAgICAgSXRlbSBnZXRMYXN0KCkgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKG1fdmVjdG9yLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbEl0ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVHlwZU9wZXJh
dGlvbnM6Om51bGxJdGVtKCk7CiAKICAgICAgICAgICAgIHJldHVybiBtX3ZlY3Rvci5sYXN0KCk7
CiAgICAgICAgIH0KQEAgLTc0LDcgKzgxLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fdmVjdG9yLnNpemUoKSA8IGluZGV4KSB7CiAgICAgICAgICAgICAgICAgZWMgPSBJTkRFWF9T
SVpFX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbEl0ZW0oKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVHlwZU9wZXJhdGlvbnM6Om51bGxJdGVtKCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHJldHVybiBtX3ZlY3Rvci5hdChpbmRleCk7CkBAIC04NCwxMCArOTEsMTAg
QEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fdmVjdG9yLnNpemUoKSA8IGluZGV4KSB7
CiAgICAgICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbEl0ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVHlwZU9wZXJhdGlvbnM6
Om51bGxJdGVtKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBtX3ZlY3Rv
ci5hdChpbmRleCk7CisgICAgICAgICAgICByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOwogICAgICAg
ICB9CiAKICAgICAgICAgSXRlbSBpbnNlcnRJdGVtQmVmb3JlKEl0ZW0gbmV3SXRlbSwgdW5zaWdu
ZWQgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJikKQEAgLTEwMCwxMCArMTA3LDEwIEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX3ZlY3Rvci5zaXplKCkgPCBpbmRleCkgewogICAgICAg
ICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFR5cGVPcGVyYXRpb25zOjpudWxsSXRl
bSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtX3ZlY3Rvci5hdChpbmRleCkgPSBu
ZXdJdGVtOworICAgICAgICAgICAgbV92ZWN0b3JbaW5kZXhdID0gbmV3SXRlbTsKICAgICAgICAg
ICAgIHJldHVybiBuZXdJdGVtOwogICAgICAgICB9CiAKQEAgLTExMSwxMCArMTE4LDEwIEBACiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX3ZlY3Rvci5zaXplKCkgPCBpbmRleCkgewogICAg
ICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFR5cGVPcGVyYXRpb25zOjpudWxs
SXRlbSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJdGVtIGl0ZW0gPSBtX3ZlY3Rv
ci5hdChpbmRleCk7CisgICAgICAgICAgICBJdGVtIGl0ZW0gPSBtX3ZlY3RvcltpbmRleF07CiAg
ICAgICAgICAgICByZW1vdmVJdGVtKGluZGV4LCBlYyk7CiAgICAgICAgICAgICByZXR1cm4gaXRl
bTsKICAgICAgICAgfQpAQCAtMTM0LDUxICsxNDEsOSBAQAogICAgICAgICBWZWN0b3I8SXRlbT4g
bV92ZWN0b3I7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZW0+Ci0gICAgY2xhc3Mg
U1ZHTGlzdCA6IHB1YmxpYyBTVkdMaXN0QmFzZTxJdGVtPgotICAgIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgSXRlbSBudWxsSXRlbSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWZWN0b3IoVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yPEl0ZW0+Ojpj
b25zdF9pdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaXRlcmF0
b3IgZW5kID0gdmVjdG9yLmVuZCgpOwotICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHZl
Y3Rvci5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPmRl
cmVmKCk7Ci0KLSAgICAgICAgICAgIHZlY3Rvci5jbGVhcigpOyAgICAKLSAgICAgICAgfQotICAg
IH07Ci0KLSAgICAvLyBTcGVjaWFsaXphdGlvbiBmb3IgZG91YmxlCi0gICAgdGVtcGxhdGU8Pgot
ICAgIGNsYXNzIFNWR0xpc3Q8ZG91YmxlPiA6IHB1YmxpYyBTVkdMaXN0QmFzZTxkb3VibGU+Ci0g
ICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCBkb3VibGUgbnVsbEl0ZW0oKSBjb25z
dCB7IHJldHVybiAwLjA7IH0KLSAgICB9OwotCi0gICAgLy8gU3BlY2lhbGl6YXRpb24gZm9yIFN0
cmluZwotICAgIHRlbXBsYXRlPD4KLSAgICBjbGFzcyBTVkdMaXN0PFN0cmluZz4gOiBwdWJsaWMg
U1ZHTGlzdEJhc2U8U3RyaW5nPgotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
U3RyaW5nIG51bGxJdGVtKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB9OwotCi0g
ICAgLy8gU3BlY2lhbGl6YXRpb24gZm9yIEZsb2F0UG9pbnQKLSAgICB0ZW1wbGF0ZTw+Ci0gICAg
Y2xhc3MgU1ZHTGlzdDxGbG9hdFBvaW50PiA6IHB1YmxpYyBTVkdMaXN0QmFzZTxGbG9hdFBvaW50
PgotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgRmxvYXRQb2ludCBudWxsSXRl
bSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQotICAgIH07Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYgLy8gS1NWR19TVkdM
aXN0X0gKKyNlbmRpZiAvLyBTVkdMaXN0X0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGlzdFRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xpc3RUcmFpdHMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xpc3RUcmFpdHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA2IEFwcGxlIENvbXB1dGVyIEluYy4KKworICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2lmbmRlZiBTVkdMaXN0VHJhaXRzX0gKKyNk
ZWZpbmUgU1ZHTGlzdFRyYWl0c19ICisKKyNpZmRlZiBTVkdfU1VQUE9SVAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPiBzdHJ1Y3QgVXNlc0RlZmF1
bHRJbml0aWFsaXplciB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBVc2VzRGVmYXVsdEluaXRpYWxpemVyPGRvdWJsZT4gICAgICB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07CisKKyAgICB0ZW1wbGF0ZTxib29sIHVz
ZXNEZWZhdWx0SW5pdGlhbGl6ZXIsIHR5cGVuYW1lIEl0ZW0+CisgICAgc3RydWN0IFNWR0xpc3RU
cmFpdHMgeyB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KKyAgICBzdHJ1Y3QgU1ZH
TGlzdFRyYWl0czx0cnVlLCBJdGVtPgorICAgIHsKKyAgICAgICAgc3RhdGljIEl0ZW0gbnVsbEl0
ZW0oKSB7IHJldHVybiBJdGVtKCk7IH0gCisgICAgfTsKKworICAgIHRlbXBsYXRlPD4KKyAgICBz
dHJ1Y3QgU1ZHTGlzdFRyYWl0czxmYWxzZSwgZG91YmxlPgorICAgIHsKKyAgICAgICAgc3RhdGlj
IGRvdWJsZSBudWxsSXRlbSgpIHsgcmV0dXJuIDAuMDsgfQorICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNWR19TVVBQT1JUCisjZW5kaWYgLy8gU1ZHTGlzdFRy
YWl0c19ICisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051
bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0
LmgJKHJldmlzaW9uIDE2MzcwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7
CisgICAgY2xhc3MgRGVwcmVjYXRlZFN0cmluZzsKKwogICAgIGNsYXNzIFNWR051bWJlckxpc3Qg
OiBwdWJsaWMgU1ZHTGlzdDxkb3VibGU+CiAgICAgewogICAgIHB1YmxpYzoKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkocmV2aXNpb24gMTYzNzApCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXRoU2VnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBwdWJsaWMg
U1ZHTGlzdDxTVkdQYXRoU2VnKj4KKyAgICBjbGFzcyBTVkdQYXRoU2VnTGlzdCA6IHB1YmxpYyBT
VkdMaXN0PFJlZlB0cjxTVkdQYXRoU2VnPiA+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
U1ZHUGF0aFNlZ0xpc3QoKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJ
KHJldmlzaW9uIDE2MzcwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFNWR1RyYW5z
Zm9ybSo+CisgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0
cjxTVkdUcmFuc2Zvcm0+ID4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdUcmFuc2Zv
cm1MaXN0KCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybUxpc3QoKTsKIAotICAgICAg
ICBTVkdUcmFuc2Zvcm0qIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4Kikg
Y29uc3Q7Ci0gICAgICAgIFNWR1RyYW5zZm9ybSogY29uc29saWRhdGUoKTsKKyAgICAgICAgUmVm
UHRyPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgq
KSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKIAog
ICAgICAgICAvLyBJbnRlcm5hbCB1c2Ugb25seQogICAgICAgICBTVkdUcmFuc2Zvcm0qIGNvbmNh
dGVuYXRlKCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="3433"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>