<?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>190615</bug_id>
          
          <creation_ts>2018-10-16 06:46:12 -0700</creation_ts>
          <short_desc>Tiling CSS gradients is slow</short_desc>
          <delta_ts>2018-10-21 02:55:29 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1469686</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-16 06:46:12 -0700</bug_when>
    <thetext>Painting blocks the main thread on CG rendering queue to make copy of the backing store:

kevent_id
_dispatch_event_loop_wait_for_ownership
__DISPATCH_WAIT_FOR_QUEUE__
_dispatch_sync_f_slow
CA::CG::IOSurfaceDrawable::copy_cgimage()
WebCore::IOSurface::createImage()
WebCore::ImageBuffer::copyNativeImage(WebCore::BackingStoreCopy) const
WebCore::ImageBuffer::copyImage(WebCore::BackingStoreCopy, WebCore::PreserveResolution) const
WebCore::ImageBuffer::drawPattern(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::AffineTransform const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::CompositeOperator, WebCore::BlendMode)
WebCore::GradientImage::drawPattern(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::AffineTransform const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::CompositeOperator, WebCore::BlendMode)
WebCore::Image::drawTiled(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::FloatSize const&amp;, WebCore::CompositeOperator, WebCore::BlendMode, WebCore::DecodingMode)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469687</commentid>
    <comment_count>1</comment_count>
      <attachid>352448</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-16 07:00:39 -0700</bug_when>
    <thetext>Created attachment 352448
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469791</commentid>
    <comment_count>2</comment_count>
      <attachid>352448</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-16 10:55:12 -0700</bug_when>
    <thetext>Comment on attachment 352448
patch

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

&gt; Source/WebCore/platform/graphics/cocoa/IOSurface.h:111
&gt; +    WEBCORE_EXPORT RetainPtr&lt;CGImageRef&gt; imageReference();

I don&apos;t love it, the sinkIntoImage approach made it much harder to do The Wrong Thing. But I guess you need to keep the surface around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469797</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-16 11:14:05 -0700</bug_when>
    <thetext>&gt; I don&apos;t love it, the sinkIntoImage approach made it much harder to do The
&gt; Wrong Thing. But I guess you need to keep the surface around?

I could throw away the IOSurface but presumably drawing IOSurface backed CGImage to an accelerated context is faster?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469810</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-16 11:32:32 -0700</bug_when>
    <thetext>Hmm, maybe we can just sink it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469885</commentid>
    <comment_count>5</comment_count>
      <attachid>352448</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-16 14:13:58 -0700</bug_when>
    <thetext>Comment on attachment 352448
patch

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

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:84
&gt; +    void makeImmutable() { m_isImmutable = true; }

Would be nice to have the corresponding const getter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470083</commentid>
    <comment_count>6</comment_count>
      <attachid>352561</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-17 05:15:35 -0700</bug_when>
    <thetext>Created attachment 352561
simpler patch

This ditches the &quot;immutable ImageBuffer&quot; concept and simply sinks the gradient ImageBuffer into an Image and uses that for caching instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470087</commentid>
    <comment_count>7</comment_count>
      <attachid>352563</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-17 05:57:43 -0700</bug_when>
    <thetext>Created attachment 352563
simpler patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470088</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-17 06:00:15 -0700</bug_when>
    <thetext>Attachment 352563 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:10:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470089</commentid>
    <comment_count>9</comment_count>
      <attachid>352564</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-17 06:11:34 -0700</bug_when>
    <thetext>Created attachment 352564
simpler patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470133</commentid>
    <comment_count>10</comment_count>
      <attachid>352564</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-17 10:06:16 -0700</bug_when>
    <thetext>Comment on attachment 352564
simpler patch

Nice! Thank you, that makes me much happier. Is it still a PLT win (I assume?)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470229</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-17 11:35:23 -0700</bug_when>
    <thetext>&gt; Nice! Thank you, that makes me much happier. Is it still a PLT win (I
&gt; assume?)?

Hope so. Bots will tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470238</commentid>
    <comment_count>12</comment_count>
      <attachid>352564</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-17 12:00:11 -0700</bug_when>
    <thetext>Comment on attachment 352564
simpler patch

Clearing flags on attachment: 352564

