<?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>30211</bug_id>
          
          <creation_ts>2009-10-08 07:43:22 -0700</creation_ts>
          <short_desc>[Qt] Consider prefering QImage* over QPixmap* as NativeImagePtr</short_desc>
          <delta_ts>2014-02-03 03:13:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153370</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-08 07:43:22 -0700</bug_when>
    <thetext>We need to find out if for the majority of cases of painting images we are going through the raster fallback or through the accelerated path of the PaintEngine. The problem in Bitmap::drawImage is that we will probably scale the image which means that the raster engine will need to convert the QPixmap back to a QImage which is requiring a roundtrip for every image we paint.

The performance test content should be used to determine how often we are going through the draw_helper for image painting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153374</commentid>
    <comment_count>1</comment_count>
      <attachid>40870</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-08 07:48:05 -0700</bug_when>
    <thetext>Created attachment 40870
Proposed change to change NativeImagePtr to QImage and method to cache certain images as QPixmap

If measurements show that this patch is faster I would heavily encourage to use it. For now I&apos;m seeking for review, advice and ideas on how to fill the findScaledOrCreatePixmap with content. I&apos;m searching for criteria where we would like to create a QPixmap for performance reasons and assume we have access to CachedImage as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154261</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-12 22:18:29 -0700</bug_when>
    <thetext>Hmm, is the goal to distinguish between a paintengine that _can_ draw transformed pixmaps efficiently (i.e. openvg or opengl) and a paintengine that fails to do so (x11) ?

If yes, I guess we could try to use the paint engine&apos;s feature flags to determine this at run-time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154272</commentid>
    <comment_count>3</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-12 22:45:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Hmm, is the goal to distinguish between a paintengine that _can_ draw
&gt; transformed pixmaps efficiently (i.e. openvg or opengl) and a paintengine that
&gt; fails to do so (x11) ?
&gt; 
&gt; If yes, I guess we could try to use the paint engine&apos;s feature flags to
&gt; determine this at run-time.

This would be one idea, in general this is about collecting ideas and then measuring. My impression is that blindly converting to a QPixmap even if it is only painted once will not be a win so we should have a better strategy.


Some more background information. When looking at the Szeged Image test site we load big images and scale them down to 100x100. So what happens there is we load the big QImage, convert it to a bigger QPixmap (XImage..) and upload, convert it back to a bigger QImage, paint.

After having instrumented the BitmapImage::drawImage routine on the test content I see that the above is the minority. From my instrumentation something like 10% of draw operations are scaling images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155573</commentid>
    <comment_count>4</comment_count>
      <attachid>40870</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-18 22:56:03 -0700</bug_when>
    <thetext>Comment on attachment 40870
Proposed change to change NativeImagePtr to QImage and method to cache certain images as QPixmap

I&apos;m not an expert on this code, but in general terms, this patch seems fine.  However, the patch itself either has tabs or incorrect indenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975028</commentid>
    <comment_count>5</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:13:08 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40870</attachid>
            <date>2009-10-08 07:48:05 -0700</date>
            <delta_ts>2010-06-11 12:31:26 -0700</delta_ts>
            <desc>Proposed change to change NativeImagePtr to QImage and method to cache certain images as QPixmap</desc>
            <filename>0001-Qt-Change-NativeImagePtr-from-QPixmap-to-QImage.patch</filename>
            <type>text/plain</type>
            <size>18394</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSBjOGYwMThhMmI4MWZiOWQzZTJkMDUxZWZmYjUzOWUzYWEyNGNkZjA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFRodSwgOCBPY3QgMjAwOSAyMjoxNDozNyArMDgwMApTdWJqZWN0OiBb
