<?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>67606</bug_id>
          
          <creation_ts>2011-09-05 09:05:14 -0700</creation_ts>
          <short_desc>[Qt][WK2] Make TiledDrawingArea request tiles only in the direction the viewport is panned to.</short_desc>
          <delta_ts>2011-09-07 10:34:59 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462171</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-05 09:05:14 -0700</bug_when>
    <thetext>[Qt][WK2] Make TiledDrawingArea request tiles only in the direction the viewport is panned to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462186</commentid>
    <comment_count>1</comment_count>
      <attachid>106343</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-05 10:01:12 -0700</bug_when>
    <thetext>Created attachment 106343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462195</commentid>
    <comment_count>2</comment_count>
      <attachid>106343</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-09-05 11:04:30 -0700</bug_when>
    <thetext>Comment on attachment 106343
Patch

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

Awesome stuff. Not sure if someone else (kenneth?) wants to take a look at these TBS patches as well, otherwise r=me.

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore::TiledBackingStore::setCoverAreaFocusVector):

The name &quot;focus&quot; has a bit of a keyboard connotation.
How about trajectory? (not sure this is that important, though)

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:305
&gt; +    // Inflates to both sides, so divide inflate delta by 2

Period at end of sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462206</commentid>
    <comment_count>3</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-05 11:45:40 -0700</bug_when>
    <thetext>Thanks, adding Kenneth in CC, I&apos;ll push it in a couple of days in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462453</commentid>
    <comment_count>4</comment_count>
      <attachid>106343</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-06 04:17:41 -0700</bug_when>
    <thetext>Comment on attachment 106343
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        (WebCore::TiledBackingStore::setCoverAreaFocusVector):
&gt; 
&gt; The name &quot;focus&quot; has a bit of a keyboard connotation.
&gt; How about trajectory? (not sure this is that important, though)

I support Trajectory as well, much better

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:314
&gt; +// A non-null focus vector will shrink the intersection rect to visibleRect plus it&apos;s expansion from it&apos;s

I think these should be &quot;its&quot; and not &quot;it&apos;s = it is&quot;

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:316
&gt; +// e.g. If visibleRect == (10,10)5x5 and coverMultiplier == 3.0:

Why is if upper case after e.g. ?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:319
&gt; +// and a (1,1) focus vector of will create tiles intersecting (10,10)10x10.

Strange sentence, I don&apos;t get it. &quot;of will&quot;?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:326
&gt; +        float focusVectorMultiplier = (m_coverAreaMultiplier - 1) / 2 / focusVectorNorm;

This line is hard to read, better add some ()&apos;s

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:327
&gt; +        result.move(result.width() * m_coverAreaFocusVector.x() * focusVectorMultiplier, result.height() * m_coverAreaFocusVector.y() * focusVectorMultiplier);

Maybe it would be more clear if you use two helper variables

&gt; Source/WebCore/platform/graphics/TiledBackingStore.h:94
&gt; +    IntRect calculateKeepRect(const IntRect&amp; visibleRect) const;
&gt; +    IntRect calculateCoverRect(const IntRect&amp; visibleRect) const;

in webkit we normally use the nomenclature &quot;compute&quot; instead of calculate

&gt; Source/WebKit/qt/Api/qwebpage.cpp:1229
&gt; +        // Multipliers were changed to only use a float, keep only the height part.

Is that comment useful? or can it be rewritten

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:165
&gt; +    // Make sure that this is emitted before viewportUpdateRequested so that the web process knows where to look for tiles.

I would make it more like // Must be emitted before...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462560</commentid>
    <comment_count>5</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-09-06 08:52:23 -0700</bug_when>
    <thetext>IMHO, coverRect should be intersected with a keepRect before use - may be instead of intersecting of coverRect with contentsRect in calculateCoverRect, because keepRect is already clipped by contentsRect.
I think without this needless create/remove of tiles could happen at the end of scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463427</commentid>
    <comment_count>6</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-07 10:27:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
Thx, changing all this stuff before pushing.

