<?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>61296</bug_id>
          
          <creation_ts>2011-05-23 11:58:52 -0700</creation_ts>
          <short_desc>[WK2] Change TiledDrawingArea to use ShareableBitmap instead of UpdateChunk.</short_desc>
          <delta_ts>2011-05-24 09:31:08 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>hausmann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408118</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-23 11:58:52 -0700</bug_when>
    <thetext>Most use of UpdateChunk was removed in &lt;http://trac.webkit.org/changeset/86990&gt; and Qt is the only remaining user of it (through TiledDrawingArea.) We should move to using UpdateInfo and ShareableBitmap instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408126</commentid>
    <comment_count>1</comment_count>
      <attachid>94452</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-23 12:08:11 -0700</bug_when>
    <thetext>Created attachment 94452
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408248</commentid>
    <comment_count>2</comment_count>
      <attachid>94452</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-05-23 13:50:05 -0700</bug_when>
    <thetext>Comment on attachment 94452
Proposed patch

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

How are these shared bitmaps being shared, ie what is the actual difference/improvement over what we did before?

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Pass UpdateInfo containing ShareableBitmaps instead of UpdateChunk for tile updates.

So I guess this is the new preferred way?

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Only the bounds rect and bitmap handle in the UpdateInfo is used since none of the

*are* used

&gt; Source/WebKit2/Shared/ShareableBitmap.h:123
&gt; +    QImage createQImage();

createStaticQImage then ?

&gt; Source/WebKit2/WebProcess/WebPage/TiledDrawingArea.cpp:234
&gt; +        WebProcess::shared().connection()-&gt;deprecatedSend(DrawingAreaProxyLegacyMessage::SnapshotTaken, m_webPage-&gt;pageID(), CoreIPC::In(updateInfo));

How is this supposed to be fixed? The SnapshotTaken is Qt specific right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408290</commentid>
    <comment_count>3</comment_count>
      <attachid>94452</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-05-23 14:20:35 -0700</bug_when>
    <thetext>Comment on attachment 94452
Proposed patch

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

&gt; Source/WebKit2/Shared/qt/UpdateChunk.cpp:-110
&gt; -    if (QPixmap::defaultDepth() == 16)
&gt; -        bpp = 2;
&gt; -    else
&gt; -        bpp = 4;

This is the only part I&apos;m missing in the new patch. Andreas, do you want to add it in this patch or do a follow-up patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408784</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-24 05:45:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 94452 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94452&amp;action=review
&gt; 
&gt; How are these shared bitmaps being shared, ie what is the actual difference/improvement over what we did before?

For the intent and purpose at hand, there is no real difference or improvement beyond a decrease in unshared code. This is essentially about making TiledDrawingArea use the same primitives as DrawingAreaImpl.

&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        Pass UpdateInfo containing ShareableBitmaps instead of UpdateChunk for tile updates.
&gt; 
&gt; So I guess this is the new preferred way?

Yes. Like I said in the description, Qt is the only remaining user of UpdateChunk.

&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Only the bounds rect and bitmap handle in the UpdateInfo is used since none of the
&gt; 
&gt; *are* used

Oops! Will fix.

&gt; &gt; Source/WebKit2/Shared/ShareableBitmap.h:123
&gt; &gt; +    QImage createQImage();
&gt; 
&gt; createStaticQImage then ?

Why? The QImage created references the underlying raw pixel data (no copy is made), so it&apos;s not necessarily static.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TiledDrawingArea.cpp:234
&gt; &gt; +        WebProcess::shared().connection()-&gt;deprecatedSend(DrawingAreaProxyLegacyMessage::SnapshotTaken, m_webPage-&gt;pageID(), CoreIPC::In(updateInfo));
&gt; 
&gt; How is this supposed to be fixed? The SnapshotTaken is Qt specific right?

You mean the &quot;deprecatedX&quot; functions? I plan to remove our use of those in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408785</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-24 05:47:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 94452 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94452&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/qt/UpdateChunk.cpp:-110
&gt; &gt; -    if (QPixmap::defaultDepth() == 16)
&gt; &gt; -        bpp = 2;
&gt; &gt; -    else
&gt; &gt; -        bpp = 4;
&gt; 
&gt; This is the only part I&apos;m missing in the new patch. Andreas, do you want to add it in this patch or do a follow-up patch?