Committed r237230: &lt;https://trac.webkit.org/changeset/237230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470239</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-17 12:00:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470241</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-17 12:01:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/45346201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471136</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-21 02:55:29 -0700</bug_when>
    <thetext>Bots indicate that this was &gt;1% progression

https://perf-safari.apple.com/v3/#/charts?paneList=((886-1158))&amp;since=1539416881058

Most PLT pages don&apos;t have gradients, the ones that were affected got 5-6% faster.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352448</attachid>
            <date>2018-10-16 07:00:39 -0700</date>
            <delta_ts>2018-10-17 05:15:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imagebuffer-immutable-4.patch</filename>
            <type>text/plain</type>
            <size>15183</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE4LTEwLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWxpbmcgQ1NTIGdyYWRpZW50
cyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYWludGluZyBibG9ja3MgdGhlIG1haW4gdGhyZWFkIG9uIENHIHJlbmRlcmluZyBxdWV1ZSB0
byBtYWtlIGEgY29weSBvZiB0aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgYSBjb25jZXB0IG9mIGltbXV0YWJsZSBJbWFnZUJ1ZmZlci4gV2hlbiBtYXJrZWQgaW1t
dXRhYmxlIHdlIGNhbiByZWZlcmVuY2UgdGhlCisgICAgICAgIHVuZGVybHlpbmcgZGF0YSBkaXJl
Y3RseSB3aXRob3V0IG1ha2luZyBjb3BpZXMgYW5kIHRoZSBpbWFnZSByZWZlcmVuY2UgY2FuIGJl
IGNhY2hlZC4KKworICAgICAgICBUaGUgcGF0Y2ggdGhlbiB1c2VzIHRoaXMgZmVhdHVyZSBmb3Ig
R3JhZGllbnRJbWFnZXMuIFRoaXMgYXBwZWFycyB0byBiZSB+MiUgUExUIHByb2dyZXNzaW9uLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisKKyAgICAgICAgTWFyayB0
aGUgcGF0dGVybiBJbWFnZUJ1ZmZlciBpbW11dGFibGUgYWZ0ZXIgZ2VuZXJhdGluZyBpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjppc0NvbXBhdGlibGVXaXRoQ29udGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udGV4dEludGVybmFsIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6Om1ha2VJbW11dGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNv
bnRleHQgY29uc3QpOgorCisgICAgICAgIEFzc2VydCB0aGF0IGV4dGVybmFsIGNsaWVudHMgY2Fu
J3QgcmVxdWVzdCBjb250ZXh0IGZvciBhbiBpbW11dGFibGUgYnVmZmVyICh3aGljaCBjb3VsZCBi
ZSB1c2VkIHRvIHBhaW50IGludG8gaXQpLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29udGV4dEludGVybmFsIGNvbnN0KToKKworICAgICAgICBJbnRlcm5hbCB2ZXJzaW9uIHdp
dGhvdXQgdGhlIGFzc2VydC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZSBjb25zdCk6CisKKyAgICAgICAgR2V0IGltYWdlIHJlZmVyZW5jZSBmcm9tIHRo
ZSBJT1N1cmZhY2UgaWYgdGhlIGJ1ZmZlciBpcyBpbW11dGFibGUuCisKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpiYWNraW5nU3RvcmVDb3B5QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNv
bnRleHQgY29uc3QpOgorCisgICAgICAgIEZhY3RvciBpbnRvIGZ1bmN0aW9uLiBBbiBpbW11dGFi
bGUgYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgY29waWVkLgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJl
bXVsdGlwbGllZEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0NGRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SU9TdXJmYWNlOjppbWFnZVJlZmVyZW5jZSk6CisKKyAgICAgICAgQ2FjaGUgdGhlIGlt
YWdlIHJlZmVyZW5jZS4KKworICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzaW5rSW50b0lt
YWdlKToKKworICAgICAgICBVc2UgdGhlIHNoYXJlZCBjb2RlLgorCiAyMDE4LTEwLTE1ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYXJt
NjQgQ1BVcyB3aXRoIGEgMzItYml0IGFkZHJlc3Mgc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAy
MzcxNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzCiAKICAgICAgICAgaWYgKGRlc3RDb250ZXh0LmRyYXdMdW1p
bmFuY2VNYXNrKCkpCiAgICAgICAgICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb252ZXJ0VG9M
dW1pbmFuY2VNYXNrKCk7CisKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+bWFrZUltbXV0
YWJsZSgpOwogICAgIH0KIAogICAgIGRlc3RDb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZh
bHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIzNzE3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3
IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXoKIAogYm9vbCBJbWFn
ZUJ1ZmZlcjo6aXNDb21wYXRpYmxlV2l0aENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogewotICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnRleHQu
c2NhbGVGYWN0b3IoKSwgdGhpcy0+Y29udGV4dCgpLnNjYWxlRmFjdG9yKCkpOworICAgIHJldHVy
biBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnRleHQuc2NhbGVGYWN0b3IoKSwgdGhpcy0+Y29udGV4
dEludGVybmFsKCkuc2NhbGVGYWN0b3IoKSk7CiB9CiAKICNpZiAhVVNFKElPU1VSRkFDRV9DQU5W
QVNfQkFDS0lOR19TVE9SRSkKQEAgLTI0MSw0ICsyNDEsMTEgQEAgc2l6ZV90IEltYWdlQnVmZmVy
OjpleHRlcm5hbE1lbW9yeUNvc3QoKQogfQogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorR3JhcGhp
Y3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dEludGVybmFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gY29udGV4dCgpOworfQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjM3MTcyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1h
Z2VCdWZmZXIoKTsKIAorICAgIHZvaWQgbWFrZUltbXV0YWJsZSgpIHsgbV9pc0ltbXV0YWJsZSA9
IHRydWU7IH0KKwogICAgIC8vIFRoZSBhY3R1YWwgcmVzb2x1dGlvbiBvZiB0aGUgYmFja2luZyBz
dG9yZQogICAgIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dpY2FsU2l6ZTsgfQpAQCAtMTQwLDkgKzE0MiwxMiBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICAgICB2b2lk
IGZsdXNoQ29udGV4dCgpIGNvbnN0OworICAgIEJhY2tpbmdTdG9yZUNvcHkgYmFja2luZ1N0b3Jl
Q29weUJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKKworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dEludGVybmFsKCkgY29u
c3Q7CiAgICAgCiAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAt
MSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwpAQCAtMTYyLDYgKzE2Nyw3IEBAIHByaXZh
dGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwogICAg
IGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOworICAgIGJvb2wgbV9pc0ltbXV0YWJsZSB7IGZhbHNl
IH07CiAKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50
byB0aGUgZ2l2ZW4gb3V0LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3
aGVuIGl0IHNob3VsZCByZXR1cm4gZmFpbHVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAy
MzcxNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiwxMiBAQCBzaXplX3QgSW1hZ2VC
dWZmZXI6OmV4dGVybmFsTWVtb3J5Q29zdCgpCiAKIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZm
ZXI6OmNvbnRleHQoKSBjb25zdAogeworICAgIEFTU0VSVCghbV9pc0ltbXV0YWJsZSk7CisgICAg
cmV0dXJuIGNvbnRleHRJbnRlcm5hbCgpOworfQorCitHcmFwaGljc0NvbnRleHQmIEltYWdlQnVm
ZmVyOjpjb250ZXh0SW50ZXJuYWwoKSBjb25zdAorewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKG1fZGF0YS5zdXJmYWNlKQogICAgICAgICByZXR1cm4g
bV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtMzExLDEzICszMTcs
MTMgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpzaW5rSQogUmV0YWluUHRy
PENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdl
OwotICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAo
IWNvbnRleHRJbnRlcm5hbCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dp
dGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToK
ICAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fZGF0YS5iYWNraW5n
U3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAz
MiwgbV9kYXRhLmJ5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEuY29sb3JTcGFjZSwgbV9k
YXRhLmJpdG1hcEluZm8sIG1fZGF0YS5kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dElu
dGVybmFsKCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMjUsOCAr
MzMxLDEzIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU4KICAgICAg
ICAgfQogICAgIH0KICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAg
IGVsc2UKLSAgICAgICAgaW1hZ2UgPSBtX2RhdGEuc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgb2YgdGhlIGJhY2tpbmcgc3RvcmUg
ZG9lc24ndCBjaGFuZ2UsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29weSB0aGUgdW5kZXJseWluZyBk
YXRhLgorICAgICAgICBpZiAoY29weUJlaGF2aW9yID09IERvbnRDb3B5QmFja2luZ1N0b3JlICYm
IG1faXNJbW11dGFibGUpCisgICAgICAgICAgICBpbWFnZSA9IG1fZGF0YS5zdXJmYWNlLT5pbWFn
ZVJlZmVyZW5jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbWFnZSA9IG1fZGF0YS5z
dXJmYWNlLT5jcmVhdGVJbWFnZSgpOworICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIGltYWdl
OwpAQCAtMzU1LDEzICszNjYsMjEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhz
dGQ6OnVuaQogI2VuZGlmCiB9CiAKK0JhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmJhY2tp
bmdTdG9yZUNvcHlCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dChjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoJmRlc3RpbmF0aW9u
Q29udGV4dCA9PSAmY29udGV4dEludGVybmFsKCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzSW1t
dXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIENvcHlCYWNraW5nU3RvcmU7CisgICAgfQorICAgIGlm
IChtX2lzSW1tdXRhYmxlKQorICAgICAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CisK
KyAgICByZXR1cm4gZGVzdGluYXRpb25Db250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBD
b3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7Cit9CisKIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2U7Ci0gICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0Lmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENv
cHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8g
ZGVlcCBjb3B5LgotICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoYmFj
a2luZ1N0b3JlQ29weUJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0KGRlc3RDb250ZXh0KSk7
CiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMzczLDIzICszOTIsMTMgQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDbwogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSk7CiAKLSAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7Ci0gICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8fCBkZXN0Q29u
dGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPElt
YWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3aW5nIGludG8g
b3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAgICAgIGNvcHkt
PmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9
IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VG
b3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5
ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKLSAgICB9CisgICAgaWYgKGF1
dG8gY29weSA9IGNvcHlJbWFnZShiYWNraW5nU3RvcmVDb3B5QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQoZGVzdENvbnRleHQpKSkKKyAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAogUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25zLCBDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQorICAgIGlmIChjb250ZXh0SW50ZXJuYWwoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7
CkBAIC0zOTksMTIgKzQwOCwxMiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyOjpnCiAgICAgaWYgKHBpeGVsQXJyYXlEaW1lbnNpb25zKQogICAgICAgICAqcGl4ZWxBcnJh
eURpbWVuc2lvbnMgPSBzcmNSZWN0LnNpemUoKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHNyY1JlY3QsIGludGVy
bmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSk7CisgICAgcmV0dXJu
IG1fZGF0YS5nZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwg
c3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHRJbnRlcm5hbCgpLmlzQWNjZWxlcmF0ZWRD
b250ZXh0KCkpOwogfQogCiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBp
eGVsQXJyYXlEaW1lbnNpb25zLCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNv
bnN0CiB7Ci0gICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlm
IChjb250ZXh0SW50ZXJuYWwoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVz
aENvbnRleHQoKTsKIAogICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CkBAIC00MTQsNyArNDIz
LDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6ZwogICAgIGlmIChw
aXhlbEFycmF5RGltZW5zaW9ucykKICAgICAgICAgKnBpeGVsQXJyYXlEaW1lbnNpb25zID0gc3Jj
UmVjdC5zaXplKCk7CiAKLSAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgc3JjUmVjdCwgaW50ZXJuYWxTaXpl
KCksIGNvbnRleHRJbnRlcm5hbCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJj
ZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKQEAgLTQyOSw3ICs0Mzgs
NyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWluCiAgICAgICAgIHNj
YWxlZFNvdXJjZVNpemUuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogICAgIH0KIAotICAgIG1f
ZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlRm9ybWF0LCBzY2FsZWRTb3VyY2VTaXplLCBzY2Fs
ZWRTb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSk7CisgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VGb3Jt
YXQsIHNjYWxlZFNvdXJjZVNpemUsIHNjYWxlZFNvdXJjZVJlY3QsIGRlc3RQb2ludCwgaW50ZXJu
YWxTaXplKCksIGNvbnRleHRJbnRlcm5hbCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpOwogICAg
IAogICAgIC8vIEZvcmNlIHJlY3JlYXRpbmcgdGhlIElPU3VyZmFjZSBjYWNoZWQgaW1hZ2UgaWYg
aXQgaXMgcmVxdWVzdGVkIHRocm91Z2ggQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UoKS4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzk2
NiBmb3IgZXhwbGFpbmluZyB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuCkBAIC01MjgsNyArNTM3LDcg
QEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXI6OnRvQ0ZEYQogewogICAgIEFTU0VS
VChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyht
aW1lVHlwZSkpOwogCi0gICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQor
ICAgIGlmIChjb250ZXh0SW50ZXJuYWwoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAg
ICBmbHVzaENvbnRleHQoKTsKIAogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlN
RVR5cGUobWltZVR5cGUpOwpAQCAtNjM0LDkgKzY0Myw5IEBAIFZlY3Rvcjx1aW50OF90PiBkYXRh
KGNvbnN0IEltYWdlRGF0YSYgc28KIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyOjp0b0JH
UkFEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkpCisgICAgaWYgKGNvbnRleHRJbnRlcm5hbCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAg
ICAgICAgIGZsdXNoQ29udGV4dCgpOwotICAgIHJldHVybiBtX2RhdGEudG9CR1JBRGF0YShjb250
ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSk7CisgICAgcmV0dXJuIG1fZGF0YS50b0JHUkFEYXRhKGNvbnRleHRJbnRlcm5hbCgpLmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjM3MTcyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgLy8gQW55IGltYWdl
cyBjcmVhdGVkIGZyb20gYSBzdXJmYWNlIG5lZWQgdG8gYmUgcmVsZWFzZWQgYmVmb3JlIHJlbGVh
c2luZwogICAgIC8vIHRoZSBzdXJmYWNlLCBvciBhbiBleHBlbnNpdmUgR1BVIHJlYWRiYWNrIGNh
biByZXN1bHQuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUltYWdlKCk7CisgICAgLy8gUmV0dXJucyBhbiBpbWFnZSByZWZlcmVuY2luZyB0aGUgc3VyZmFj
ZSdzIGRhdGEgZGlyZWN0bHkuIFN1YnNlcXVlbnQgZHJhd3MgdG8gdGhlIGNvbnRleHQgbWF5IHJl
c3VsdAorICAgIC8vIGluIHRob3NlIGRyYXdzIGJlaW5nIHJlZmxlY3RlZCBpbiBpbWFnZXMgcmV0
dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2VSZWZlcmVuY2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IHNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4pOwogCiAjaWZkZWYgX19PQkpDX18KQEAgLTE2Nyw2ICsxNzAsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fY2dDb250ZXh0OwogCiAgICAgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4gbV9zdXJmYWNlOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NhY2hl
ZEltYWdlUmVmZXJlbmNlOwogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQkocmV2aXNpb24gMjM3MTcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsOSArMjU4
LDE3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJT1N1cmZhY2U6OmNyZWF0ZUkKICAgICByZXR1
cm4gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZShlbnN1cmVQbGF0Zm9ybUNv
bnRleHQoKSkpOwogfQogCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSU9TdXJmYWNlOjppbWFnZVJl
ZmVyZW5jZSgpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlUmVmZXJlbmNlKQorICAgICAgICBt
X2NhY2hlZEltYWdlUmVmZXJlbmNlID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJ
bWFnZVJlZmVyZW5jZShlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSkpOworCisgICAgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2VSZWZlcmVuY2U7Cit9CisKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJT1N1cmZh
Y2U6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZVJlZmVyZW5j
ZShzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdXJmYWNl
LT5pbWFnZVJlZmVyZW5jZSgpOwogfQogCiB2b2lkIElPU3VyZmFjZTo6c2V0Q29udGV4dFNpemUo
SW50U2l6ZSBjb250ZXh0U2l6ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352561</attachid>
            <date>2018-10-17 05:15:35 -0700</date>
            <delta_ts>2018-10-17 05:57:43 -0700</delta_ts>
            <desc>simpler patch</desc>
            <filename>gradientimage-image-cache.patch</filename>
            <type>text/plain</type>
            <size>3855</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEwLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWxpbmcgQ1NTIGdyYWRpZW50
cyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYWludGluZyBibG9ja3MgdGhlIG1haW4gdGhyZWFkIG9uIENHIHJlbmRlcmluZyBxdWV1ZSB0
byBtYWtlIGEgY29weSBvZiB0aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorCisgICAgICAgIFNpbmsgdGhlIGdyYWRpZW50IGludG8gYW4g
SW1hZ2UgYWZ0ZXIgZ2VuZXJhdGluZyBpdC4gVW5saWtlIEltYWdlQnVmZmVyLCBwYWludGluZyBp
dCBkb2Vzbid0IGludm9sdmUgaW5lZmZpY2llbnQgY29waWVzLgorICAgICAgICBQcmV2aW91cyBp
c0NvbXBhdGlibGVXaXRoQ29udGV4dCB0ZXN0IGlzIHJlcGxhY2VkIHdpdGggYW4gZXF1aXZhbGVu
dCBzY2FsZSBmYWN0b3IgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaDoKKwogMjAxOC0xMC0xNyAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0VNRV0gU2FuaXR5IGNoZWNrIGtleSBJRCBsZW5ndGggaW4gdGhl
IGtleWlkcyBpbml0IGRhdGEgZm9ybWF0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjM3MTcyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDI1ICs3MCwyOSBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzCiAKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+
aGFzaCgpOwogCi0gICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyIHx8IG1fY2FjaGVkR2VuZXJh
dG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVz
dGVkU2l6ZSB8fCAhbV9jYWNoZWRJbWFnZUJ1ZmZlci0+aXNDb21wYXRpYmxlV2l0aENvbnRleHQo
ZGVzdENvbnRleHQpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3BhY2VTUkdCLCBk
ZXN0Q29udGV4dCk7Ci0gICAgICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikKKyAgICBpZiAo
IW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2gg
fHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxs
eUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7
CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3BhY2VTUkdCLCBkZXN0Q29udGV4dCk7CisgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8g
RmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgaW1hZ2UuCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhZGp1c3RlZFNp
emUpLCBtX2dyYWRpZW50LmdldCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5m
aWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhZGp1c3RlZFNpemUpLCBtX2dyYWRpZW50
LmdldCgpKTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRvckhhc2ggPSBnZW5lcmF0b3JIYXNo
OwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFkanVzdGVkU2l6ZTsKKyAgICAgICAg
bV9jYWNoZWRTY2FsZUZhY3RvciA9IGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCk7CiAKICAgICAg
ICAgaWYgKGRlc3RDb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCi0gICAgICAgICAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CisgICAgICAgICAgICBp
bWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOworCisgICAgICAgIG1fY2FjaGVk
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7
CiAgICAgfQogCiAgICAgZGVzdENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwog
CiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgbV9j
YWNoZWRJbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUpOworICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNl
LCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKwogfQogCiB2b2lkIEdyYWRpZW50
SW1hZ2U6OmR1bXAoV1RGOjpUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHJldmlzaW9uIDIz
NzE3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHcmFkaWVudDsKLWNsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgSW1hZ2U7CiAKIGNs
YXNzIEdyYWRpZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgR2VuZXJhdGVkSW1hZ2UgewogcHVibGlj
OgpAQCAtNTIsOSArNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3Ry
ZWFtJikgY29uc3QgZmluYWw7CiAgICAgCiAgICAgUmVmPEdyYWRpZW50PiBtX2dyYWRpZW50Owot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKKyAg
ICBSZWZQdHI8SW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiAgICAgRmxvYXRTaXplIG1fY2FjaGVkQWRq
dXN0ZWRTaXplOwogICAgIHVuc2lnbmVkIG1fY2FjaGVkR2VuZXJhdG9ySGFzaDsKKyAgICBGbG9h
dFNpemUgbV9jYWNoZWRTY2FsZUZhY3RvcjsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352563</attachid>
            <date>2018-10-17 05:57:43 -0700</date>
            <delta_ts>2018-10-17 06:11:46 -0700</delta_ts>
            <desc>simpler patch</desc>
            <filename>gradientimage-image-cache-2.patch</filename>
            <type>text/plain</type>
            <size>4644</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTEwLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWxpbmcgQ1NTIGdyYWRpZW50
cyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYWludGluZyBibG9ja3MgdGhlIG1haW4gdGhyZWFkIG9uIENHIHJlbmRlcmluZyBxdWV1ZSB0
byBtYWtlIGEgY29weSBvZiB0aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorCisgICAgICAgIEFsc28gdXNlIHNpbmtJbnRvSW1h
Z2UgZm9yIGJpdG1hcCBpbWFnZSBwYXR0ZXJuIGRyYXdpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKworICAgICAgICBTaW5rIHRoZSBncmFkaWVudCBpbnRvIGFu
IEltYWdlIGFmdGVyIGdlbmVyYXRpbmcgaXQuIFVubGlrZSBJbWFnZUJ1ZmZlciwgcGFpbnRpbmcg
aXQgZG9lc24ndCBpbnZvbHZlIGluZWZmaWNpZW50IGNvcGllcy4KKyAgICAgICAgUHJldmlvdXMg
aXNDb21wYXRpYmxlV2l0aENvbnRleHQgdGVzdCBpcyByZXBsYWNlZCB3aXRoIGFuIGVxdWl2YWxl
bnQgc2NhbGUgZmFjdG9yIHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmg6CisKIDIwMTgtMTAtMTcgIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtFTUVdIFNhbml0eSBjaGVjayBrZXkgSUQgbGVuZ3RoIGluIHRo
ZSBrZXlpZHMgaW5pdCBkYXRhIGZvcm1hdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjM3MTcyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDbwogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVm
ZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICAgICAgbV9jYWNoZWRJbWFnZSA9
IGJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRp
b246Olllcyk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9J
bWFnZShXVEZNb3ZlKGJ1ZmZlciksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CShyZXZpc2lvbiAyMzcxNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMjUgKzcwLDI5IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKIAogICAgIHVuc2lnbmVkIGdlbmVy
YXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VC
dWZmZXIgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNo
ZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFtX2NhY2hlZEltYWdlQnVmZmVyLT5p
c0NvbXBhdGlibGVXaXRoQ29udGV4dChkZXN0Q29udGV4dCkpIHsKLSAgICAgICAgbV9jYWNoZWRJ
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVk
U2l6ZSwgQ29sb3JTcGFjZVNSR0IsIGRlc3RDb250ZXh0KTsKLSAgICAgICAgaWYgKCFtX2NhY2hl
ZEltYWdlQnVmZmVyKQorICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwg
bV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgQ29sb3JTcGFjZVNS
R0IsIGRlc3RDb250ZXh0KTsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAvLyBGaWxsIHdpdGggdGhlIGdlbmVyYXRlZCBpbWFnZS4KLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksIG1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAgICBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFk
anVzdGVkU2l6ZSksIG1fZ3JhZGllbnQuZ2V0KCkpOwogCiAgICAgICAgIG1fY2FjaGVkR2VuZXJh
dG9ySGFzaCA9IGdlbmVyYXRvckhhc2g7CiAgICAgICAgIG1fY2FjaGVkQWRqdXN0ZWRTaXplID0g
YWRqdXN0ZWRTaXplOworICAgICAgICBtX2NhY2hlZFNjYWxlRmFjdG9yID0gZGVzdENvbnRleHQu
c2NhbGVGYWN0b3IoKTsKIAogICAgICAgICBpZiAoZGVzdENvbnRleHQuZHJhd0x1bWluYW5jZU1h
c2soKSkKLSAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPmNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKTsKKyAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CisKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdl
KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgfQog
CiAgICAgZGVzdENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogCiAgICAgLy8g
VGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgbV9jYWNoZWRJbWFn
ZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5n
LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKwogfQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6OmR1
bXAoV1RGOjpUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHJldmlzaW9uIDIzNzE3MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFkaWVudDsKLWNsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgSW1hZ2U7CiAKIGNsYXNzIEdyYWRp
ZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgR2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgpAQCAtNTIs
OSArNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29u
c3QgZmluYWw7CiAgICAgCiAgICAgUmVmPEdyYWRpZW50PiBtX2dyYWRpZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKKyAgICBSZWZQdHI8
SW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiAgICAgRmxvYXRTaXplIG1fY2FjaGVkQWRqdXN0ZWRTaXpl
OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkR2VuZXJhdG9ySGFzaDsKKyAgICBGbG9hdFNpemUgbV9j
YWNoZWRTY2FsZUZhY3RvcjsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352564</attachid>
            <date>2018-10-17 06:11:34 -0700</date>
            <delta_ts>2018-10-17 12:00:11 -0700</delta_ts>
            <desc>simpler patch</desc>
            <filename>gradientimage-image-cache-3.patch</filename>
            <type>text/plain</type>
            <size>4691</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE4LTEwLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWxpbmcgQ1NTIGdyYWRpZW50
cyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYWludGluZyBibG9ja3MgdGhlIG1haW4gdGhyZWFkIG9uIENHIHJlbmRlcmluZyBxdWV1ZSB0
byBtYWtlIGEgY29weSBvZiB0aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3UGF0dGVybik6CisKKyAgICAgICAgQWxzbyB1c2Ugc2lua0ludG9JbWFnZSBmb3IgYml0
bWFwIGltYWdlIHBhdHRlcm4gZHJhd2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorCisgICAgICAgIFNpbmsgdGhlIGdyYWRpZW50IGludG8gYW4gSW1hZ2UgYWZ0
ZXIgZ2VuZXJhdGluZyBpdC4gVW5saWtlIEltYWdlQnVmZmVyLCBwYWludGluZyBpdCBkb2Vzbid0
IGludm9sdmUgaW5lZmZpY2llbnQgY29waWVzLgorICAgICAgICBQcmV2aW91cyBpc0NvbXBhdGli
bGVXaXRoQ29udGV4dCB0ZXN0IGlzIHJlcGxhY2VkIHdpdGggYW4gZXF1aXZhbGVudCBzY2FsZSBm
YWN0b3IgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aDoKKwogMjAxOC0xMC0xNyAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0VNRV0gU2FuaXR5IGNoZWNrIGtleSBJRCBsZW5ndGggaW4gdGhlIGtleWlkcyBp
bml0IGRhdGEgZm9ybWF0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzcxNzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
NCw3ICszMTQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAg
ICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZl
cnRUb0x1bWluYW5jZU1hc2soKTsKIAotICAgICAgICBtX2NhY2hlZEltYWdlID0gYnVmZmVyLT5j
b3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsK
KyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1v
dmUoYnVmZmVyKSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwogICAgICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9u
IDIzNzE3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwyNSArNzAsMjkgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9
IG1fZ3JhZGllbnQtPmhhc2goKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBt
X2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVk
U2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIW1fY2FjaGVkSW1hZ2VCdWZmZXItPmlzQ29tcGF0aWJs
ZVdpdGhDb250ZXh0KGRlc3RDb250ZXh0KSkgewotICAgICAgICBtX2NhY2hlZEltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBDb2xv
clNwYWNlU1JHQiwgZGVzdENvbnRleHQpOwotICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZm
ZXIpCisgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBn
ZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAh
YXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNj
YWxlRmFjdG9yKSkgeworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBDb2xvclNwYWNlU1JHQiwgZGVzdENv
bnRleHQpOworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAgICAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgYWRqdXN0ZWRTaXplKSwgbV9ncmFkaWVudC5nZXQoKSk7CisgICAgICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWRqdXN0ZWRTaXpl
KSwgbV9ncmFkaWVudC5nZXQoKSk7CiAKICAgICAgICAgbV9jYWNoZWRHZW5lcmF0b3JIYXNoID0g
Z2VuZXJhdG9ySGFzaDsKICAgICAgICAgbV9jYWNoZWRBZGp1c3RlZFNpemUgPSBhZGp1c3RlZFNp
emU7CisgICAgICAgIG1fY2FjaGVkU2NhbGVGYWN0b3IgPSBkZXN0Q29udGV4dC5zY2FsZUZhY3Rv
cigpOwogCiAgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQotICAg
ICAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwor
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKKworICAg
ICAgICBtX2NhY2hlZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShp
bWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICB9CiAKICAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0
ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Cisg
ICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUpOworCiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChXVEY6OlRl
eHRTdHJlYW0mIHRzKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkocmV2aXNpb24gMjM3MTcyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYWRpZW50Owot
Y2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBJbWFnZTsKIAogY2xhc3MgR3JhZGllbnRJbWFnZSBm
aW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6CkBAIC01Miw5ICs1MiwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsK
ICAgICAKICAgICBSZWY8R3JhZGllbnQ+IG1fZ3JhZGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBtX2NhY2hlZEltYWdlQnVmZmVyOworICAgIFJlZlB0cjxJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKICAgICBGbG9hdFNpemUgbV9jYWNoZWRBZGp1c3RlZFNpemU7CiAgICAgdW5z
aWduZWQgbV9jYWNoZWRHZW5lcmF0b3JIYXNoOworICAgIEZsb2F0U2l6ZSBtX2NhY2hlZFNjYWxl
RmFjdG9yOwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>