(In reply to comment #5)
As talked on IRC, the computed cover rect should never span out of the keep rect. Adding ASSERT(keepRect.contains(coverRect)) before pushing to ensure/communicate this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463434</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-07 10:34:59 -0700</bug_when>
    <thetext>Committed r94685: &lt;http://trac.webkit.org/changeset/94685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106343</attachid>
            <date>2011-09-05 10:01:12 -0700</date>
            <delta_ts>2011-09-06 04:17:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67606-20110905190110.patch</filename>
            <type>text/plain</type>
            <size>25304</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0Zjc1OGQ3YzkzZGMyMWUz
ZWVjZTkxZGFmY2RiMzc0NjRlNjY1NDc4Li5mODZhMDIxNDVkY2Q5ZDM3NjBlZTc4NDJlNTc0ZGVi
ODI0NWM3MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDktMDUgIEpvY2Vs
eW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gTWFrZSBUaWxlZERyYXdpbmdBcmVhIHJlcXVlc3QgdGlsZXMgb25seSBpbiB0aGUgZGly
ZWN0aW9uIHRoZSB2aWV3cG9ydCBpcyBwYW5uZWQgdG8uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlIHByZXZpb3VzbHkgdXNl
ZCBkaWZmZXJlbnQgdmFsdWVzIGZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWFsIG11bHRpcGxpY2F0
aW9uCisgICAgICAgIHRvIGNhbGN1bGF0ZSB0aGUgY292ZXIgYXJlYS4KKyAgICAgICAgVGhpcyBw
YXRjaCByZXBsYWNlcyB0aGlzIG1lY2hhbmlzbSwgdXNlZCB0byBnaXZlIGEgYmlnZ2VyIHBhbm5p
bmcgcmFuZ2UgdG8gdmVydGljYWwgcGFubmluZywKKyAgICAgICAgd2l0aCB0aGUgcG9zc2liaWxp
dHkgdG8gdXNlIHRoZSBtb3Rpb24gdmVjdG9yIG9mIHRoZSB2aWV3cG9ydCB0byByZXF1ZXN0IHRp
bGVzIGFoZWFkIGluc3RlYWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGVjb25vbWl6ZSBvbiBy
ZW5kZXJpbmcgcmVzb3VyY2VzIGFzIHRpbGVzIHdvbid0IGJlIHJlcXVlc3RlZCBiZXNpZGUgdGhl
IHRyYWplY3RvcnkKKyAgICAgICAgb2YgdGhlIHZpZXdwb3J0LgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpzZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldENvdmVyQXJlYUZvY3VzVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y2FsY3VsYXRlS2VlcFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNhbGN1bGF0ZUNvdmVyUmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpnZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGll
cnMpOgorCiAyMDExLTA5LTAxICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBUaWxlZEJhY2tpbmdTdG9yZTogSW1wb3J0IHRoZSBy
ZXNpemVFZGdlVGlsZXMgbG9naWMgZnJvbSBUaWxlZERyYXdpbmRBcmVhUHJveHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggMzlmZjI3MDRlOTAwMWFkYWJmMmE5MjA0YmQ2NzgxMjM1NTZiMDFmYi4uOTEyYWU2
OWRhMzMwODBhMGUzNTBmZjliYzMwZjRiYjYwZTY5ODNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDMs
MTIgKzQzLDEzIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyCiAgICAgLCBtX3RpbGVDcmVhdGlv
blRpbWVyKG5ldyBUaWxlVGltZXIodGhpcywgJlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQ3JlYXRp
b25UaW1lckZpcmVkKSkKICAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVXaWR0aCwgZGVmYXVs
dFRpbGVIZWlnaHQpCiAgICAgLCBtX3RpbGVDcmVhdGlvbkRlbGF5KDAuMDEpCi0gICAgLCBtX2tl
ZXBBcmVhTXVsdGlwbGllcigyLmYsIDMuNWYpCi0gICAgLCBtX2NvdmVyQXJlYU11bHRpcGxpZXIo
MS41ZiwgMi41ZikKKyAgICAsIG1fa2VlcEFyZWFNdWx0aXBsaWVyKDMuNWYpCisgICAgLCBtX2Nv
dmVyQXJlYU11bHRpcGxpZXIoMi41ZikKICAgICAsIG1fY29udGVudHNTY2FsZSgxLmYpCiAgICAg
LCBtX3BlbmRpbmdTY2FsZSgwKQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxzZSkKIHsKKyAg
ICBBU1NFUlQobV9jb3ZlckFyZWFNdWx0aXBsaWVyIDw9IG1fa2VlcEFyZWFNdWx0aXBsaWVyKTsK
IH0KIAogVGlsZWRCYWNraW5nU3RvcmU6On5UaWxlZEJhY2tpbmdTdG9yZSgpCkBAIC02OSwxMyAr
NzAsMjMgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZUNyZWF0aW9uRGVsYXkoZG91
YmxlIGRlbGF5KQogICAgIG1fdGlsZUNyZWF0aW9uRGVsYXkgPSBkZWxheTsKIH0KIAotdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJzKGNvbnN0IEZs
b2F0U2l6ZSYga2VlcE11bHRpcGxpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVy
KQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJz
KGZsb2F0IGtlZXBNdWx0aXBsaWVyLCBmbG9hdCBjb3Zlck11bHRpcGxpZXIpCiB7CisgICAgQVNT
RVJUKGNvdmVyTXVsdGlwbGllciA8PSBrZWVwTXVsdGlwbGllcik7CiAgICAgbV9rZWVwQXJlYU11
bHRpcGxpZXIgPSBrZWVwTXVsdGlwbGllcjsKICAgICBtX2NvdmVyQXJlYU11bHRpcGxpZXIgPSBj
b3Zlck11bHRpcGxpZXI7CiAgICAgc3RhcnRUaWxlQ3JlYXRpb25UaW1lcigpOwogfQogCit2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb3ZlckFyZWFGb2N1c1ZlY3Rvcihjb25zdCBGbG9hdFBv
aW50JiB2ZWN0b3IpCit7CisgICAgaWYgKG1fY292ZXJBcmVhRm9jdXNWZWN0b3IgPT0gdmVjdG9y
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvdmVyQXJlYUZvY3VzVmVjdG9yID0gdmVjdG9y
OworICAgIHN0YXJ0VGlsZUNyZWF0aW9uVGltZXIoKTsKK30KKwogdm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKIHsKICAg
ICBJbnRSZWN0IGRpcnR5UmVjdChtYXBGcm9tQ29udGVudHMoY29udGVudHNEaXJ0eVJlY3QpKTsK
QEAgLTI0MCwxOSArMjUxLDExIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVz
KCkKICAgICAvLyBSZXNpemUgdGlsZXMgb24gZWRnZXMgaW4gY2FzZSB0aGUgY29udGVudHMgc2l6
ZSBoYXMgY2hhbmdlZC4KICAgICBib29sIGRpZFJlc2l6ZVRpbGVzID0gcmVzaXplRWRnZVRpbGVz
KCk7CiAKLSAgICBJbnRSZWN0IGtlZXBSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0gICAgLy8gSW5mbGF0
ZXMgdG8gYm90aCBzaWRlcywgc28gZGl2aWRlIGluZmxhdGUgZGVsdGEgYnkgMgotICAgIGtlZXBS
ZWN0LmluZmxhdGVYKHZpc2libGVSZWN0LndpZHRoKCkgKiAobV9rZWVwQXJlYU11bHRpcGxpZXIu
d2lkdGgoKSAtIDEuZikgLyAyKTsKLSAgICBrZWVwUmVjdC5pbmZsYXRlWSh2aXNpYmxlUmVjdC5o
ZWlnaHQoKSAqIChtX2tlZXBBcmVhTXVsdGlwbGllci5oZWlnaHQoKSAtIDEuZikgLyAyKTsKLSAg
ICBrZWVwUmVjdC5pbnRlcnNlY3QoY29udGVudHNSZWN0KCkpOworICAgIEludFJlY3Qga2VlcFJl
Y3QgPSBjYWxjdWxhdGVLZWVwUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgCiAgICAgZHJvcFRpbGVz
T3V0c2lkZVJlY3Qoa2VlcFJlY3QpOwogICAgIAotICAgIEludFJlY3QgY292ZXJSZWN0ID0gdmlz
aWJsZVJlY3Q7Ci0gICAgLy8gSW5mbGF0ZXMgdG8gYm90aCBzaWRlcywgc28gZGl2aWRlIGluZmxh
dGUgZGVsdGEgYnkgMgotICAgIGNvdmVyUmVjdC5pbmZsYXRlWCh2aXNpYmxlUmVjdC53aWR0aCgp
ICogKG1fY292ZXJBcmVhTXVsdGlwbGllci53aWR0aCgpIC0gMS5mKSAvIDIpOwotICAgIGNvdmVy
UmVjdC5pbmZsYXRlWSh2aXNpYmxlUmVjdC5oZWlnaHQoKSAqIChtX2NvdmVyQXJlYU11bHRpcGxp
ZXIuaGVpZ2h0KCkgLSAxLmYpIC8gMik7Ci0gICAgY292ZXJSZWN0LmludGVyc2VjdChjb250ZW50
c1JlY3QoKSk7CisgICAgSW50UmVjdCBjb3ZlclJlY3QgPSBjYWxjdWxhdGVDb3ZlclJlY3Qodmlz
aWJsZVJlY3QpOwogICAgIAogICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRpbGUgcG9zaXRpb24gY2xv
c2VzdCB0byB0aGUgdmlld3BvcnQgY2VudGVyIHRoYXQgZG9lcyBub3QgeWV0IGNvbnRhaW4gYSB0
aWxlLiAKICAgICAvLyBXaGljaCBwb3NpdGlvbiBpcyBjb25zaWRlcmVkIHRoZSBjbG9zZXN0IGRl
cGVuZHMgb24gdGhlIHRpbGVEaXN0YW5jZSBmdW5jdGlvbi4KQEAgLTI5Niw2ICsyOTksNDIgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICBtX3RpbGVDcmVh
dGlvblRpbWVyLT5zdGFydE9uZVNob3QobV90aWxlQ3JlYXRpb25EZWxheSk7CiB9CiAKK0ludFJl
Y3QgVGlsZWRCYWNraW5nU3RvcmU6OmNhbGN1bGF0ZUtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZp
c2libGVSZWN0KSBjb25zdAoreworICAgIEludFJlY3QgcmVzdWx0ID0gdmlzaWJsZVJlY3Q7Cisg
ICAgLy8gSW5mbGF0ZXMgdG8gYm90aCBzaWRlcywgc28gZGl2aWRlIGluZmxhdGUgZGVsdGEgYnkg
MgorICAgIHJlc3VsdC5pbmZsYXRlWCh2aXNpYmxlUmVjdC53aWR0aCgpICogKG1fa2VlcEFyZWFN
dWx0aXBsaWVyIC0gMSkgLyAyKTsKKyAgICByZXN1bHQuaW5mbGF0ZVkodmlzaWJsZVJlY3QuaGVp
Z2h0KCkgKiAobV9rZWVwQXJlYU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAgIHJlc3VsdC5pbnRl
cnNlY3QoY29udGVudHNSZWN0KCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQSBu
dWxsIGZvY3VzIHZlY3RvciBtZWFucyB0aGF0IHRpbGVzIGludGVyc2VjdGluZyBhbGwgdGhlIGNv
dmVyQXJlYSAoaS5lLiB2aXNpYmxlUmVjdCAqIGNvdmVyTXVsdGlwbGllcikgd2lsbCBiZSBjcmVh
dGVkLgorLy8gQSBub24tbnVsbCBmb2N1cyB2ZWN0b3Igd2lsbCBzaHJpbmsgdGhlIGludGVyc2Vj
dGlvbiByZWN0IHRvIHZpc2libGVSZWN0IHBsdXMgaXQncyBleHBhbnNpb24gZnJvbSBpdCdzCisv
LyBjZW50ZXIgdG93YXJkIHRoZSBjb3ZlciBhcmVhIGVkZ2VzIGluIHRoZSBkaXJlY3Rpb24gb2Yg
dGhlIGdpdmVuIHZlY3Rvci4KKy8vIGUuZy4gSWYgdmlzaWJsZVJlY3QgPT0gKDEwLDEwKTV4NSBh
bmQgY292ZXJNdWx0aXBsaWVyID09IDMuMDoKKy8vIGEgKDAsMCkgZm9jdXMgdmVjdG9yIHdpbGwg
Y3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAoNSw1KTE1eDE1LAorLy8gYSAoMSwwKSBmb2N1cyB2
ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICgxMCwxMCkxMHg1LAorLy8gYW5k
IGEgKDEsMSkgZm9jdXMgdmVjdG9yIG9mIHdpbGwgY3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAo
MTAsMTApMTB4MTAuCitJbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjpjYWxjdWxhdGVDb3ZlclJl
Y3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpIGNvbnN0Cit7CisgICAgSW50UmVjdCByZXN1
bHQgPSB2aXNpYmxlUmVjdDsKKyAgICBmbG9hdCBmb2N1c1ZlY3Rvck5vcm0gPSBzcXJ0KHBvdyht
X2NvdmVyQXJlYUZvY3VzVmVjdG9yLngoKSwgMikgKyBwb3cobV9jb3ZlckFyZWFGb2N1c1ZlY3Rv
ci55KCksIDIpKTsKKyAgICBpZiAoZm9jdXNWZWN0b3JOb3JtID4gMCkgeworICAgICAgICAvLyBV
bml0ZSB0aGUgdmlzaWJsZSByZWN0IHdpdGggYSAiZ2hvc3QiIG9mIHRoZSB2aXNpYmxlIHJlY3Qg
bW92ZWQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgbm9ybWFsaXplZCBmb2N1cyB2ZWN0b3IuCisg
ICAgICAgIGZsb2F0IGZvY3VzVmVjdG9yTXVsdGlwbGllciA9IChtX2NvdmVyQXJlYU11bHRpcGxp
ZXIgLSAxKSAvIDIgLyBmb2N1c1ZlY3Rvck5vcm07CisgICAgICAgIHJlc3VsdC5tb3ZlKHJlc3Vs
dC53aWR0aCgpICogbV9jb3ZlckFyZWFGb2N1c1ZlY3Rvci54KCkgKiBmb2N1c1ZlY3Rvck11bHRp
cGxpZXIsIHJlc3VsdC5oZWlnaHQoKSAqIG1fY292ZXJBcmVhRm9jdXNWZWN0b3IueSgpICogZm9j
dXNWZWN0b3JNdWx0aXBsaWVyKTsKKyAgICAgICAgcmVzdWx0LnVuaXRlKHZpc2libGVSZWN0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQuaW5mbGF0ZVgodmlzaWJsZVJlY3Qud2lkdGgo
KSAqIChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAgICAgICByZXN1bHQuaW5m
bGF0ZVkodmlzaWJsZVJlY3QuaGVpZ2h0KCkgKiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkg
LyAyKTsKKyAgICB9CisgICAgcmVzdWx0LmludGVyc2VjdChjb250ZW50c1JlY3QoKSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiBib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdl
VGlsZXMoKQogewogICAgIEludFJlY3QgY29udGVudHNSZWN0ID0gdGhpcy0+Y29udGVudHNSZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuaAppbmRleCA5ZDFhOTdhMWE5Y2Q2YjVkYTc4ZTAzYWI4MmQwOTU2ZDNiYjk2ZTMz
Li4yNmYyNzIwZTBhNTI4ZWUwMjUzMjg1ZDMwODBkYWRiZWU4YzIwNjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAg
LTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCi0jaW5j
bHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlRpbGUuaCIKQEAgLTY0
LDEyICs2NCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3Vi
bGUgZGVsYXkpOwogICAgIAogICAgIC8vIFRpbGVkIGFyZSBkcm9wcGVkIG91dHNpZGUgdGhlIGtl
ZXAgYXJlYSwgYW5kIGNyZWF0ZWQgZm9yIGNvdmVyIGFyZWEuIFRoZSB2YWx1ZXMgYSByZWxhdGl2
ZSB0byB0aGUgdmlld3BvcnQgc2l6ZS4KLSAgICB2b2lkIGdldEtlZXBBbmRDb3ZlckFyZWFNdWx0
aXBsaWVycyhGbG9hdFNpemUmIGtlZXBNdWx0aXBsaWVyLCBGbG9hdFNpemUmIGNvdmVyTXVsdGlw
bGllcikKKyAgICB2b2lkIGdldEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVycyhmbG9hdCYga2Vl
cE11bHRpcGxpZXIsIGZsb2F0JiBjb3Zlck11bHRpcGxpZXIpCiAgICAgewogICAgICAgICBrZWVw
TXVsdGlwbGllciA9IG1fa2VlcEFyZWFNdWx0aXBsaWVyOwogICAgICAgICBjb3Zlck11bHRpcGxp
ZXIgPSBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAgICAgfQotICAgIHZvaWQgc2V0S2VlcEFuZENv
dmVyQXJlYU11bHRpcGxpZXJzKGNvbnN0IEZsb2F0U2l6ZSYga2VlcE11bHRpcGxpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVyKTsgICAgCisgICAgdm9pZCBzZXRLZWVwQW5kQ292
ZXJBcmVhTXVsdGlwbGllcnMoZmxvYXQga2VlcE11bHRpcGxpZXIsIGZsb2F0IGNvdmVyTXVsdGlw
bGllcik7CisgICAgdm9pZCBzZXRDb3ZlckFyZWFGb2N1c1ZlY3Rvcihjb25zdCBGbG9hdFBvaW50
Jik7CiAKICAgICBJbnRSZWN0IG1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0Owog
ICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKQEAgLTg5
LDYgKzkwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbGVDcmVhdGlvblRpbWVyRmlyZWQoVGls
ZVRpbWVyKik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVUaWxlcygpOworICAgIEludFJlY3QgY2Fs
Y3VsYXRlS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpIGNvbnN0OworICAgIElu
dFJlY3QgY2FsY3VsYXRlQ292ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSBjb25z
dDsKICAgICAKICAgICB2b2lkIGNvbW1pdFNjYWxlQ2hhbmdlKCk7CiAKQEAgLTExNSw4ICsxMTgs
OSBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3RpbGVTaXplOwogICAgIGRvdWJsZSBtX3Rp
bGVDcmVhdGlvbkRlbGF5OwotICAgIEZsb2F0U2l6ZSBtX2tlZXBBcmVhTXVsdGlwbGllcjsKLSAg
ICBGbG9hdFNpemUgbV9jb3ZlckFyZWFNdWx0aXBsaWVyOworICAgIGZsb2F0IG1fa2VlcEFyZWFN
dWx0aXBsaWVyOworICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsKKyAgICBGbG9hdFBv
aW50IG1fY292ZXJBcmVhRm9jdXNWZWN0b3I7CiAgICAgCiAgICAgSW50UmVjdCBtX3ByZXZpb3Vz
VmlzaWJsZVJlY3Q7CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCmluZGV4IDIzMTQ3YzA5MDQ4NTY0MzE5M2QzZTUzYWMxNjlmZjc1ZjhhNzU3NGUu
LjM3NzdiM2VkYzEyZWRlNmU0MTFkYWRjOGE4ODU5Zjc0NjVmYzJlMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKQEAgLTEyMjIsMjEgKzEyMjIsMjMgQEAgdm9pZCBRV2ViUGFnZVByaXZh
dGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KFFEeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVu
dCogZXYKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxLT5tYWluRnJhbWUoKSk7CiAgICAgICAgIGlmICghZnJhbWUtPnRpbGVkQmFja2luZ1N0
b3JlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZsb2F0U2l6ZSBrZWVwTXVsdGlw
bGllcjsKLSAgICAgICAgRmxvYXRTaXplIGNvdmVyTXVsdGlwbGllcjsKKyAgICAgICAgZmxvYXQg
a2VlcE11bHRpcGxpZXI7CisgICAgICAgIGZsb2F0IGNvdmVyTXVsdGlwbGllcjsKICAgICAgICAg
ZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmdldEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVy
cyhrZWVwTXVsdGlwbGllciwgY292ZXJNdWx0aXBsaWVyKTsKICAgICAgICAgUVNpemVGIHFTaXpl
ID0gcS0+cHJvcGVydHkoIl9xX1RpbGVkQmFja2luZ1N0b3JlS2VlcEFyZWFNdWx0aXBsaWVyIiku
dG9TaXplRigpOwotICAgICAgICBrZWVwTXVsdGlwbGllciA9IEZsb2F0U2l6ZShxU2l6ZS53aWR0
aCgpLCBxU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIC8vIE11bHRpcGxpZXJzIHdlcmUgY2hhbmdl
ZCB0byBvbmx5IHVzZSBhIGZsb2F0LCBrZWVwIG9ubHkgdGhlIGhlaWdodCBwYXJ0LgorICAgICAg
ICBrZWVwTXVsdGlwbGllciA9IHFTaXplLmhlaWdodCgpOwogICAgICAgICBmcmFtZS0+dGlsZWRC
YWNraW5nU3RvcmUoKS0+c2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJzKGtlZXBNdWx0aXBs
aWVyLCBjb3Zlck11bHRpcGxpZXIpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnByb3BlcnR5TmFt
ZSgpID09ICJfcV9UaWxlZEJhY2tpbmdTdG9yZUNvdmVyQXJlYU11bHRpcGxpZXIiKSB7CiAgICAg
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocS0+bWFp
bkZyYW1lKCkpOwogICAgICAgICBpZiAoIWZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBGbG9hdFNpemUga2VlcE11bHRpcGxpZXI7Ci0gICAg
ICAgIEZsb2F0U2l6ZSBjb3Zlck11bHRpcGxpZXI7CisgICAgICAgIGZsb2F0IGtlZXBNdWx0aXBs
aWVyOworICAgICAgICBmbG9hdCBjb3Zlck11bHRpcGxpZXI7CiAgICAgICAgIGZyYW1lLT50aWxl
ZEJhY2tpbmdTdG9yZSgpLT5nZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoa2VlcE11bHRp
cGxpZXIsIGNvdmVyTXVsdGlwbGllcik7CiAgICAgICAgIFFTaXplRiBxU2l6ZSA9IHEtPnByb3Bl
cnR5KCJfcV9UaWxlZEJhY2tpbmdTdG9yZUNvdmVyQXJlYU11bHRpcGxpZXIiKS50b1NpemVGKCk7
Ci0gICAgICAgIGNvdmVyTXVsdGlwbGllciA9IEZsb2F0U2l6ZShxU2l6ZS53aWR0aCgpLCBxU2l6
ZS5oZWlnaHQoKSk7CisgICAgICAgIC8vIE11bHRpcGxpZXJzIHdlcmUgY2hhbmdlZCB0byBvbmx5
IHVzZSBhIGZsb2F0LCBrZWVwIG9ubHkgdGhlIGhlaWdodCBwYXJ0LgorICAgICAgICBjb3Zlck11
bHRpcGxpZXIgPSBxU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0
b3JlKCktPnNldEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVycyhrZWVwTXVsdGlwbGllciwgY292
ZXJNdWx0aXBsaWVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGM0YzliNzUy
NDdhYjQzOGM0YTE4YTQyODg3MzFmM2JlYTBiNDljMy4uYzE4NjU1ZTlmZDk2ZDNmY2YyYzdiNmRk
OGNlNjQ5NjY2MTY2Y2FlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0w
OS0wNSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisg
ICAgICAgIFtRdF1bV0syXSBNYWtlIFRpbGVkRHJhd2luZ0FyZWEgcmVxdWVzdCB0aWxlcyBvbmx5
IGluIHRoZSBkaXJlY3Rpb24gdGhlIHZpZXdwb3J0IGlzIHBhbm5lZCB0by4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjA2CisKKyAgICAgICAgVGls
ZWRCYWNraW5nU3RvcmUgcHJldmlvdXNseSB1c2VkIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGhvcml6
b250YWwgYW5kIHZlcnRpYWwgbXVsdGlwbGljYXRpb24KKyAgICAgICAgdG8gY2FsY3VsYXRlIHRo
ZSBjb3ZlciBhcmVhLiAKKyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGlzIG1lY2hhbmlz
bSwgdXNlZCB0byBnaXZlIGEgYmlnZ2VyIHBhbm5pbmcgcmFuZ2UgdG8gdmVydGljYWwgcGFubmlu
ZywKKyAgICAgICAgd2l0aCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHRoZSBtb3Rpb24gdmVjdG9y
IG9mIHRoZSB2aWV3cG9ydCB0byByZXF1ZXN0IHRpbGVzIGFoZWFkIGluc3RlYWQuCisgICAgICAg
IFRoaXMgYWxsb3dzIHRvIGVjb25vbWl6ZSBvbiByZW5kZXJpbmcgcmVzb3VyY2VzIGFzIHRpbGVz
IHdvbid0IGJlIHJlcXVlc3RlZCBiZXNpZGUgdGhlIHRyYWplY3RvcnkKKyAgICAgICAgb2YgdGhl
IHZpZXdwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQpOgorCiAyMDExLTA4LTI1ICBB
ZGVtYXIgZGUgU291emEgUmVpcyBKci4gIDxhZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQucHJvIGZpeCBmb3Igd2hlbiBidWlsZGluZyBpbnNp
ZGUgUXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAzNmVjYzI1NmNiMjgyMTcwZmVmMDBjYzQ1ODdmMWUyNzZlZTg4
MjEwLi41NjJkZTdjZTAwZDVmOTcwMzJkNDUzMWU1OTZjMTkyMGEwMmU3YmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDktMDUgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHlu
LnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gTWFrZSBUaWxlZERyYXdp
bmdBcmVhIHJlcXVlc3QgdGlsZXMgb25seSBpbiB0aGUgZGlyZWN0aW9uIHRoZSB2aWV3cG9ydCBp
cyBwYW5uZWQgdG8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzYwNgorCisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlIHByZXZpb3VzbHkgdXNlZCBk
aWZmZXJlbnQgdmFsdWVzIGZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWFsIG11bHRpcGxpY2F0aW9u
CisgICAgICAgIHRvIGNhbGN1bGF0ZSB0aGUgY292ZXIgYXJlYS4gCisgICAgICAgIFRoaXMgcGF0
Y2ggcmVwbGFjZXMgdGhpcyBtZWNoYW5pc20sIHVzZWQgdG8gZ2l2ZSBhIGJpZ2dlciBwYW5uaW5n
IHJhbmdlIHRvIHZlcnRpY2FsIHBhbm5pbmcsCisgICAgICAgIHdpdGggdGhlIHBvc3NpYmlsaXR5
IHRvIHVzZSB0aGUgbW90aW9uIHZlY3RvciBvZiB0aGUgdmlld3BvcnQgdG8gcmVxdWVzdCB0aWxl
cyBhaGVhZCBpbnN0ZWFkLgorICAgICAgICBUaGlzIGFsbG93cyB0byBlY29ub21pemUgb24gcmVu
ZGVyaW5nIHJlc291cmNlcyBhcyB0aWxlcyB3b24ndCBiZSByZXF1ZXN0ZWQgYmVzaWRlIHRoZSB0
cmFqZWN0b3J5CisgICAgICAgIG9mIHRoZSB2aWV3cG9ydC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0
ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6
Ol9xX3ZpZXdwb3J0TW90aW9uVmVjdG9yQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYVByb3h5OjpzZXRWaXNpYmxlQ29u
dGVudFJlY3RNb3Rpb25WZWN0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdB
cmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBh
bkdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvcXRvdWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6
c2V0VmlzaWJsZUNvbnRlbnRSZWN0TW90aW9uVmVjdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvcXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpzZXRWaXNpYmxlQ29u
dGVudFJlY3RNb3Rpb25WZWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWRE
cmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkRHJhd2luZ0FyZWE6OnNldFZp
c2libGVDb250ZW50UmVjdE1vdGlvblZlY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1RpbGVkRHJhd2luZ0FyZWEuaDoKKwogMjAxMS0wOS0wMSAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gVGlsZWRCYWNraW5n
U3RvcmU6IEltcG9ydCB0aGUgcmVzaXplRWRnZVRpbGVzIGxvZ2ljIGZyb20gVGlsZWREcmF3aW5k
QXJlYVByb3h5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2Vidmlldy5jcHAKaW5kZXggMzNiZDI2N2JlNTA5MGY3YWRjZWI1MzJlYTJkNTIzZDliMTAzNjli
MS4uZmUxYTE0YjU3NzI4MGZmMzI2MTY5Y2FjN2FlYWIxMTk0ZmM5NWQ2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCkBAIC00MCw2
ICs0MCw3IEBAIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpRVG91Y2hXZWJWaWV3UHJpdmF0ZShRVG91
Y2hXZWJWaWV3KiBxKQogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7CiAKICAg
ICBRT2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKHZpZXdwb3J0VXBk
YXRlUmVxdWVzdGVkKCkpLCBxLCBTTE9UKF9xX3ZpZXdwb3J0VXBkYXRlZCgpKSk7CisgICAgUU9i
amVjdDo6Y29ubmVjdCgmaW50ZXJhY3Rpb25FbmdpbmUsIFNJR05BTCh2aWV3cG9ydE1vdGlvblZl
Y3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSwgcSwgU0xPVChfcV92aWV3cG9ydE1vdGlvblZl
Y3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSk7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmlld1By
aXZhdGU6OmxvYWREaWRDb21taXQoKQpAQCAtNTQsNiArNTUsMTEgQEAgdm9pZCBRVG91Y2hXZWJW
aWV3UHJpdmF0ZTo6X3Ffdmlld3BvcnRVcGRhdGVkKCkKICAgICBwYWdlLnNldFZpc2libGVDb250
ZW50UmVjdEFuZFNjYWxlKHZpc2libGVSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGUsIHNjYWxlKTsK
IH0KIAordm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6X3Ffdmlld3BvcnRNb3Rpb25WZWN0b3JD
aGFuZ2VkKGNvbnN0IFFQb2ludEYmIG1vdGlvblZlY3RvcikKK3sKKyAgICBwYWdlLnNldFZpc2li
bGVDb250ZW50UmVjdE1vdGlvblZlY3Rvcihtb3Rpb25WZWN0b3IpOworfQorCiB2b2lkIFFUb3Vj
aFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCkKIHsKICAgICBRU2l6
ZSBhdmFpbGFibGVTaXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaAppbmRleCBi
ZTZkNmY1ZDRiOGMwYjU3ZmM1NjM1NmJjNTEyYjZjOTJhMGE5Mjg1Li44YTg4ZGExODJkMmQ0YzNj
MmJjYmY0YWU0ZmY2NmUyZGQ1MTJmNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaApAQCAtNDgsNiArNDgsNyBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV92aWV3cG9ydFVwZGF0ZWQo
KSk7CisgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV92aWV3cG9ydE1vdGlvblZlY3RvckNo
YW5nZWQoY29uc3QgUVBvaW50RiYpKTsKIAogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlRvdWNo
Vmlld0ludGVyZmFjZTsKICAgICBRVG91Y2hXZWJWaWV3UHJpdmF0ZSAqZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCmluZGV4IDZmMjE1
MmMwZTU5YWE4YjM1YTc0Y2Y0OTVhNjk4NGU1ZDFiOTRjNjAuLjI1ZTI4YzhlMjNkZjdkOWQwYzcw
MGU3Zjc2OGUyYjdmYjVhMDA5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaApAQCAtMzYsNiArMzYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGxvYWREaWRDb21taXQoKTsKICAgICB2b2lkIF9xX3ZpZXdwb3J0VXBkYXRlZCgpOwor
ICAgIHZvaWQgX3Ffdmlld3BvcnRNb3Rpb25WZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKTsK
ICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKIAogICAgIHZvaWQgc2V0Vmll
d3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNw
cAppbmRleCA0NWUzZGZjYzE0MDc5YjIxMTkwYWUxMzNlYzYyMTAxZmVkZGVjZDlmLi4yMzY4ODdl
MTBjNzVhMzFlZDA1NmUwZTQ1YjQ5NzMwNTc5ZTY0Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNjEsNiArNjEsMTEg
QEAgdm9pZCBUaWxlZERyYXdpbmdBcmVhUHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QKICAgICBwYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6RHJhd2luZ0FyZWE6OlNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKHZpc2li
bGVDb250ZW50UmVjdCwgc2NhbGUpLCBwYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBUaWxl
ZERyYXdpbmdBcmVhUHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdE1vdGlvblZlY3Rvcihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBtb3Rpb25WZWN0b3IpCit7CisgICAgcGFnZSgpLT5wcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpTZXRWaXNpYmxlQ29udGVudFJlY3RN
b3Rpb25WZWN0b3IobW90aW9uVmVjdG9yKSwgcGFnZSgpLT5wYWdlSUQoKSk7Cit9CisKIHZvaWQg
VGlsZWREcmF3aW5nQXJlYVByb3h5OjpyZW5kZXJOZXh0RnJhbWUoKQogewogICAgIHBhZ2UoKS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6UmVuZGVyTmV4dEZyYW1lKCks
IHBhZ2UoKS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1RpbGVkRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RpbGVk
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGE0MjU3NDVmMTEyZTIzM2IzYmZmNDI3NjY1MWQxNmQz
NTAxNjg3MjAuLmQ0OGU3Njg0NzliYzIzOWQ5Nzc1ZmYxZjhjYjZjMDAxZTY1YzY1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmgKQEAg
LTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRpbGVkRHJhd2luZ0FyZWFQcm94
eSgpOwogCiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgZmxvYXQpOworICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0TW90
aW9uVmVjdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHJlbmRlck5l
eHRGcmFtZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwCmluZGV4IGM3ZjVhMmYyNzliNDU2OTcxZjBhNWNlMmE3NjIxMDJkMjdiYTdlMDQuLjA0
MDVmY2VlNTAxNThlYWExMjk3OWEyMDY2MzlmZmQ2NjUzN2YwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5j
cHAKQEAgLTE2Miw2ICsxNjIsOCBAQCB2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBh
bkdlc3R1cmVSZXF1ZXN0VXBkYXRlKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdAogICAgIFFQb2lu
dEYgZGVzdEluVmlld3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2NvbnRl
bnQsIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkpKTsK
IAogICAgIG1fY29udGVudC0+c2V0UG9zKGRlc3RJblZpZXdwb3J0Q29vcmRzKTsKKyAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVtaXR0ZWQgYmVmb3JlIHZpZXdwb3J0VXBkYXRlUmVxdWVz
dGVkIHNvIHRoYXQgdGhlIHdlYiBwcm9jZXNzIGtub3dzIHdoZXJlIHRvIGxvb2sgZm9yIHRpbGVz
LgorICAgIGVtaXQgdmlld3BvcnRNb3Rpb25WZWN0b3JDaGFuZ2VkKFFQb2ludEYoLWRlbHRhWCwg
LWRlbHRhWSkpOwogCiAgICAgcWludDY0IGVsYXBzZWRNcyA9IG1fbGFzdFBhblVwZGF0ZS5yZXN0
YXJ0KCk7CiAgICAgaWYgKCFlbGFwc2VkTXMpCkBAIC0xODEsNiArMTgzLDcgQEAgdm9pZCBWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQoKQogICAgIFZpZXdwb3J0VXBk
YXRlR3VhcmQgZ3VhcmQodGhpcyk7CiAgICAgYW5pbWF0ZUNvbnRlbnRJbnRvQm91bmRhcmllc0lm
TmVlZGVkKCk7CiAgICAgbV91cGRhdGVQb3NUaW1lci5zdGFydCgxNiwgdGhpcyk7CisgICAgLy8g
RklYTUU6IGVtaXQgdmlld3BvcnRNb3Rpb25WZWN0b3JDaGFuZ2VkKFFQb2ludEYoKSkgd2hlbiB0
aGUgcGFuIHRocm93IGFuaW1hdGlvbiBlbmRzIGFuZCB0aGUgcGFnZSBzdG9wcyBtb3ZpbmcuCiB9
CiAKIHZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgp
CkBAIC0xOTMsNiArMTk2LDkgQEAgdm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5j
aEdlc3R1cmVTdGFydGVkKCkKICAgICBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNT
Y2FsZWRDb250ZW50OwogICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVk
Q29udGVudDsKICAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKwor
ICAgIC8vIFJlc2V0IHRoZSB0aWxpbmcgbG9vay1haGVhZCB2ZWN0b3Igc28gdGhhdCB0aWxlcyBh
bGwgYXJvdW5kIHRoZSB2aWV3cG9ydCB3aWxsIGJlIHJlcXVlc3RlZCBvbiBwaW5jaC1lbmQuCisg
ICAgZW1pdCB2aWV3cG9ydE1vdGlvblZlY3RvckNoYW5nZWQoUVBvaW50RigpKTsKIH0KIAogdm9p
ZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNv
bnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxT
Y2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oCmluZGV4IDZhZWM5MTBmNmRjZWM0NzNmNzA5ODUzOTQ3
MDdlOWY5Zjc3NjY1YmMuLmIyOGZjYzFhMGFlNGFjNWUyNmE4MWUyOTgwNDFlYjA2NGZkOTA2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKIFFfU0lHTkFMUzoK
ICAgICB2b2lkIHZpZXdwb3J0VXBkYXRlUmVxdWVzdGVkKCk7CisgICAgdm9pZCB2aWV3cG9ydE1v
dGlvblZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYgbW90aW9uVmVjdG9yKTsKIAogcHJpdmF0
ZSBRX1NMT1RTOgogICAgIC8vIFJlc3BvbmQgdG8gY2hhbmdlcyBvZiBjb250ZW50IHRoYXQgYXJl
IG5vdCBkcml2ZW4gYnkgdXMsIGxpa2UgdGhlIHBhZ2UgcmVzaXppbmcgaXRzZWxmLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAppbmRl
eCBkYTg0ZGIwZjQ2Y2Q2MTI1NGEwODM0NDlkOTdlYTQxMmMyNzk5Y2NlLi4zOTU4YzRkNjcwOTRh
NmYzMTE4NWI5YmExZjlkMjYzNGMwM2UxMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcApAQCAtODYsNiArODYsMTEgQEAgdm9p
ZCBRVG91Y2hXZWJQYWdlUHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0
IFFSZWN0RiYgdmlzaWJsZUNvbnQKICAgICBtX3dlYlBhZ2VQcm94eS0+c2V0Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCk7CiB9CiAKK3ZvaWQgUVRvdWNo
V2ViUGFnZVByb3h5OjpzZXRWaXNpYmxlQ29udGVudFJlY3RNb3Rpb25WZWN0b3IoY29uc3QgUVBv
aW50RiYgbW90aW9uVmVjdG9yKQoreworICAgIGRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250
ZW50UmVjdE1vdGlvblZlY3Rvcihtb3Rpb25WZWN0b3IpOworfQorCiB2b2lkIFFUb3VjaFdlYlBh
Z2VQcm94eTo6c2V0UmVzaXplc1RvQ29udGVudHNVc2luZ0xheW91dFNpemUoY29uc3QgUVNpemUm
IHRhcmdldExheW91dFNpemUpCiB7CiAgICAgbV93ZWJQYWdlUHJveHktPnNldFJlc2l6ZXNUb0Nv
bnRlbnRzVXNpbmdMYXlvdXRTaXplKHRhcmdldExheW91dFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCmluZGV4IDc4MzFkYmZiZWYz
YjMwYTk4N2JkMjllNmYzMmU2OGY5ZDc4NDgzNTUuLjQxN2RjYTUwYmQxNGVlYTJmMjI4ZWRjYjRl
YmVlOTAwOTYwM2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVFdmVudChRRXZlbnQqKTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRS
ZWN0QW5kU2NhbGUoY29uc3QgUVJlY3RGJiwgZmxvYXQpOworICAgIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRSZWN0TW90aW9uVmVjdG9yKGNvbnN0IFFQb2ludEYmKTsKICAgICB2b2lkIHNldFJlc2l6
ZXNUb0NvbnRlbnRzVXNpbmdMYXlvdXRTaXplKGNvbnN0IFFTaXplJiB0YXJnZXRMYXlvdXRTaXpl
KTsKICAgICB2b2lkIGZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBRUG9pbnQmKTsKICAg
ICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA0YTg1MjExMjg2ZWYyMGRlNWUyNTc1OWUxMGE4
YjA3NGY3NTQ4MDBjLi45ZDA4ZTllZmNkNTgwNzQxYzgzOTY3NTNmODMxZDA2ZjZmYjQ5NWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBEcmF3aW5nQXJlYV9oCiAKICNpbmNsdWRlICJEcmF3
aW5nQXJlYUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RNb3Rpb25WZWN0b3Io
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0IHNjYWxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZy
YW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRha2VTbmFwc2hvdChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB0YXJnZXRTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50c1JlY3Qp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IDM2MzU2YWQwM2ViNDc1Y2M1ODk2YmFiNzJhYTc3
ZTQwNzFmNDcxZjAuLmM3OWM0YzE3YjExMmJhZTUyYjE4OTY3OTlhZjcxMGU2Zjg1ZThkYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0Fy
ZWEgewogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFNldFNpemUoV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSkKICAgICBTZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShX
ZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgZmxvYXQgc2NhbGUpCisgICAgU2V0
VmlzaWJsZUNvbnRlbnRSZWN0TW90aW9uVmVjdG9yKFdlYkNvcmU6OkZsb2F0UG9pbnQgbW90aW9u
VmVjdG9yKQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6
OkludFNpemUgc2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjb250ZW50c1JlY3QpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZERyYXdpbmdB
cmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZERyYXdpbmdB
cmVhLmNwcAppbmRleCAxODM1MjQ2ODViYmU3YjUxYjhmNzgyODIyZWJjNTdmNjNiMjRkMjFjLi5h
MzdiNTIwMTQxNzk0MzQ3OWJhNTc2MjEyMzdjNGJmMWUxNTM1Y2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3BwCkBA
IC04OSw2ICs4OSwxMSBAQCB2b2lkIFRpbGVkRHJhd2luZ0FyZWE6OnNldFZpc2libGVDb250ZW50
UmVjdEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpcwogICAgICAgICBtX21haW5C
YWNraW5nU3RvcmUtPmFkanVzdFZpc2libGVSZWN0KCk7CiB9CiAKK3ZvaWQgVGlsZWREcmF3aW5n
QXJlYTo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0TW90aW9uVmVjdG9yKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIG1vdGlvblZlY3RvcikKK3sKKyAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENv
dmVyQXJlYUZvY3VzVmVjdG9yKG1vdGlvblZlY3Rvcik7Cit9CisKIHZvaWQgVGlsZWREcmF3aW5n
QXJlYTo6cmVuZGVyTmV4dEZyYW1lKCkKIHsKICAgICBtX2lzV2FpdGluZ0ZvclVJUHJvY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Rp
bGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxl
ZERyYXdpbmdBcmVhLmgKaW5kZXggZDBjMmJlZTMyNzNiMzg2Nzk4OWFlNDI2MTQ4YzZkZTdjMTIw
MTczNS4uZGY2OGY5Y2Q2NGQyMjhhMjhmOWIxNjBiMjUxMzUyOGE1MzAzNDMzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5o
CkBAIC01NSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ29yZUlQQyBtZXNzYWdlIGhhbmRs
ZXJzLgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZp
ZXdTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlz
aWJsZUNvbnRlbnRSZWN0TW90aW9uVmVjdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHN1
c3BlbmRQYWludGluZygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQYWludGluZygpOwo=
</data>
<flag name="review"
          id="102748"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>