Good point, Simon. I had originally planned to do it separately by out-of-lining ShareableBitmap::numBytesForSize() etc. But if you prefer, I certainly don&apos;t mind doing it in this patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408912</commentid>
    <comment_count>6</comment_count>
      <attachid>94452</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-05-24 09:18:36 -0700</bug_when>
    <thetext>Comment on attachment 94452
Proposed patch

r=me . Nice cleanup!

I&apos;d say fix the typo before landing that Kenneth pointed out. I&apos;m fine with the pixmap depth change being done in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408921</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-24 09:31:08 -0700</bug_when>
    <thetext>Committed r87160: &lt;http://trac.webkit.org/changeset/87160&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94452</attachid>
            <date>2011-05-23 12:08:11 -0700</date>
            <delta_ts>2011-05-24 09:18:36 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-61296.diff</filename>
            <type>text/plain</type>
            <size>23654</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3OTA3NmFmLi5mOGNmYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTEtMDUtMjMgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSzJdIENoYW5nZSBU
aWxlZERyYXdpbmdBcmVhIHRvIHVzZSBTaGFyZWFibGVCaXRtYXAgaW5zdGVhZCBvZiBVcGRhdGVD
aHVuay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
Mjk2CisKKyAgICAgICAgUGFzcyBVcGRhdGVJbmZvIGNvbnRhaW5pbmcgU2hhcmVhYmxlQml0bWFw
cyBpbnN0ZWFkIG9mIFVwZGF0ZUNodW5rIGZvciB0aWxlIHVwZGF0ZXMuCisgICAgICAgIE9ubHkg
dGhlIGJvdW5kcyByZWN0IGFuZCBiaXRtYXAgaGFuZGxlIGluIHRoZSBVcGRhdGVJbmZvIGlzIHVz
ZWQgc2luY2Ugbm9uZSBvZiB0aGUKKyAgICAgICAgb3RoZXIgcGFyYW1ldGVycyBhcmUgbmVlZGVk
IGZvciBUaWxlZERyYXdpbmdBcmVhLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oOgorICAgICAgICAqIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUUltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBTaGFyZWQvcXQvVXBkYXRl
Q2h1bmsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9xdC9VcGRhdGVDaHVuay5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZERyYXdpbmdBcmVhUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYVByb3h5Ojp3YWl0VW50aWxVcGRh
dGVzQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVRpbGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZERyYXdpbmdBcmVhUHJveHk6OnNuYXBzaG90VGFrZW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhVGlsZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VGlsZWREcmF3aW5nQXJlYVRpbGU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKiBXZWJL
aXQyLnBybzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkRHJhd2luZ0FyZWE6OnVwZGF0ZVRpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZERyYXdpbmdBcmVhOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VGlsZWREcmF3aW5nQXJlYTo6cGFpbnRJbnRvQml0bWFwKToKKwogMjAxMS0wNS0yMyAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0sy
XSBVbnJldmlld2VkIHRyaXZpYWwgZml4IGFmdGVyIHI4Njk5MC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCAyY2EwZDliLi43OGRmMjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5j
bHVkZSA8UUltYWdlPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiB9CkBAIC0xMTMsNiArMTE3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBU
aGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNo
YXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3
ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNo
YW5nZS4KICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNl
KCk7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYSBRSW1hZ2UgdGhh
dCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCisgICAgLy8gVGhp
cyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0
aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCisgICAgUUltYWdlIGNyZWF0ZVFJbWFn
ZSgpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1No
YXJlYWJsZUJpdG1hcFF0LmNwcAppbmRleCBiMmFlMTExLi5lNzczZDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTM0LDE1ICszNCwx
NSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyBpbmxpbmUgUUltYWdlIGNyZWF0ZVFJbWFnZSh2b2lkKiBkYXRhLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCitRSW1hZ2UgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVRSW1hZ2UoKQogewotICAg
IHJldHVybiBRSW1hZ2UocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KGRhdGEpLCB3aWR0aCwgaGVp
Z2h0LCB3aWR0aCAqIDQsIFFJbWFnZTo6Rm9ybWF0X1JHQjMyKTsKKyAgICByZXR1cm4gUUltYWdl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihkYXRhKCkpLCBtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpLCBtX3NpemUud2lkdGgoKSAqIDQsIFFJbWFnZTo6Rm9ybWF0X1JHQjMyKTsKIH0K
IAogUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgT3duUHRyPFFJ
bWFnZT4/Ci0gICAgUUltYWdlKiBpbWFnZSA9IG5ldyBRSW1hZ2UoY3JlYXRlUUltYWdlKGRhdGEo
KSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOworICAgIFFJbWFnZSogaW1hZ2Ug
PSBuZXcgUUltYWdlKGNyZWF0ZVFJbWFnZSgpKTsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChuZXcgUVBhaW50ZXIoaW1h
Z2UpKSk7CiAgICAgY29udGV4dC0+dGFrZU93bmVyc2hpcE9mUGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwpAQCAtNTAsNyArNTAsNyBAQCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQo
KQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiB7Ci0g
ICAgUUltYWdlIGltYWdlID0gY3JlYXRlUUltYWdlKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSk7CisgICAgUUltYWdlIGltYWdlID0gY3JlYXRlUUltYWdlKCk7CiAgICAg
UVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50
ZXItPmRyYXdJbWFnZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9VcGRhdGVDaHVuay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcXQvVXBkYXRlQ2h1bmsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NzJkNDk5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9V
cGRhdGVDaHVuay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCi0KLSNpbmNs
dWRlICJBcmd1bWVudERlY29kZXIuaCIKLSNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKLSNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxRSU9EZXZpY2U+Ci0j
aW5jbHVkZSA8UUltYWdlPgotI2luY2x1ZGUgPFFQaXhtYXA+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotVXBkYXRlQ2h1bms6OlVwZGF0ZUNodW5rKCkKLXsKLX0KLQotVXBkYXRlQ2h1bms6OlVw
ZGF0ZUNodW5rKGNvbnN0IEludFJlY3QmIHJlY3QpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAs
IG1fc2hhcmVkTWVtb3J5KFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHNpemUoKSkpCi17Ci19Ci0KLVVw
ZGF0ZUNodW5rOjp+VXBkYXRlQ2h1bmsoKQotewotfQotCi12b2lkIFVwZGF0ZUNodW5rOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29k
ZXItPmVuY29kZShtX3JlY3QpOwotICAgIGlmICghbV9zaGFyZWRNZW1vcnkpIHsKLSAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNo
YXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAobV9zaGFyZWRNZW1vcnktPmNyZWF0
ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpKSB7Ci0gICAgICAgIGVuY29k
ZXItPmVuY29kZSh0cnVlKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGhhbmRsZSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIGVuY29kZXItPmVuY29kZShmYWxzZSk7Ci0KLSAgICBtX3NoYXJlZE1l
bW9yeSA9IDA7Ci19Ci0KLWJvb2wgVXBkYXRlQ2h1bms6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFVwZGF0ZUNodW5rJiBjaHVuaykKLXsKLSAgICBBU1NFUlRfQVJH
KGNodW5rLCBjaHVuay5pc0VtcHR5KCkpOwotCi0gICAgSW50UmVjdCByZWN0OwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjaHVu
ay5tX3JlY3QgPSByZWN0OwotCi0gICAgYm9vbCBoYXNTaGFyZWRNZW1vcnk7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoaGFzU2hhcmVkTWVtb3J5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFoYXNTaGFyZWRNZW1vcnkpIHsKLSAgICAgICAgY2h1bmsubV9zaGFyZWRNZW1v
cnkgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY2h1bmsubV9zaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1zaXplX3QgVXBkYXRlQ2h1bms6OnNpemUoKSBjb25zdAotewotICAgIGludCBi
cHA7Ci0gICAgaWYgKFFQaXhtYXA6OmRlZmF1bHREZXB0aCgpID09IDE2KQotICAgICAgICBicHAg
PSAyOwotICAgIGVsc2UKLSAgICAgICAgYnBwID0gNDsKLQotICAgIHJldHVybiAoKG1fcmVjdC53
aWR0aCgpICogYnBwICsgMykgJiB+MHgzKQotICAgICAgICAgICAqIG1fcmVjdC5oZWlnaHQoKTsK
LX0KLQotUUltYWdlIFVwZGF0ZUNodW5rOjpjcmVhdGVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG1fc2hhcmVkTWVtb3J5KTsKLSAgICBpZiAoIW1fc2hhcmVkTWVtb3J5KQotICAgICAgICBy
ZXR1cm4gUUltYWdlKCk7Ci0KLSAgICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQ7Ci0gICAgaW50IGJw
cDsKLSAgICBpZiAoUVBpeG1hcDo6ZGVmYXVsdERlcHRoKCkgPT0gMTYpIHsKLSAgICAgICAgZm9y
bWF0ID0gUUltYWdlOjpGb3JtYXRfUkdCMTY7Ci0gICAgICAgIGJwcCA9IDI7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgZm9ybWF0ID0gUUltYWdlOjpGb3JtYXRfUkdCMzI7Ci0gICAgICAgIGJwcCA9
IDQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIFFJbWFnZShyZWludGVycHJldF9jYXN0PHVuc2lnbmVk
IGNoYXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgbV9yZWN0LndpZHRoKCksIG1fcmVjdC5o
ZWlnaHQoKSwgKG1fcmVjdC53aWR0aCgpICogYnBwICsgMykgJiB+MHgzLCBmb3JtYXQpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9VcGRhdGVDaHVuay5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1VwZGF0ZUNodW5r
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NDA1NmEuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1VwZGF0ZUNodW5rLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVcGRhdGVDaHVu
a19oCi0jZGVmaW5lIFVwZGF0ZUNodW5rX2gKLQotI2luY2x1ZGUgPFFJbWFnZT4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLQotbmFtZXNw
YWNlIENvcmVJUEMgewotY2xhc3MgQXJndW1lbnRFbmNvZGVyOwotY2xhc3MgQXJndW1lbnREZWNv
ZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgVXBkYXRlQ2h1bmsgewotcHVi
bGljOgotICAgIFVwZGF0ZUNodW5rKCk7Ci0gICAgVXBkYXRlQ2h1bmsoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwotICAgIH5VcGRhdGVDaHVuaygpOwotCi0gICAgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5pc0VtcHR5KCk7IH0KLQotICAgIHZvaWQgZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBVcGRhdGVDaHVuayYpOwotCi0gICAgUUltYWdlIGNy
ZWF0ZUltYWdlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
LQotICAgIFdlYkNvcmU6OkludFJlY3QgbV9yZWN0OwotCi0gICAgbXV0YWJsZSBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gVXBkYXRlQ2h1bmtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCA1MmZiNzc5Li41NzAwNWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNw
cApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VJRC5oIgotI2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCisjaW5jbHVkZSAiVXBkYXRlSW5m
by5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMTI2LDE2ICsxMjYs
MTYgQEAgdm9pZCBUaWxlZERyYXdpbmdBcmVhUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXMKICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8
RHJhd2luZ0FyZWFQcm94eUxlZ2FjeU1lc3NhZ2U6OktpbmQ+KCkpIHsKICAgICBjYXNlIERyYXdp
bmdBcmVhUHJveHlMZWdhY3lNZXNzYWdlOjpUaWxlVXBkYXRlZDogewogICAgICAgICBpbnQgdGls
ZUlEOwotICAgICAgICBVcGRhdGVDaHVuayB1cGRhdGVDaHVuazsKKyAgICAgICAgVXBkYXRlSW5m
byB1cGRhdGVJbmZvOwogICAgICAgICBmbG9hdCBzY2FsZTsKICAgICAgICAgdW5zaWduZWQgcGVu
ZGluZ1VwZGF0ZUNvdW50OwotICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6
Ok91dCh0aWxlSUQsIHVwZGF0ZUNodW5rLCBzY2FsZSwgcGVuZGluZ1VwZGF0ZUNvdW50KSkpCisg
ICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHRpbGVJRCwgdXBkYXRl
SW5mbywgc2NhbGUsIHBlbmRpbmdVcGRhdGVDb3VudCkpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIFRpbGVkRHJhd2luZ0FyZWFUaWxlKiB0aWxlID0gbV90aWxlc0J5SUQuZ2V0KHRp
bGVJRCk7CiAgICAgICAgIEFTU0VSVCghdGlsZSB8fCB0aWxlLT5JRCgpID09IHRpbGVJRCk7CiAg
ICAgICAgIGlmICh0aWxlKQotICAgICAgICAgICAgdGlsZS0+dXBkYXRlRnJvbUNodW5rKCZ1cGRh
dGVDaHVuaywgc2NhbGUpOworICAgICAgICAgICAgdGlsZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBk
YXRlSW5mbywgc2NhbGUpOwogICAgICAgICB0aWxlQnVmZmVyVXBkYXRlQ29tcGxldGUoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTYwLDEwICsxNjAsMTEgQEAgdm9pZCBUaWxlZERyYXdp
bmdBcmVhUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXMKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRHJhd2luZ0FyZWFQcm94
eUxlZ2FjeU1lc3NhZ2U6OlNuYXBzaG90VGFrZW46IHsKLSAgICAgICAgVXBkYXRlQ2h1bmsgY2h1
bms7Ci0gICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGNodW5rKSkp
CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFh
cmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoaGFuZGxlKSkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHNuYXBzaG90VGFrZW4oY2h1bmspOworICAgICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOworICAg
ICAgICBzbmFwc2hvdFRha2VuKGJpdG1hcC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBkZWZhdWx0OgpAQCAtMTgwLDE5ICsxODEsMTkgQEAgdm9pZCBUaWxlZERyYXdpbmdBcmVh
UHJveHk6OndhaXRVbnRpbFVwZGF0ZXNDb21wbGV0ZSgpCiB7CiAgICAgd2hpbGUgKGhhc1BlbmRp
bmdVcGRhdGVzKCkpIHsKICAgICAgICAgaW50IHRpbGVJRDsKLSAgICAgICAgVXBkYXRlQ2h1bmsg
dXBkYXRlQ2h1bms7CisgICAgICAgIFVwZGF0ZUluZm8gdXBkYXRlSW5mbzsKICAgICAgICAgZmxv
YXQgc2NhbGU7CiAgICAgICAgIHVuc2lnbmVkIHBlbmRpbmdVcGRhdGVDb3VudDsKICAgICAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB0aWxlVXBkYXRlVGltZW91dCA9IDEwLjA7CiAgICAgICAgIE93
blB0cjxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IHBhZ2UoKS0+cHJvY2Vz
cygpLT5jb25uZWN0aW9uKCktPmRlcHJlY2F0ZWRXYWl0Rm9yKERyYXdpbmdBcmVhUHJveHlMZWdh
Y3lNZXNzYWdlOjpUaWxlVXBkYXRlZCwgcGFnZSgpLT5wYWdlSUQoKSwgdGlsZVVwZGF0ZVRpbWVv
dXQpOwogICAgICAgICBpZiAoIWFyZ3VtZW50cykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0aWxlSUQsIHVwZGF0ZUNodW5r
LCBzY2FsZSwgcGVuZGluZ1VwZGF0ZUNvdW50KSkpCisgICAgICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KHRpbGVJRCwgdXBkYXRlSW5mbywgc2NhbGUsIHBlbmRpbmdVcGRh
dGVDb3VudCkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFRpbGVkRHJhd2luZ0FyZWFU
aWxlKiB0aWxlID0gbV90aWxlc0J5SUQuZ2V0KHRpbGVJRCk7CiAgICAgICAgIEFTU0VSVCghdGls
ZSB8fCB0aWxlLT5JRCgpID09IHRpbGVJRCk7CiAgICAgICAgIGlmICh0aWxlKQotICAgICAgICAg
ICAgdGlsZS0+dXBkYXRlRnJvbUNodW5rKCZ1cGRhdGVDaHVuaywgc2NhbGUpOworICAgICAgICAg
ICAgdGlsZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbywgc2NhbGUpOwogICAgIH0KICAg
ICB0aWxlQnVmZmVyVXBkYXRlQ29tcGxldGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaAppbmRleCA4OWFkNjJhLi41MmU2OTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5o
CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFFHcmFwaGljc1dLVmlldzsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIFVwZGF0ZUNodW5rOworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xh
c3MgV2ViUGFnZVByb3h5OwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTA5LDcgKzEwOSw3IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCB3ZWJWaWV3VmlzaWJsZVJlY3QoKTsKICAg
ICB2b2lkIHVwZGF0ZVdlYlZpZXcoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWlu
dGVkQXJlYSk7CiAKLSAgICB2b2lkIHNuYXBzaG90VGFrZW4oVXBkYXRlQ2h1bmsmKTsKKyAgICB2
b2lkIHNuYXBzaG90VGFrZW4oU2hhcmVhYmxlQml0bWFwKik7CiAKICAgICAvLyBEcmF3aW5nQXJl
YVByb3h5CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFUaWxl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVRpbGUuaAppbmRl
eCBjODE4YTNmLi5mNjk1MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VGlsZWREcmF3aW5nQXJlYVRpbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGls
ZWREcmF3aW5nQXJlYVRpbGUuaApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFRpbGVkRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIFVwZGF0ZUNodW5rOworY2xh
c3MgVXBkYXRlSW5mbzsKIAogY2xhc3MgVGlsZWREcmF3aW5nQXJlYVRpbGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxUaWxlZERyYXdpbmdBcmVhVGlsZT4gewogcHVibGljOgpAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQogICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
IAotICAgIHZvaWQgdXBkYXRlRnJvbUNodW5rKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVuaywgZmxv
YXQpOworICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYsIGZsb2F0
IHNjYWxlKTsKIAogICAgIGludCBJRCgpIGNvbnN0IHsgcmV0dXJuIG1fSUQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhUHJveHlR
dC5jcHAKaW5kZXggNWRkYTQ1NC4uMjQ5MjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJVcGRhdGVDaHVuay5o
IgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCkBAIC02Miw5ICs2Miw5IEBAIFdlYlBhZ2VQcm94
eSogVGlsZWREcmF3aW5nQXJlYVByb3h5OjpwYWdlKCkKICAgICByZXR1cm4gdG9JbXBsKG1fd2Vi
Vmlldy0+cGFnZSgpLT5wYWdlUmVmKCkpOwogfQogCi12b2lkIFRpbGVkRHJhd2luZ0FyZWFQcm94
eTo6c25hcHNob3RUYWtlbihVcGRhdGVDaHVuayYgY2h1bmspCit2b2lkIFRpbGVkRHJhd2luZ0Fy
ZWFQcm94eTo6c25hcHNob3RUYWtlbihTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCkKIHsKLSAgICBl
bWl0IG1fd2ViVmlldy0+c25hcHNob3RUYWtlbihjaHVuay5jcmVhdGVJbWFnZSgpKTsKKyAgICBl
bWl0IG1fd2ViVmlldy0+c25hcHNob3RUYWtlbihiaXRtYXAtPmNyZWF0ZVFJbWFnZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVRpbGVRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVRpbGVRdC5jcHAKaW5kZXggMTFlMzI1Zi4uNjM5NmUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0Fy
ZWFUaWxlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9UaWxlZERyYXdp
bmdBcmVhVGlsZVF0LmNwcApAQCAtMjksMTAgKzI5LDExIEBACiAjaWYgRU5BQkxFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJUaWxlZERyYXdpbmdBcmVhUHJveHkuaCIKKyNp
bmNsdWRlICJVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKICNpbmNsdWRl
IDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UU9iamVjdD4KICNpbmNsdWRlIDxRUGFpbnRlcj4K
QEAgLTExNywxMCArMTE4LDExIEBAIHZvaWQgVGlsZWREcmF3aW5nQXJlYVRpbGU6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcCh0YXJnZXQsIG1fYnVmZmVyLCBzb3VyY2Up
OwogfQogCi12b2lkIFRpbGVkRHJhd2luZ0FyZWFUaWxlOjp1cGRhdGVGcm9tQ2h1bmsoVXBkYXRl
Q2h1bmsqIHVwZGF0ZUNodW5rLCBmbG9hdCkKK3ZvaWQgVGlsZWREcmF3aW5nQXJlYVRpbGU6Omlu
Y29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGZsb2F0KQogewot
ICAgIFFJbWFnZSBpbWFnZSh1cGRhdGVDaHVuay0+Y3JlYXRlSW1hZ2UoKSk7Ci0gICAgY29uc3Qg
SW50UmVjdCYgdXBkYXRlQ2h1bmtSZWN0ID0gdXBkYXRlQ2h1bmstPnJlY3QoKTsKKyAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRh
dGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgUUltYWdlIGltYWdlKGJpdG1hcC0+Y3JlYXRlUUlt
YWdlKCkpOworICAgIGNvbnN0IEludFJlY3QmIHVwZGF0ZUNodW5rUmVjdCA9IHVwZGF0ZUluZm8u
dXBkYXRlUmVjdEJvdW5kczsKIAogI2lmZGVmIFRJTEVfREVCVUdfTE9HCiAgICAgcURlYnVnKCkg
PDwgInRpbGUgdXBkYXRlZCBpZD0iIDw8IElEKCkgPDwgIiByZWN0PSIgPDwgUVJlY3QodXBkYXRl
Q2h1bmtSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggMjZkZWFmZC4uMjhhMjExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8KQEAgLTE3MSw3ICsxNzEsNiBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAogICAgIFNoYXJlZC9QbHVnaW5z
L1BsdWdpblF1aXJrcy5oIFwKICAgICBTaGFyZWQvcXQvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8u
aCBcCi0gICAgU2hhcmVkL3F0L1VwZGF0ZUNodW5rLmggXAogICAgIFNoYXJlZC9xdC9XZWJFdmVu
dEZhY3RvcnlRdC5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggXApAQCAtMzc3LDcgKzM3Niw2IEBAIFNPVVJDRVMg
Kz0gXAogICAgIFNoYXJlZC9xdC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50UXQuY3BwIFwKICAgICBT
aGFyZWQvcXQvTmF0aXZlV2ViTW91c2VFdmVudFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L05hdGl2
ZVdlYldoZWVsRXZlbnRRdC5jcHAgXAotICAgIFNoYXJlZC9xdC9VcGRhdGVDaHVuay5jcHAgXAog
ICAgIFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgXAogICAgIFNoYXJlZC9x
dC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxl
ZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxl
ZERyYXdpbmdBcmVhLmNwcAppbmRleCA1OTk3NTY0Li5kYTc2YzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZUlELmgiCi0jaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKKyNpbmNsdWRlICJVcGRhdGVJbmZvLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZS9GcmFtZS5oIgogI2luY2x1ZGUgIldlYkNvcmUvRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC0xMzgsMTEgKzEzOCwx
NCBAQCB2b2lkIFRpbGVkRHJhd2luZ0FyZWE6OnVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBmbG9hdCBzYwogewogICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZO
ZWVkZWQoKTsKIAotICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rKGRpcnR5UmVjdCk7Ci0gICAg
cGFpbnRJbnRvVXBkYXRlQ2h1bmsoJnVwZGF0ZUNodW5rLCBzY2FsZSk7CisgICAgVXBkYXRlSW5m
byB1cGRhdGVJbmZvOworICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcyA9IGRpcnR5UmVj
dDsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShkaXJ0eVJlY3Quc2l6ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKHVwZGF0ZUluZm8uYml0bWFwSGFu
ZGxlKTsKKyAgICBwYWludEludG9CaXRtYXAoYml0bWFwLmdldCgpLCBkaXJ0eVJlY3QsIHNjYWxl
KTsKIAogICAgIHVuc2lnbmVkIHBlbmRpbmdVcGRhdGVDb3VudCA9IG1fcGVuZGluZ1VwZGF0ZXMu
c2l6ZSgpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+ZGVwcmVjYXRl
ZFNlbmQoRHJhd2luZ0FyZWFQcm94eUxlZ2FjeU1lc3NhZ2U6OlRpbGVVcGRhdGVkLCBtX3dlYlBh
Z2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbih0aWxlSUQsIHVwZGF0ZUNodW5rLCBzY2FsZSwgcGVu
ZGluZ1VwZGF0ZUNvdW50KSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5kZXByZWNhdGVkU2VuZChEcmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6VGlsZVVwZGF0
ZWQsIG1fd2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHRpbGVJRCwgdXBkYXRlSW5mbywg
c2NhbGUsIHBlbmRpbmdVcGRhdGVDb3VudCkpOwogfQogCiB2b2lkIFRpbGVkRHJhd2luZ0FyZWE6
OnRpbGVVcGRhdGVUaW1lckZpcmVkKCkKQEAgLTIxOSwxMCArMjIyLDE2IEBAIHZvaWQgVGlsZWRE
cmF3aW5nQXJlYTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJCiAKICAgICAgICAgZmxvYXQgdGFyZ2V0U2NhbGUgPSBmbG9hdCh0YXJnZXRT
aXplLndpZHRoKCkpIC8gY29udGVudHNSZWN0LndpZHRoKCk7CiAKLSAgICAgICAgVXBkYXRlQ2h1
bmsgdXBkYXRlQ2h1bmsoSW50UmVjdChJbnRQb2ludChjb250ZW50c1JlY3QueCgpICogdGFyZ2V0
U2NhbGUsIGNvbnRlbnRzUmVjdC55KCkgKiB0YXJnZXRTY2FsZSksIHRhcmdldFNpemUpKTsKLSAg
ICAgICAgcGFpbnRJbnRvVXBkYXRlQ2h1bmsoJnVwZGF0ZUNodW5rLCB0YXJnZXRTY2FsZSk7Cisg
ICAgICAgIEludFJlY3QgdGlsZVJlY3QoSW50UG9pbnQoY29udGVudHNSZWN0LngoKSAqIHRhcmdl
dFNjYWxlLCBjb250ZW50c1JlY3QueSgpICogdGFyZ2V0U2NhbGUpLCB0YXJnZXRTaXplKTsKIAot
ICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPmRlcHJlY2F0ZWRTZW5k
KERyYXdpbmdBcmVhUHJveHlMZWdhY3lNZXNzYWdlOjpTbmFwc2hvdFRha2VuLCBtX3dlYlBhZ2Ut
PnBhZ2VJRCgpLCBDb3JlSVBDOjpJbih1cGRhdGVDaHVuaykpOworICAgICAgICBVcGRhdGVJbmZv
IHVwZGF0ZUluZm87CisgICAgICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcyA9IHRpbGVS
ZWN0OworICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSh0aWxlUmVjdC5zaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKHVwZGF0ZUluZm8u
Yml0bWFwSGFuZGxlKTsKKworICAgICAgICBwYWludEludG9CaXRtYXAoYml0bWFwLmdldCgpLCB0
aWxlUmVjdCwgdGFyZ2V0U2NhbGUpOworCisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+ZGVwcmVjYXRlZFNlbmQoRHJhd2luZ0FyZWFQcm94eUxlZ2FjeU1lc3NhZ2U6
OlNuYXBzaG90VGFrZW4sIG1fd2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHVwZGF0ZUlu
Zm8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuaAppbmRleCAz
NTcyYzlmLi44NzhhMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9UaWxlZERyYXdpbmdBcmVhLmgKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFVwZGF0ZUNodW5rOworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwog
CiBjbGFzcyBUaWxlZERyYXdpbmdBcmVhIDogcHVibGljIERyYXdpbmdBcmVhIHsKIHB1YmxpYzoK
QEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRpbGUoaW50IHRpbGVJ
RCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBmbG9hdCBzY2FsZSk7CiAKICAg
ICAvLyBQbGF0Zm9ybSBvdmVycmlkZXMKLSAgICB2b2lkIHBhaW50SW50b1VwZGF0ZUNodW5rKFVw
ZGF0ZUNodW5rKiwgZmxvYXQgc2NhbGUpOworICAgIHZvaWQgcGFpbnRJbnRvQml0bWFwKFNoYXJl
YWJsZUJpdG1hcCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0LCBmbG9hdCBzY2Fs
ZSk7CiAKICAgICB2b2lkIHRpbGVVcGRhdGVUaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9UaWxlZERyYXdpbmdBcmVhUXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1RpbGVkRHJhd2luZ0FyZWFR
dC5jcHAKaW5kZXggYzlhZTAzZC4uMzZiZWNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1RpbGVkRHJhd2luZ0FyZWFRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1RpbGVkRHJhd2luZ0FyZWFRdC5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCi0jaW5j
bHVkZSAiVXBkYXRlQ2h1bmsuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KIApA
QCAtMzksMjAgKzM5LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBUaWxlZERyYXdpbmdBcmVhOjpwYWludEludG9VcGRhdGVDaHVuayhV
cGRhdGVDaHVuayogdXBkYXRlQ2h1bmssIGZsb2F0IHNjYWxlKQordm9pZCBUaWxlZERyYXdpbmdB
cmVhOjpwYWludEludG9CaXRtYXAoU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHRpbGVSZWN0LCBmbG9hdCBzY2FsZSkKIHsKLSAgICBJbnRSZWN0IHRpbGVS
ZWN0ID0gdXBkYXRlQ2h1bmstPnJlY3QoKTsKLSAgICBRSW1hZ2UgaW1hZ2UodXBkYXRlQ2h1bmst
PmNyZWF0ZUltYWdlKCkpOwotICAgIFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKLSAgICAvLyBO
b3cgcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KLSAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KCZwYWludGVyKTsKLSAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC10
aWxlUmVjdC54KCksIC10aWxlUmVjdC55KCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShG
bG9hdFNpemUoc2NhbGUsIHNjYWxlKSk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0KGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpOworICAgIGdyYXBo
aWNzQ29udGV4dC0+dHJhbnNsYXRlKC10aWxlUmVjdC54KCksIC10aWxlUmVjdC55KCkpOworICAg
IGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIElu
dFJlY3QgY29udGVudFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh0aWxlUmVjdC54
KCkgLyBzY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGlsZVJlY3QueSgpIC8gc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCkgLyBzY2FsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVJl
Y3QuaGVpZ2h0KCkgLyBzY2FsZSkpOwotICAgIG1fd2ViUGFnZS0+ZHJhd1JlY3QoZ3JhcGhpY3ND
b250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgbV93ZWJQYWdlLT5kcmF3UmVjdCgqZ3JhcGhpY3ND
b250ZXh0LmdldCgpLCBjb250ZW50UmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="87755"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>