UEFUQ0hdIFtRdF0gQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZyb20gUVBpeG1hcCogdG8gUUltYWdl
KgoKVXNlIFFJbWFnZSBhcyB0aGUgZGVmYXVsdCBpbWFnZSBwb2ludGVyIGluc2lkZSBXZWJLaXQu
IFRoZSByZWFzb24KaXMgdGhhdCB0aGUgUVBpeG1hcCBiYXNlZCBkcmF3aW5nIGNvZGUgd2lsbCB3
YWxrIGludG8gYXJlYXMgd2hlcmUKdGhlIFFQaXhtYXAgd2lsbCBuZWVkIHRvIGJlIGNvbnZlcnRl
ZCBiYWNrIHRvIGEgUUltYWdlIGFuZCB0aGVuIGJlCnVwbG9hZGVkIGFnYWluLiBUaGlzIGlzIHRy
dWUgaW4gdGhlIGNhc2UgdGhlIFFQaXhtYXAgbmVlZHMgdG8gYmUKc2NhbGVkIG9yIHRoZSBwYWlu
dGluZyBpcyB0cmFuc2Zvcm1lZCBpbiBvbmUgb3IgYW5vdGhlciB3YXkuCgpUaGUgbmV3IGNvZGUg
d2lsbCBldmVudHVhbGx5IHVzZSBhIFFQaXhtYXAgY2FjaGUgdG8gY2FjaGUgUUltYWdlcwp0aGF0
IG5lZWRlZCB0byBiZSBzY2FsZWQgdG8gYmUgcGFpbnRlZCwgd2lsbCBub3QgcmVxdWlyZSBhIGxv
dAptb3JlIG1lbW9yeSB0aGFuIHRoZSBRSW1hZ2UgYW5kIHdpbGwgZ28gdGhyb3VnaCBhY2NlbGVy
YXRlZCBwYXRocy4gVGhpcwp3aWxsIGJlIGRldGVybWluZWQgaW4gdGhlIGZpbmRTY2xhZWRPckNy
ZWF0ZVBpeG1hcCBpbiB0aGUgZnV0dXJlLgpUaGUgY3VycmVudCBwb2xpY3kgaXMgbm90IHVzZSBh
IFFQaXhtYXAuCgpDaGFuZ2UgdGhlIGNvZGUgdXNpbmcgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSB0byBkbyBwcm9wZXIKbnVsbCBjaGVja2luZyBiZWZvcmUgZGVyZWZlcm5jaW5nIHRoZSBw
b2ludGVyLgoKKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgooV2ViQ29yZTo6
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKFdlYkNvcmU6OmZpbmRTY2FsZWRPckNyZWF0ZVBpeG1hcCk6
CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hl
Y2tGb3JTb2xpZENvbG9yKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwOgoo
V2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKToKKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oOgoqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcDoK
KFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFnZSk6CiogcGxhdGZvcm0vcXQv
Q2xpcGJvYXJkUXQuY3BwOgooV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CiogcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwOgooV2ViQ29yZTo6Q3Vyc29yOjpD
dXJzb3IpOgoqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CihXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKToKCiogQXBpL3F3ZWJmcmFtZS5jcHA6CihRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CiogQXBpL3F3ZWJoaXN0b3J5LmNw
cDoKKFFXZWJIaXN0b3J5SXRlbTo6aWNvbik6CiogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CihRV2Vi
U2V0dGluZ3M6Omljb25Gb3JVcmwpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oICAgICAgICAgICAgfCAgICA0ICstCiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwICAgICAgICAgICB8ICAgNTQg
KysrKysrKysrKysrKysrLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVy
blF0LmNwcCAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1N0aWxsSW1hZ2VRdC5jcHAgICAgICB8ICAgIDUgLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmggICAgICAgIHwgICAgMSAtCiAuLi4vcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwICB8ICAgIDcgKy0tCiBXZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcCAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUv
cGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgNSArKy0KIFdl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCAgICAgICAgICAgICAgIHwgICAgNiAr
LQogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICA2ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTIgKysrLQogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwICAgICAgICAgICAg
ICAgICAgICAgfCAgICA2ICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTYgKysrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0
aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjIzZTRkLi4yOWU5NjI5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDA5LTEwLTA4ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF0gQ2hhbmdlIHRoZSBOYXRpdmVJbWFnZVB0ciBmcm9tIFFQaXhtYXAgdG8gUUltYWdlCisKKwor
ICAgICAgICBVc2UgUUltYWdlIGFzIHRoZSBkZWZhdWx0IGltYWdlIHBvaW50ZXIgaW5zaWRlIFdl
YktpdC4gVGhlIHJlYXNvbgorICAgICAgICBpcyB0aGF0IHRoZSBRUGl4bWFwIGJhc2VkIGRyYXdp
bmcgY29kZSB3aWxsIHdhbGsgaW50byBhcmVhcyB3aGVyZQorICAgICAgICB0aGUgUVBpeG1hcCB3
aWxsIG5lZWQgdG8gYmUgY29udmVydGVkIGJhY2sgdG8gYSBRSW1hZ2UgYW5kIHRoZW4gYmUKKyAg
ICAgICAgdXBsb2FkZWQgYWdhaW4uIFRoaXMgaXMgdHJ1ZSBpbiB0aGUgY2FzZSB0aGUgUVBpeG1h
cCBuZWVkcyB0byBiZQorICAgICAgICBzY2FsZWQgb3IgdGhlIHBhaW50aW5nIGlzIHRyYW5zZm9y
bWVkIGluIG9uZSBvciBhbm90aGVyIHdheS4KKworICAgICAgICBUaGUgbmV3IGNvZGUgd2lsbCBl
dmVudHVhbGx5IHVzZSBhIFFQaXhtYXAgY2FjaGUgdG8gY2FjaGUgUUltYWdlcworICAgICAgICB0
aGF0IG5lZWRlZCB0byBiZSBzY2FsZWQgdG8gYmUgcGFpbnRlZCwgd2lsbCBub3QgcmVxdWlyZSBh
IGxvdAorICAgICAgICBtb3JlIG1lbW9yeSB0aGFuIHRoZSBRSW1hZ2UgYW5kIHdpbGwgZ28gdGhy
b3VnaCBhY2NlbGVyYXRlZCBwYXRocy4gVGhpcworICAgICAgICB3aWxsIGJlIGRldGVybWluZWQg
aW4gdGhlIGZpbmRTY2xhZWRPckNyZWF0ZVBpeG1hcCBpbiB0aGUgZnV0dXJlLgorICAgICAgICBU
aGUgY3VycmVudCBwb2xpY3kgaXMgbm90IHVzZSBhIFFQaXhtYXAuCisKKyAgICAgICAgQ2hhbmdl
IHRoZSBjb2RlIHVzaW5nIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgdG8gZG8gcHJvcGVy
CisgICAgICAgIG51bGwgY2hlY2tpbmcgYmVmb3JlIGRlcmVmZXJuY2luZyB0aGUgcG9pbnRlci4K
KworICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZFNjYWxlZE9yQ3JlYXRlUGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVj
a0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5R
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DdXJzb3JRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OkN1cnNvcik6CisgICAgICAgICogcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UpOgorCiAyMDA5LTEwLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRl
eCA5MWU4YWEwLi41NDZhODEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFn
ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgTlNJbWFnZTsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCiBRVF9CRUdJTl9OQU1F
U1BBQ0UKLWNsYXNzIFFQaXhtYXA7CitjbGFzcyBRSW1hZ2U7CiBRVF9FTkRfTkFNRVNQQUNFCiAj
ZWxpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CkBA
IC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZP
Uk0oUVQpCi0gICAgdHlwZWRlZiBRUGl4bWFwKiBEcmFnSW1hZ2VSZWY7CisgICAgdHlwZWRlZiBR
SW1hZ2UqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICB0eXBlZGVmIEhC
SVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV1gpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggMzU1OWFiZS4uMDI0OGNlOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwogI2VsaWYgUExBVEZPUk0oUVQpCiAjaW5j
bHVkZSA8cWdsb2JhbC5oPgogUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUGl4bWFwOworY2xh
c3MgUUltYWdlOwogUVRfRU5EX05BTUVTUEFDRQogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiBzdHJ1
Y3QgX2NhaXJvX3N1cmZhY2U7CkBAIC02NSw3ICs2NSw3IEBAIHR5cGVkZWYgQ0dJbWFnZVJlZiBO
YXRpdmVJbWFnZVB0cjsKICNlbGlmIFBMQVRGT1JNKFFUKQogY2xhc3MgSW1hZ2VEZWNvZGVyUXQ7
CiB0eXBlZGVmIEltYWdlRGVjb2RlclF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVkZWYg
UVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFFJbWFnZSogTmF0aXZlSW1hZ2VQdHI7
CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2
ZUltYWdlU291cmNlUHRyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAK
aW5kZXggZGE2ZGRhYy4uM2FjNTU2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVz
aW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTaW1vbiBIYXVzbWFubiA8
aGF1c21hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCkBAIC05NiwyMSArOTcsMjEgQEAgUGFzc1JlZlB0cjxJbWFnZT4g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB2b2lkIEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIFFQaXhtYXAqIGZy
YW1lUGl4bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1l
UGl4bWFwKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4K
KyAgICBRSW1hZ2UqIGZyYW1lSW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgIGlmICghZnJhbWVJbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIFFQaXhtYXAgcGl4bWFwID0gKmZy
YW1lUGl4bWFwOworICAgIFFJbWFnZSBpbWFnZSA9ICpmcmFtZUltYWdlOwogICAgIFFSZWN0IHRy
ID0gUVJlY3RGKHRpbGVSZWN0KS50b1JlY3QoKTsKLSAgICBpZiAodHIueCgpIHx8IHRyLnkoKSB8
fCB0ci53aWR0aCgpICE9IHBpeG1hcC53aWR0aCgpIHx8IHRyLmhlaWdodCgpICE9IHBpeG1hcC5o
ZWlnaHQoKSkKLSAgICAgICAgcGl4bWFwID0gcGl4bWFwLmNvcHkodHIpOworICAgIGlmICh0ci54
KCkgfHwgdHIueSgpIHx8IHRyLndpZHRoKCkgIT0gaW1hZ2Uud2lkdGgoKSB8fCB0ci5oZWlnaHQo
KSAhPSBpbWFnZS5oZWlnaHQoKSkKKyAgICAgICAgaW1hZ2UgPSBpbWFnZS5jb3B5KHRyKTsKIAot
ICAgIFFCcnVzaCBiKHBpeG1hcCk7CisgICAgUUJydXNoIGIoaW1hZ2UpOwogICAgIGIuc2V0VHJh
bnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIGN0eHQtPnNhdmUoKTsKICAgICBjdHh0LT5z
ZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogICAgIFFQYWludGVyKiBwID0gY3R4dC0+cGxhdGZv
cm1Db250ZXh0KCk7Ci0gICAgaWYgKCFwaXhtYXAuaGFzQWxwaGEoKSAmJiBwLT5jb21wb3NpdGlv
bk1vZGUoKSA9PSBRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpCisgICAgaWYg
KCFpbWFnZS5oYXNBbHBoYUNoYW5uZWwoKSAmJiBwLT5jb21wb3NpdGlvbk1vZGUoKSA9PSBRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpCiAgICAgICAgIHAtPnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgcC0+c2V0QnJ1
c2hPcmlnaW4ocGhhc2UpOwogICAgIHAtPmZpbGxSZWN0KGRlc3RSZWN0LCBiKTsKQEAgLTEyOCwx
MyArMTI5LDM1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQog
ewogfQogCisvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgc2VhcmNoIGEgY2FjaGUgZm9yIGEgc2NhbGVk
IFFQaXhtYXAKKy8vIG9mIHRoaXMgfGltZ3wgdGhhdCBtZWV0IHRoZSByZXF1aXJlZCB8c3JjfCBh
bmQgfGRlc3R8CisvLyBjcml0ZXJpYSBhbmQgb3RoZXIgY3JpdGVyaWFzIHJlZ2FyZGluZyBtZW1v
cnkgdXNhZ2UgYW5kCisvLyBhbnRpY2lwYXRlZCBzcGVlZHVwIGR1ZSB0aGUgdXNhZ2Ugb2YgYSBR
UGl4bWFwLgorLy8KKy8vIFRoZSByZWFzb25pbmcgaXMgdGhhdCBpZiB3ZSBuZWVkIHRvIGRyYXcg
YSBzY2FsZWQgdmVyc2lvbgorLy8gb2YgdGhlIGltYWdlIG9uIFF0L1gxMSB3ZSBhcmUgcmVxdWly
aW5nIHJvdW5kdHJpcHMgdG8KKy8vIHRoZSBYLXNlcnZlciB0byBkb3dubG9hZCB0aGUgUVBpeG1h
cCB0byBzY2FsZSBpdC4gVGhlIGdvYWwKKy8vIG9mIHRoZSBmaW5kU2NhbGVkT3JDcmVhdGVQaXht
YXAgcm91dGluZSBpcyB0byBjcmVhdGUgYSBRUGl4bWFwCisvLyB0aGF0IGNhbiBiZSBwcm9jZXNz
ZWQgd2l0aCB0aGUgb3B0aW1pemVkIHBhaW50IGVuZ2luZSB3aXRob3V0CisvLyBmYWxsaW5nIGJh
Y2sgdG8gdGhlIHJhc3RlciBvbmUuCisvLworLy8gVE9ETzogVGhlIGNhY2hlIHNob3VsZCB3b3Jr
IG9uIFFJbWFnZTo6Y2FjaGVLZXkvUVBpeG1hcDo6Y2FjaGVLZXkKKy8vIGFuZCBjb250YWluIHRo
ZSB8ZGVzdC5zaXplKCl8IHRoZSBzcmMgc2hvdWxkIGJlIGF0IDAsMCBhbmQKKy8vIGJlIHRoZSBv
cmlnaW5hbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBpbWFnZS4gVGhlIHxkZXN0fCBzaG91bGQK
Ky8vIGFsc28gYmUgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBpdHNlbGYgdG8gYmUgbmljZSB0byB0
aGUKKy8vIG1lbW9yeSB1c2FnZS4KK3N0YXRpYyBRUGl4bWFwKiBmaW5kU2NhbGVkT3JDcmVhdGVQ
aXhtYXAoY29uc3QgUUltYWdlKiBpbWcsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKIC8vIERyYXdpbmcgUm91dGluZXMK
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBR
UGl4bWFwKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUUltYWdl
KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTIsMTIgKzE3NSwxNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAKICAg
ICBRUGFpbnRlciogcGFpbnRlcihjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAKLSAgICBpZiAo
IWltYWdlLT5oYXNBbHBoYSgpICYmIHBhaW50ZXItPmNvbXBvc2l0aW9uTW9kZSgpID09IFFQYWlu
dGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3ZlcikKKyAgICBpZiAoIWltYWdlLT5oYXNBbHBo
YUNoYW5uZWwoKSAmJiBwYWludGVyLT5jb21wb3NpdGlvbk1vZGUoKSA9PSBRUGFpbnRlcjo6Q29t
cG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpCiAgICAgICAgIHBhaW50ZXItPnNldENvbXBvc2l0aW9u
TW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAKKyAgICBRUGl4bWFwKiBz
Y2FsZWQgPSBmaW5kU2NhbGVkT3JDcmVhdGVQaXhtYXAoaW1hZ2UsIHNyYywgZHN0KTsKKwogICAg
IC8vIFRlc3QgdXNpbmcgZXhhbXBsZSBzaXRlIGF0CiAgICAgLy8gaHR0cDovL3d3dy5tZXllcndl
Yi5jb20vZXJpYy9jc3MvZWRnZS9jb21wbGV4c3BpcmFsL2RlbW8uaHRtbAotICAgIHBhaW50ZXIt
PmRyYXdQaXhtYXAoZHN0LCAqaW1hZ2UsIHNyYyk7CisgICAgaWYgKHNjYWxlZCkKKwlwYWludGVy
LT5kcmF3UGl4bWFwKFFQb2ludEYoZHN0LngoKSwgZHN0LnkoKSksICpzY2FsZWQpOworICAgIGVs
c2UKKwlwYWludGVyLT5kcmF3SW1hZ2UoZHN0LCAqaW1hZ2UsIHNyYyk7CiAKICAgICBjdHh0LT5y
ZXN0b3JlKCk7CiAKQEAgLTE3MywxMiArMjAxLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNr
Rm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFFQaXhtYXAqIGZyYW1lUGl4bWFwID0gZnJhbWVBdEluZGV4KDApOwotICAgIGlm
ICghZnJhbWVQaXhtYXAgfHwgZnJhbWVQaXhtYXAtPndpZHRoKCkgIT0gMSB8fCBmcmFtZVBpeG1h
cC0+aGVpZ2h0KCkgIT0gMSkKKyAgICBRSW1hZ2UqIGZyYW1lSW1hZ2UgPSBmcmFtZUF0SW5kZXgo
MCk7CisgICAgaWYgKCFmcmFtZUltYWdlIHx8IGZyYW1lSW1hZ2UtPndpZHRoKCkgIT0gMSB8fCBm
cmFtZUltYWdlLT5oZWlnaHQoKSAhPSAxKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzU29s
aWRDb2xvciA9IHRydWU7Ci0gICAgbV9zb2xpZENvbG9yID0gUUNvbG9yOjpmcm9tUmdiYShmcmFt
ZVBpeG1hcC0+dG9JbWFnZSgpLnBpeGVsKDAsIDApKTsKKyAgICBtX3NvbGlkQ29sb3IgPSBRQ29s
b3I6OmZyb21SZ2JhKGZyYW1lSW1hZ2UtPnBpeGVsKDAsIDApKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwCmluZGV4IGIyNjE2MTMuLjg0ODlkYmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVyblF0LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKQEAgLTMzLDEy
ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFFCcnVzaCBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdAogewotICAg
IFFQaXhtYXAqIHBpeG1hcCA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgIGlmICghcGl4bWFwKQorICAgIFFJbWFnZSogaW1hZ2UgPSB0aWxlSW1hZ2UoKS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gUUJydXNoKCk7CiAKLSAgICAvLyBRdCBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2Vy
IHNwYWNlIGl0c2VsZgotICAgIFFCcnVzaCBicnVzaCgqcGl4bWFwKTsKKyAgICAvLyBRdCBtZXJn
ZXMgcGF0dGVybiBzcGFjZSBhbmQgdXNlciBzcGFjZSBpdHNlbGYKKyAgICBRQnJ1c2ggYnJ1c2go
KmltYWdlKTsKICAgICBicnVzaC5zZXRUcmFuc2Zvcm0obV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1h
dGlvbik7CiAKICAgICByZXR1cm4gYnJ1c2g7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggOTViM2JjOC4uZGE3ODYwYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcApAQCAtNDQsMTEgKzQ0LDYg
QEAgSW50U2l6ZSBTdGlsbEltYWdlOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSht
X3BpeG1hcC53aWR0aCgpLCBtX3BpeG1hcC5oZWlnaHQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4g
Y29uc3RfY2FzdDxOYXRpdmVJbWFnZVB0cj4oJm1fcGl4bWFwKTsKLX0KLQogdm9pZCBTdGlsbElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgK
aW5kZXggNmM0MTdiMS4uZTZjZTZkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1N0aWxsSW1hZ2VRdC5oCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
IAogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9S
R0JBMzJCdWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JH
QkEzMkJ1ZmZlclF0LmNwcAppbmRleCBkYTZhYjM4Li40NDY0ZjI1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcApAQCAt
OTUsMTIgKzk1LDkgQEAgYm9vbCBSR0JBMzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLCBp
bnQgbmV3SGVpZ2h0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1RUGl4bWFwKiBSR0JBMzJCdWZm
ZXI6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUUltYWdlKiBSR0JBMzJCdWZmZXI6OmFzTmV3
TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIFFQaXhtYXAgcGl4ID0gUVBpeG1hcDo6ZnJvbUlt
YWdlKG1faW1hZ2UpOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLQotICAgIHJldHVybiBuZXcg
UVBpeG1hcChwaXgpOworICAgIHJldHVybiBuZXcgUUltYWdlKG1faW1hZ2UpOwogfQogCiBib29s
IFJHQkEzMkJ1ZmZlcjo6aGFzQWxwaGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmNwcAppbmRleCA5ZDJjNDUyLi44NjUyNDA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmNwcApAQCAtMjQ3LDkgKzI0Nyw5IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvCiAgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZ2V0Q2FjaGVkSW1hZ2UoZWxlbWVudCk7CiAgICAgaWYg
KCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlKCkgfHwgIWNhY2hlZEltYWdlLT5p
c0xvYWRlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUVBpeG1hcCAqcGl4bWFwID0gY2FjaGVk
SW1hZ2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKHBp
eG1hcCkKLSAgICAgICAgbV93cml0YWJsZURhdGEtPnNldEltYWdlRGF0YSgqcGl4bWFwKTsKKyAg
ICBRSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgaWYgKGltYWdlKQorICAgICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0
SW1hZ2VEYXRhKCppbWFnZSk7CiAKICAgICBBdG9taWNTdHJpbmcgaW1hZ2VVUkwgPSBlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKTsKICAgICBpZiAoaW1hZ2VVUkwuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAppbmRleCBhYWQ4NGJlLi40Mzc3OTA3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcApAQCAtNTksOSArNTksMTIgQEAgQ3Vyc29yOjp+Q3Vy
c29yKCkKIAogQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90
c3BvdCkKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0gICAgOiBtX2ltcGwoKihpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGhvdHNwb3QueCgpLCBob3RzcG90LnkoKSkKKyAgICA6
IG1faW1wbCgpCiAjZW5kaWYKIHsKKyAgICBRSW1hZ2UqIHFJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChxSW1hZ2UpCisgICAgICAgIG1faW1wbCA9
IFFDdXJzb3IoUVBpeG1hcDo6ZnJvbUltYWdlKCpxSW1hZ2UpLCBob3RzcG90LngoKSwgaG90c3Bv
dC55KCkpOwogfQogCiBDdXJzb3ImIEN1cnNvcjo6b3BlcmF0b3I9KGNvbnN0IEN1cnNvciYgb3Ro
ZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggMjA5YTU3My4uMDFmMjFj
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtMTU2LDEwICsxNTYsMTAg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKQogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwog
ICAgIEFTU0VSVChpbWFnZSk7CiAKLSAgICBRUGl4bWFwKiBwaXhtYXAgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBBU1NFUlQocGl4bWFwKTsKKyAgICBRSW1hZ2Uq
IHFJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIEFTU0VS
VChxSW1hZ2UpOwogCi0gICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0UGl4bWFwKCpw
aXhtYXAsIFFDbGlwYm9hcmQ6OkNsaXBib2FyZCk7CisgICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9h
cmQoKS0+c2V0SW1hZ2UoKnFJbWFnZSwgUUNsaXBib2FyZDo6Q2xpcGJvYXJkKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMTc3N2NjOC4uMjk2MmE2YyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNw
cApAQCAtMTQwMyw5ICsxNDAzLDkgQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0
VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogICAgIGlubmVy
Tm9uU2hhcmVkTm9kZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgV2ViQ29y
ZTo6SW1hZ2UgKmltZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7Ci0gICAgICAg
IFFQaXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAg
ICAgaWYgKHBpeCkKLSAgICAgICAgICAgIHBpeG1hcCA9ICpwaXg7CisgICAgICAgIFFJbWFnZSAq
cUltZyA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKHFJ
bWcpCisgICAgICAgICAgICBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoKnFJbWcpOwogICAg
IH0KICAgICBXZWJDb3JlOjpGcmFtZSAqd2ZyYW1lID0gaGl0VGVzdC50YXJnZXRGcmFtZSgpOwog
ICAgIGlmICh3ZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNw
cCBiL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCmluZGV4IDU3NTJkNjYuLjdhZTg3YjIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCisrKyBiL1dlYktpdC9x
dC9BcGkvcXdlYmhpc3RvcnkuY3BwCkBAIC0xNDksOSArMTQ5LDE1IEBAIFFEYXRlVGltZSBRV2Vi
SGlzdG9yeUl0ZW06Omxhc3RWaXNpdGVkKCkgY29uc3QKICovCiBRSWNvbiBRV2ViSGlzdG9yeUl0
ZW06Omljb24oKSBjb25zdAogewotICAgIGlmIChkLT5pdGVtKQotICAgICAgICByZXR1cm4gKmQt
Pml0ZW0tPmljb24oKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICByZXR1cm4g
UUljb24oKTsKKyAgICBRSWNvbiBpY29uOworCisgICAgaWYgKGQtPml0ZW0pIHsKKyAgICAgICAg
UUltYWdlKiBpbWcgPSBkLT5pdGVtLT5pY29uKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgICAgIGlmIChpbWcpCisgICAgICAgICAgICBpY29uID0gUVBpeG1hcDo6ZnJvbUlt
YWdlKCppbWcpOworICAgIH0KKworICAgIHJldHVybiBpY29uOwogfQogCiAvKiEKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcAppbmRleCBhYmQ3MDM2Li4yMzdiNzJkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CkBAIC01NTMsMTEgKzU1MywxMSBAQCBRSWNvbiBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29u
c3QgUVVybCYgdXJsKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBRUGl4bWFwKCk7
CiAKLSAgICBRUGl4bWFwKiBpY29uID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgUUltYWdlKiBpY29uID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CiAgICAgaWYgKCFpY29uKQotICAgICAgICByZXR1cm4gUVBpeG1hcCgpOworICAgICAgICBy
ZXR1cm4gUUljb24oKTsKIAotICAgIHJldHVybiogaWNvbjsKKyAgICByZXR1cm4gUVBpeG1hcDo6
ZnJvbUltYWdlKCppY29uKTsKIH0KIAogLyohCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdl
TG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5YmM4ZTk0Li4wNjJjNTk1IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAwOS0xMC0wOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNr
ZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkuCisKKyAgICAgICAg
VGhlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIFFJbWFnZSB1cGRhdGUgdXNhZ2UKKworICAgICAg
ICBDaGFuZ2UgdGhlIGNvZGUgdXNpbmcgdGhlIFdlYkNvcmU6OkltYWdlIHRvIGNvbnZlcnQKKyAg
ICAgICAgZnJvbSBRSW1hZ2UqIHRvIFFQaXhtYXAqIHRvIGtlZXAgdGhlIEFQSSBzdGFibGUuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0
UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYmhp
c3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjppY29uKToKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCk6
CisKIDIwMDktMTAtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="22161"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>