<?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>74720</bug_id>
          
          <creation_ts>2011-12-16 08:45:36 -0800</creation_ts>
          <short_desc>[Qt] Handle the layers visible rect calculation on the web process.</short_desc>
          <delta_ts>2012-01-20 01:28:06 -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>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>rafael.lobo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522761</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-16 08:45:36 -0800</bug_when>
    <thetext>[Qt] Handle the layers visible rect calculation on the web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522762</commentid>
    <comment_count>1</comment_count>
      <attachid>119614</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-16 08:47:09 -0800</bug_when>
    <thetext>Created attachment 119614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522763</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-16 08:49:38 -0800</bug_when>
    <thetext>This patch works but makes the desktop view not show any content unless we resize the view. This is caused by the layertreehost not receiving the first visible rect because AC had not been completely entered yet. I&apos;ll have to fix this after Christmas before pushing any of this.

It would work previously since painting would update the visible rect later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522793</commentid>
    <comment_count>3</comment_count>
      <attachid>119614</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-16 09:49:03 -0800</bug_when>
    <thetext>Comment on attachment 119614
Patch

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

Awesome.

&gt; Source/WebCore/platform/graphics/texmap/LayerTransform.cpp:80
&gt; +        .translate3d(originX + m_position.x(), originY + m_position.y(), m_anchorPoint.z() )

Space before parentheses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535601</commentid>
    <comment_count>4</comment_count>
      <attachid>122414</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-01-13 05:26:45 -0800</bug_when>
    <thetext>Created attachment 122414
Patch

Resubmitting after rebase and addressing comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535628</commentid>
    <comment_count>5</comment_count>
      <attachid>122414</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-13 06:15:05 -0800</bug_when>
    <thetext>Comment on attachment 122414
Patch

Wait... I think you uploaded the wrong patch to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535767</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-13 10:26:11 -0800</bug_when>
    <thetext>btw if you&apos;re adding files for TextureMapper, don&apos;t forget to add them to the EFL/GTK builds (just grep for TextureMapperNode.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537836</commentid>
    <comment_count>7</comment_count>
      <attachid>122920</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-01-18 06:55:06 -0800</bug_when>
    <thetext>Created attachment 122920
Patch

Updated patch after rebasing and splitting the LayerTransform part into bug #76291.
Another patch will follow up to do a projection of the visible rect instead of mapping it like collectVisibleContentsRects was doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537838</commentid>
    <comment_count>8</comment_count>
      <attachid>122920</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-18 07:05:18 -0800</bug_when>
    <thetext>Comment on attachment 122920
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:335
&gt; +    webPageProxy-&gt;drawingArea()-&gt;setVisibleContentsRectAndScale(IntRect(IntPoint(), viewportSize), 1.0);

You don&apos;t need the .0 (coding style)

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:109
&gt; +        child-&gt;setVisibleContentRectAndScale(m_visiblePageContentsRect, m_contentsScale);

I doubt this compiles... you named the variable differently in the header :)

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:119
&gt; +    toWebGraphicsLayer(layer)-&gt;setVisibleContentRectAndScale(m_visiblePageContentsRect, m_contentsScale);

Instead of doing all this propagation, can we add a function to LayerTreeTileClient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537885</commentid>
    <comment_count>9</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-01-18 08:28:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I doubt this compiles... you named the variable differently in the header :)
Oh sorry, last minute fix.

&gt; Instead of doing all this propagation, can we add a function to LayerTreeTileClient?
Humm we would still need a method to trigger the visible rect update that would then call the getter on the interface from each layer. The root cause is that layers can be created and added to the tree without the tree host knowing about them, and this method would have to be called instead of the setter in set/addChildren. Personally I prefer a straight setter for the rect and scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537902</commentid>
    <comment_count>10</comment_count>
      <attachid>122920</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-18 09:05:02 -0800</bug_when>
    <thetext>Comment on attachment 122920
Patch

Please fix variable name (I prefer m_pageVisibleRect or m_visibleRectInPageCoordinates) and maybe merge in patch 76541 before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538697</commentid>
    <comment_count>11</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-01-19 07:38:44 -0800</bug_when>
    <thetext>Committed r105413: &lt;http://trac.webkit.org/changeset/105413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539052</commentid>
    <comment_count>12</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-19 14:46:38 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r105413: &lt;http://trac.webkit.org/changeset/105413&gt;

It seems that this patch has broken something. I was running a layout test with: MiniBrowser --desktop &apos;file:///opt/git/webkit/LayoutTests/editing/selection/regional-indicators.html&apos;, and it was visible until the patch before this one (I have a release build). When I&apos;ve applied this, then MiniBrowser usually loads but shows a blank page instead, I&apos;m not sure what is going on. Even for &quot;http://google.com&quot; I still get nothing there.

Running MiniBrowser without --desktop, I still shows a blank page, but it seems to show up when I refresh it. Any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539344</commentid>
    <comment_count>13</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-01-20 01:28:06 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Running MiniBrowser without --desktop, I still shows a blank page, but it seems to show up when I refresh it. Any ideas?

Yep sorry about that, I should have waited to push this patch with the one in bug #76296 which fixes this issue. I&apos;ll try to get it in today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119614</attachid>
            <date>2011-12-16 08:47:09 -0800</date>
            <delta_ts>2012-01-13 05:26:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74720-20111216174619.patch</filename>
            <type>text/plain</type>
            <size>45768</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ4YjY3N2Q0ZDBkMjA3
YjlhODUyZTMzMjE0MDhhOTE5MTNlNWU0Ny4uZGEzMTc4YmIxYTcwZGRiODQ3NThmM2ZkMDdmNTMw
YTY0ZDVmYThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTE2ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBIYW5kbGUgdGhlIGxheWVycyB2aXNpYmxlIHJlY3QgY2FsY3VsYXRpb24gb24gdGhlIHdlYiBw
cm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGV4dHJhY3RzIHRoZSBsYXllciB0cmFuc2Zvcm0gbG9naWMgZnJvbSBUZXh0dXJlTWFwcGVy
Tm9kZSB0byBhCisgICAgICAgIExheWVyVHJhbnNmb3JtIGNsYXNzIGFuZCByZW1vdmUgaXRzIHZp
c2libGUgcmVjdCBmdW5jdGlvbmFsaXRpZXMuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9MYXllclRyYW5zZm9ybS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUcmFuc2Zvcm06OkxheWVyVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVHJhbnNmb3JtOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRyYW5zZm9ybTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRyYW5zZm9ybTo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUcmFu
c2Zvcm06OnNldEZsYXR0ZW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUcmFuc2Zvcm06
OnNldExvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVHJhbnNmb3JtOjpz
ZXRDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRyYW5zZm9ybTo6
Y29tYmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUcmFuc2Zvcm06OmNvbWJpbmVUcmFu
c2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVHJhbnNmb3JtOjpjb21iaW5lZEZvckNo
aWxkcmVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvTGF5ZXJUcmFuc2Zv
cm0uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpzZXRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVB
bGxUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpjb21w
dXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OnBhaW50U2Vs
Zik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcGFyZUdyYXBoaWNz
TGF5ZXJzWlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpwYWlu
dFNlbGZBbmRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6
cGFpbnRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpw
YWludFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6c3lu
Y0NvbXBvc2l0aW5nU3RhdGVTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJO
b2RlOjphcHBseVRyYW5zZm9ybUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmg6CisKIDIwMTEtMTItMTUgIEpvY2VseW4gVHVy
Y290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBUZXh0dXJlTWFw
cGVyOiBTaW1wbGlmeSB0cmFuc2Zvcm0gbWFuaXB1bGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0YTJj
M2JjZjVhNGRlMmFjYWU1OTA0YTc1YzRkNjhiYjQ0OWJhNzc4Li43NjNiN2RmOTA1ZGI1YWRkZjUw
Y2I2YzZlMjE1YjFkYzYwN2ZlNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEt
MTItMTYgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKwor
ICAgICAgICBbUXRdIEhhbmRsZSB0aGUgbGF5ZXJzIHZpc2libGUgcmVjdCBjYWxjdWxhdGlvbiBv
biB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBsYXllcnMgbm93IGdldCB0aGVpciB2aXNpYmxlIHJlY3Qgb24gdGhlIHdl
YiBwcm9jZXNzIHRocm91Z2ggdGhlCisgICAgICAgIHJvb3QgbGF5ZXIgd2hlbiB0aGUgVUkgcHJv
Y2VzcyBjYWxsIHNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlLAorICAgICAgICBwcmV2aW91
c2x5IG9ubHkgdXNlZCBmb3IgdGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgbGF5ZXIuCisgICAg
ICAgIFRoZSByZWN0IGlzIHRoZW4gY2FycmllZCBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHRyZWUg
d2hpY2ggYXBwbHkgaXQgdGhlIGludmVyc2UKKyAgICAgICAgb2YgdGhlaXIgdHJhbnNmb3JtIGJl
Zm9yZSBoYW5kaW5nIGl0IHRvIHRoZWlyIHRpbGVkIGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAg
VGhpcyBlbnN1cmVzIHRoYXQgbmV3IGxheWVycyBnZXQgYSBwcm9wZXIgdmlzaWJsZSByZWN0IHJp
Z2h0IG9uIGNyZWF0aW9uLAorICAgICAgICBhbmQgYWxzbyB0aGF0IHNpbXVsdGFuZW91cyB2aXNp
YmxlIHJlY3QgYW5kIHNjYWxlIGNoYW5nZXMgYXJlIGFwcGxpZWQgc3luY2hyb25vdXNseS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZURlc2t0b3ApOgorICAgICAgICAoUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVUb3VjaCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6dXBkYXRlRGVza3RvcFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6dXBkYXRlVG91Y2hWaWV3cG9ydFNpemUpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgdGhlIHZpc2li
bGUgcmVjdCBpcyB1cGRhdGVkIGZvciB0aGUgZGVza3RvcCB2aWV3IGFzIHdlbGwuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJU
cmVlSG9zdFByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6
OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hp
bGRBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxk
QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxv
dyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6
CisKIDIwMTEtMTItMTYgIE1pY2hhZWwgQnJ1bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0Bub2tpYS5j
b20+CiAKICAgICAgICAgW3F0XVt3azJdIFZpZXdwb3J0IGluZm8gcGFuZWwgc2hvd3Mgd3Jvbmcg
Y3VycmVudCBzY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMjljMzA4OGQwYWE1NjRiOWNkZjViMDQwNTIw
NWY5YTNjNWQxY2ZhZS4uMDM2NTNhYjBhYzVkNDdhMmMxNzk1NzIzMjFjMTM2MThkOWQ5MTc4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC0zODc5LDEyICszODc5LDE0IEBAIGNvbnRhaW5zKENPTkZJRywgdGV4
bWFwKSB7CiAgICAgSEVBREVSUyArPSBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1Rl
eHR1cmVNYXBwZXJRdC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvTGF5ZXJUcmFuc2Zvcm0uaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlck5vZGUuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCiAKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvVGV4dHVyZU1hcHBlclF0LmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9MYXllclRyYW5zZm9ybS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvTGF5ZXJUcmFuc2Zvcm0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0xheWVyVHJhbnNm
b3JtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYmE3NGE5ZDIyYjBkYmY3NmJlNzUwOTkzMDFhOTIzOTY4NWZm
ODZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0xheWVyVHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxheWVyVHJhbnNmb3JtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGF5ZXJUcmFuc2Zv
cm06OkxheWVyVHJhbnNmb3JtKCkKKzogbV9mbGF0dGVuaW5nKGZhbHNlKQorLCBtX2RpcnR5KGZh
bHNlKQoreworfQorCit2b2lkIExheWVyVHJhbnNmb3JtOjpzZXRQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgbV9k
aXJ0eSA9IHRydWU7Cit9CisKK3ZvaWQgTGF5ZXJUcmFuc2Zvcm06OnNldFNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQoreworICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9kaXJ0eSA9IHRydWU7
Cit9CisKK3ZvaWQgTGF5ZXJUcmFuc2Zvcm06OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9p
bnQzRCYgYW5jaG9yUG9pbnQpCit7CisgICAgbV9hbmNob3JQb2ludCA9IGFuY2hvclBvaW50Owor
ICAgIG1fZGlydHkgPSB0cnVlOworfQorCit2b2lkIExheWVyVHJhbnNmb3JtOjpzZXRGbGF0dGVu
aW5nKGJvb2wgZmxhdHRlbmluZykKK3sKKyAgICBtX2ZsYXR0ZW5pbmcgPSBmbGF0dGVuaW5nOwor
ICAgIG1fZGlydHkgPSB0cnVlOworfQorCit2b2lkIExheWVyVHJhbnNmb3JtOjpzZXRMb2NhbFRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIG1f
bG9jYWwgPSB0cmFuc2Zvcm07CisgICAgbV9kaXJ0eSA9IHRydWU7Cit9CisKK3ZvaWQgTGF5ZXJU
cmFuc2Zvcm06OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0pCit7CisgICAgbV9jaGlsZHJlbiA9IHRyYW5zZm9ybTsKKyAgICBtX2RpcnR5
ID0gdHJ1ZTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggTGF5ZXJUcmFuc2Zvcm06OmNvbWJp
bmVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fZGlydHkpOworICAgIHJldHVybiBtX2NvbWJp
bmVkOworfQorCit2b2lkIExheWVyVHJhbnNmb3JtOjpjb21iaW5lVHJhbnNmb3JtcyhMYXllclRy
YW5zZm9ybSogcGFyZW50TGF5ZXJUcmFuc2Zvcm0pCit7CisgICAgbV9jb21iaW5lZCA9IHBhcmVu
dExheWVyVHJhbnNmb3JtID8gcGFyZW50TGF5ZXJUcmFuc2Zvcm0tPmNvbWJpbmVkRm9yQ2hpbGRy
ZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisKKyAgICBmbG9hdCBvcmlnaW5YID0gbV9h
bmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKTsKKyAgICBmbG9hdCBvcmlnaW5ZID0gbV9h
bmNob3JQb2ludC55KCkgKiBtX3NpemUuaGVpZ2h0KCk7CisgICAgbV9jb21iaW5lZAorICAgICAg
ICAudHJhbnNsYXRlM2Qob3JpZ2luWCArIG1fcG9zaXRpb24ueCgpLCBvcmlnaW5ZICsgbV9wb3Np
dGlvbi55KCksIG1fYW5jaG9yUG9pbnQueigpICkKKyAgICAgICAgLm11bHRpcGx5KG1fbG9jYWwp
OworCisgICAgLy8gSW4gY2FzZSBhIHBhcmVudCBoYWQgcHJlc2VydmVzM0QgYW5kIHRoaXMgbGF5
ZXIgaGFzIG5vdCwgZmxhdHRlbiBvdXIgY2hpbGRyZW4uCisgICAgbV9jb21iaW5lZEZvckNoaWxk
cmVuID0gbV9mbGF0dGVuaW5nID8gbV9jb21iaW5lZC50bzJkVHJhbnNmb3JtKCkgOiBtX2NvbWJp
bmVkOworICAgIG1fY29tYmluZWRGb3JDaGlsZHJlbi5tdWx0aXBseShtX2NoaWxkcmVuKTsKKwor
ICAgIG1fY29tYmluZWQudHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9hbmNob3JQ
b2ludC56KCkpOworICAgIG1fY29tYmluZWRGb3JDaGlsZHJlbi50cmFuc2xhdGUzZCgtb3JpZ2lu
WCwgLW9yaWdpblksIC1tX2FuY2hvclBvaW50LnooKSk7CisgICAgbV9kaXJ0eSA9IGZhbHNlOwor
fQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBMYXllclRyYW5zZm9ybTo6Y29tYmluZWRGb3JDaGls
ZHJlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RpcnR5KTsKKyAgICByZXR1cm4gbV9jb21i
aW5lZEZvckNoaWxkcmVuOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvTGF5ZXJUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9MYXllclRyYW5zZm9ybS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYjY5
MjY3OGYyMDI5YjVkMjBmNGU4OTBkNjIzMzRhY2QzZjNkYjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvTGF5ZXJUcmFuc2Zvcm0uaApA
QCAtMCwwICsxLDYwIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmbmRlZiBMYXllclRyYW5zZm9ybV9oCisjZGVmaW5lIExheWVyVHJhbnNmb3JtX2gKKworI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExheWVyVHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBM
YXllclRyYW5zZm9ybSgpOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYp
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldEFuY2hv
clBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0RmxhdHRlbmluZyhib29s
KTsKKyAgICB2b2lkIHNldExvY2FsVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7CisgICAgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkKCkgY29uc3Q7CisKKyAg
ICB2b2lkIGNvbWJpbmVUcmFuc2Zvcm1zKExheWVyVHJhbnNmb3JtKiBwYXJlbnRMYXllclRyYW5z
Zm9ybSk7CisKK3ByaXZhdGU6CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29tYmluZWRGb3JD
aGlsZHJlbigpIGNvbnN0OworCisgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQ7CisgICAg
RmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgYm9vbCBt
X2ZsYXR0ZW5pbmc7CisgICAgYm9vbCBtX2RpcnR5OworCisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbV9sb2NhbDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2NoaWxkcmVuOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fY29tYmluZWQ7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV9jb21iaW5lZEZvckNoaWxkcmVuOworfTsKKworfQorCisjZW5kaWYgLy8gTGF5ZXJUcmFuc2Zv
cm1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKaW5kZXggMTM3OGU5ODg5MzkzZTk4Njg3YmVl
NGEzOGY3YTA2YmMxZTY2NDlkYy4uMDQ2YzdhZDM5NmEyOTYzZGZkYjZmOGJiZDgyMTQyN2NlYmU1
YmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFRleHR1
cmVNYXBwZXJOb2RlKiBUZXh0dXJlTWFwcGVyTm9kZTo6cm9vdExheWVyKCkKIAogdm9pZCBUZXh0
dXJlTWFwcGVyTm9kZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgpCiB7Ci0gICAgbV90cmFuc2Zvcm1zLmxvY2FsID0gbWF0cml4OworICAgIG1fdHJhbnNm
b3JtLnNldExvY2FsVHJhbnNmb3JtKG1hdHJpeCk7CiB9CiAKIGludCBUZXh0dXJlTWFwcGVyTm9k
ZTo6Y291bnREZXNjZW5kYW50c1dpdGhDb250ZW50KCkgY29uc3QKQEAgLTEwMiwyMyArMTAyLDEw
IEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVPdmVybGFwc0lmTmVlZGVkKCkKIAog
dm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcHV0ZUFsbFRyYW5zZm9ybXMoKQogewotICAgIG1f
dHJhbnNmb3Jtcy50YXJnZXQgPSBtX3BhcmVudCA/IG1fcGFyZW50LT5tX3RyYW5zZm9ybXMuZm9y
RGVzY2VuZGFudHMgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwotCi0gICAgZmxvYXQgb3JpZ2lu
WCA9IG1fc3RhdGUuYW5jaG9yUG9pbnQueCgpICogbV9zaXplLndpZHRoKCk7Ci0gICAgZmxvYXQg
b3JpZ2luWSA9IG1fc3RhdGUuYW5jaG9yUG9pbnQueSgpICogbV9zaXplLmhlaWdodCgpOwotICAg
IG1fdHJhbnNmb3Jtcy50YXJnZXQKLSAgICAgICAgLnRyYW5zbGF0ZTNkKG9yaWdpblggKyBtX3N0
YXRlLnBvcy54KCksIG9yaWdpblkgKyBtX3N0YXRlLnBvcy55KCksIG1fc3RhdGUuYW5jaG9yUG9p
bnQueigpICkKLSAgICAgICAgLm11bHRpcGx5KG1fdHJhbnNmb3Jtcy5sb2NhbCk7Ci0KLSAgICAv
LyBJbiBjYXNlIGEgcGFyZW50IGhhZCBwcmVzZXJ2ZXMzRCBhbmQgdGhpcyBsYXllciBoYXMgbm90
LCBmbGF0dGVuIG91ciBjaGlsZHJlbi4KLSAgICBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMg
PSBtX3N0YXRlLnByZXNlcnZlczNEID8gbV90cmFuc2Zvcm1zLnRhcmdldCA6IG1fdHJhbnNmb3Jt
cy50YXJnZXQudG8yZFRyYW5zZm9ybSgpOwotICAgIG1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5kYW50
cy5tdWx0aXBseShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKLQotICAgIG1fdHJhbnNmb3Jt
cy50YXJnZXQudHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9zdGF0ZS5hbmNob3JQ
b2ludC56KCkpOwotICAgIG1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5kYW50cy50cmFuc2xhdGUzZCgt
b3JpZ2luWCwgLW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisgICAgbV90cmFu
c2Zvcm0uY29tYmluZVRyYW5zZm9ybXMobV9wYXJlbnQgPyAmbV9wYXJlbnQtPm1fdHJhbnNmb3Jt
IDogMCk7CiAKICAgICBpZiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPm1fc3RhdGUucHJlc2VydmVz
M0QpCi0gICAgICAgIG1fdHJhbnNmb3Jtcy5jZW50ZXJaID0gbV90cmFuc2Zvcm1zLnRhcmdldC5t
YXBQb2ludChGbG9hdFBvaW50M0QobV9zaXplLndpZHRoKCkgLyAyLCBtX3NpemUuaGVpZ2h0KCkg
LyAyLCAwKSkueigpOworICAgICAgICBtX2NlbnRlclogPSBtX3RyYW5zZm9ybS5jb21iaW5lZCgp
Lm1hcFBvaW50KEZsb2F0UG9pbnQzRChtX3NpemUud2lkdGgoKSAvIDIsIG1fc2l6ZS5oZWlnaHQo
KSAvIDIsIDApKS56KCk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVUaWxl
cygpCkBAIC0xNDMsNyArMTMwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcHV0ZVRp
bGVzKCkKICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChjb250ZW50UmVjdCk7CiAgICAg
ICAgICAgICBGbG9hdFJlY3QgdGlsZVJlY3RJblJvb3RDb29yZGluYXRlcyA9IHRpbGVSZWN0Owog
ICAgICAgICAgICAgdGlsZVJlY3RJblJvb3RDb29yZGluYXRlcy5zY2FsZSgxLjApOwotICAgICAg
ICAgICAgdGlsZVJlY3RJblJvb3RDb29yZGluYXRlcyA9IG1fdHJhbnNmb3Jtcy50YXJnZXQubWFw
UmVjdCh0aWxlUmVjdEluUm9vdENvb3JkaW5hdGVzKTsKKyAgICAgICAgICAgIHRpbGVSZWN0SW5S
b290Q29vcmRpbmF0ZXMgPSBtX3RyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QodGlsZVJlY3RJ
blJvb3RDb29yZGluYXRlcyk7CiAgICAgICAgICAgICB0aWxlc1RvQWRkLmFwcGVuZCh0aWxlUmVj
dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODUsNTIgKzE3Miw2IEBAIHZvaWQgVGV4dHVyZU1h
cHBlck5vZGU6OmNvbXB1dGVUaWxlcygpCiAgICAgICAgIG1fb3duZWRUaWxlcy5yZW1vdmUodGls
ZXNUb1JlbW92ZVtpXSk7CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXN0YXRp
YyB2b2lkIGNsYW1wUmVjdChJbnRSZWN0JiByZWN0LCBpbnQgZGltZW5zaW9uKQotewotICAgIHJl
Y3Quc2hpZnRYRWRnZVRvKHJlY3QueCgpIC0gcmVjdC54KCkgJSBkaW1lbnNpb24pOwotICAgIHJl
Y3Quc2hpZnRZRWRnZVRvKHJlY3QueSgpIC0gcmVjdC55KCkgJSBkaW1lbnNpb24pOwotICAgIHJl
Y3Quc2hpZnRNYXhYRWRnZVRvKHJlY3QubWF4WCgpIC0gcmVjdC54KCkgJSBkaW1lbnNpb24gKyBk
aW1lbnNpb24pOwotICAgIHJlY3Quc2hpZnRNYXhZRWRnZVRvKHJlY3QubWF4WSgpIC0gcmVjdC55
KCkgJSBkaW1lbnNpb24gKyBkaW1lbnNpb24pOwotfQotCi1ib29sIFRleHR1cmVNYXBwZXJOb2Rl
Ojpjb2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMoTm9kZVJlY3RNYXAmIHJlY3RNYXAsIGNvbnN0
IEZsb2F0UmVjdCYgcm9vdFZpc2libGVSZWN0KQotewotICAgIGlmICghbV9zdGF0ZS52aXNpYmxl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBleGlzdHMgPSBmYWxzZTsKLQotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgZXhp
c3RzID0gbV9jaGlsZHJlbltpXS0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKHJlY3RNYXAs
IHJvb3RWaXNpYmxlUmVjdCkgfHwgZXhpc3RzOwotICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikK
LSAgICAgICAgZXhpc3RzID0gbV9zdGF0ZS5tYXNrTGF5ZXItPmNvbGxlY3RWaXNpYmxlQ29udGVu
dHNSZWN0cyhyZWN0TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKLSAgICBpZiAobV9z
dGF0ZS5yZXBsaWNhTGF5ZXIpCi0gICAgICAgIGV4aXN0cyA9IG1fc3RhdGUucmVwbGljYUxheWVy
LT5jb2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8
fCBleGlzdHM7Ci0KLSAgICAvLyBOb24taW52ZXJ0aWJsZSBsYXllcnMgYXJlIG5vdCB2aXNpYmxl
LgotICAgIGlmICghbV90cmFuc2Zvcm1zLnRhcmdldC5pc0ludmVydGlibGUoKSkKLSAgICAgICAg
cmV0dXJuIGV4aXN0czsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgdGlsaW5nVGhyZXNob2xkID0g
MjU2OwotCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KDAsIDAsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlmIChtX3NpemUud2lkdGgoKSA+IHRpbGluZ1Ro
cmVzaG9sZCB8fCBtX3NpemUuaGVpZ2h0KCkgPiB0aWxpbmdUaHJlc2hvbGQpIHsKLSAgICAgICAg
SW50UmVjdCB2aXNpYmxlUmVjdEluTG9jYWxDb29yZGluYXRlcyA9IGVuY2xvc2luZ0ludFJlY3Qo
VHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkuaW52ZXJzZSgpLm1hcFJl
Y3Qocm9vdFZpc2libGVSZWN0KSk7Ci0gICAgICAgIGlmICghdmlzaWJsZVJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xhbXBSZWN0KHZpc2libGVSZWN0SW5M
b2NhbENvb3JkaW5hdGVzLCBnVGlsZURpbWVuc2lvbik7Ci0gICAgICAgIHZpc2libGVDb250ZW50
c1JlY3QuaW50ZXJzZWN0KHZpc2libGVSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKTsKLSAgICB9Ci0K
LSAgICBpZiAodmlzaWJsZUNvbnRlbnRzUmVjdC5pc0VtcHR5KCkgfHwgdmlzaWJsZUNvbnRlbnRz
UmVjdCA9PSBtX3N0YXRlLnZpc2libGVSZWN0KQotICAgICAgICByZXR1cm4gZXhpc3RzOwotCi0g
ICAgbV9zdGF0ZS52aXNpYmxlUmVjdCA9IHZpc2libGVDb250ZW50c1JlY3Q7Ci0gICAgcmVjdE1h
cC5hZGQodGhpcywgbV9zdGF0ZS52aXNpYmxlUmVjdCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LSNlbmRpZgotCiB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpyZW5kZXJDb250ZW50KFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAtMzU4LDEzICsyOTksMTMgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiAKICAgICAgICAgICAgIGZsb2F0IHJlcGxpY2FPcGFjaXR5ID0gMS4wOwogICAgICAgICAg
ICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7Ci0gICAgICAgICAgICAgICAgcmVwbGljYU1h
dHJpeCA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybXMudGFyZ2V0LnNjYWxlKDEu
MCAvIHRpbGUuc2NhbGUpOworICAgICAgICAgICAgICAgIHJlcGxpY2FNYXRyaXggPSBtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV90cmFuc2Zvcm0uY29tYmluZWQoKS5zY2FsZSgxLjAgLyB0aWxlLnNj
YWxlKTsKICAgICAgICAgICAgICAgICByZXBsaWNhT3BhY2l0eSA9IG9wYWNpdHkgKiBtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV9vcGFjaXR5OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQml0
bWFwVGV4dHVyZSYgdGV4dHVyZSA9ICp0aWxlLmZyb250QnVmZmVyLnRleHR1cmU7CiAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCiAgICAgICAgICAgICAgICAgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSh0ZXh0dXJlLCByZWN0LCByZXBsaWNhTWF0cml4LCBy
ZXBsaWNhT3BhY2l0eSwgcmVwbGljYU1hc2tUZXh0dXJlID8gcmVwbGljYU1hc2tUZXh0dXJlLmdl
dCgpIDogbWFza1RleHR1cmUuZ2V0KCkpOwotICAgICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLT5kcmF3VGV4dHVyZSh0ZXh0dXJlLCByZWN0LCBtX3RyYW5zZm9ybXMudGFyZ2V0LCBvcGFj
aXR5LCBvcHRpb25zLmlzU3VyZmFjZSA/IDAgOiBtYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKHRleHR1cmUsIHJlY3QsIG1f
dHJhbnNmb3JtLmNvbWJpbmVkKCksIG9wYWNpdHksIG9wdGlvbnMuaXNTdXJmYWNlID8gMCA6IG1h
c2tUZXh0dXJlLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mzc1LDIyICszMTYsMjIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIEJpdG1hcFRleHR1
cmUqIHRleHR1cmUgPSBtX293bmVkVGlsZXNbaV0udGV4dHVyZS5nZXQoKTsKICAgICAgICAgaWYg
KG1fc3RhdGUucmVwbGljYUxheWVyICYmICFvcHRpb25zLmlzU3VyZmFjZSkgewogICAgICAgICAg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVj
dEZvclRpbGVSZWN0KHRhcmdldFJlY3QsIG1fb3duZWRUaWxlc1tpXS5yZWN0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy50
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUucmVwbGljYUxheWVy
LT5tX3RyYW5zZm9ybS5jb21iaW5lZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGFjaXR5ICogbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGljYU1hc2tUZXh0dXJlID8gcmVwbGljYU1hc2tUZXh0dXJlLmdl
dCgpIDogbWFza1RleHR1cmUuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgRmxv
YXRSZWN0IHJlY3QgPSB0YXJnZXRSZWN0Rm9yVGlsZVJlY3QodGFyZ2V0UmVjdCwgbV9vd25lZFRp
bGVzW2ldLnJlY3QpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJl
KCp0ZXh0dXJlLCByZWN0LCBtX3RyYW5zZm9ybXMudGFyZ2V0LCBvcGFjaXR5LCBvcHRpb25zLmlz
U3VyZmFjZSA/IDAgOiBtYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+ZHJhd1RleHR1cmUoKnRleHR1cmUsIHJlY3QsIG1fdHJhbnNmb3JtLmNvbWJpbmVk
KCksIG9wYWNpdHksIG9wdGlvbnMuaXNTdXJmYWNlID8gMCA6IG1hc2tUZXh0dXJlLmdldCgpKTsK
ICAgICB9CiAKICAgICBpZiAobV9jdXJyZW50Q29udGVudC5jb250ZW50VHlwZSA9PSBNZWRpYUNv
bnRlbnRUeXBlICYmIG1fY3VycmVudENvbnRlbnQubWVkaWEpIHsKICAgICAgICAgaWYgKG1fc3Rh
dGUucmVwbGljYUxheWVyICYmICFvcHRpb25zLmlzU3VyZmFjZSkKICAgICAgICAgICAgIG1fY3Vy
cmVudENvbnRlbnQubWVkaWEtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1h
cHBlciwgdGFyZ2V0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybXMudGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFj
aXR5ICogbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2FNYXNrVGV4dHVy
ZSA/IHJlcGxpY2FNYXNrVGV4dHVyZS5nZXQoKSA6IG1hc2tUZXh0dXJlLmdldCgpKTsKLSAgICAg
ICAgbV9jdXJyZW50Q29udGVudC5tZWRpYS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50
ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCBtX3RyYW5zZm9ybXMudGFyZ2V0LCBvcGFjaXR5LCBv
cHRpb25zLmlzU3VyZmFjZSA/IDAgOiBtYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgICAgIG1fY3Vy
cmVudENvbnRlbnQubWVkaWEtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1h
cHBlciwgdGFyZ2V0UmVjdCwgbV90cmFuc2Zvcm0uY29tYmluZWQoKSwgb3BhY2l0eSwgb3B0aW9u
cy5pc1N1cmZhY2UgPyAwIDogbWFza1RleHR1cmUuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtMzk4
LDcgKzMzOSw3IEBAIGludCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcGFyZUdyYXBoaWNzTGF5ZXJz
WlZhbHVlKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCiB7CiAgICAgVGV4dHVyZU1hcHBl
ck5vZGUqIGNvbnN0KiBub2RlQSA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJOb2RlKiBjb25z
dCo+KGEpOwogICAgIFRleHR1cmVNYXBwZXJOb2RlKiBjb25zdCogbm9kZUIgPSBzdGF0aWNfY2Fz
dDxUZXh0dXJlTWFwcGVyTm9kZSogY29uc3QqPihiKTsKLSAgICByZXR1cm4gaW50KCgoKm5vZGVB
KS0+bV90cmFuc2Zvcm1zLmNlbnRlclogLSAoKm5vZGVCKS0+bV90cmFuc2Zvcm1zLmNlbnRlclop
ICogMTAwMCk7CisgICAgcmV0dXJuIGludCgoKCpub2RlQSktPm1fY2VudGVyWiAtICgqbm9kZUIp
LT5tX2NlbnRlclopICogMTAwMCk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnNvcnRC
eVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlck5vZGUqID4mIGFycmF5LCBpbnQgZmlyc3QsIGlu
dCBsYXN0KQpAQCAtNDEwLDcgKzM1MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnBhaW50
U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wCiB7CiAg
ICAgYm9vbCBoYXNDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX2NoaWxkcmVuLmlz
RW1wdHkoKTsKICAgICBpZiAoaGFzQ2xpcCkKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iZWdpbkNsaXAobV90cmFuc2Zvcm1zLnRhcmdldCwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53
aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iZWdpbkNsaXAobV90cmFuc2Zvcm0uY29tYmluZWQoKSwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKIAogICAgIHBhaW50U2VsZihvcHRpb25zKTsK
IApAQCAtNDQ3LDcgKzM4OCw3IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OnBhaW50UmVmbGVj
dGlvbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAgICAgaWYgKG1h
c2tUZXh0dXJlKSB7CiAgICAgICAgIG1hc2tTdXJmYWNlID0gb3B0aW9ucy5zdXJmYWNlTWFuYWdl
ci0+Z2V0SW50ZXJtZWRpYXRlU3VyZmFjZSgpOwogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmJpbmRTdXJmYWNlKG1hc2tTdXJmYWNlLmdldCgpKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbWFza1RleHR1cmUuZ2V0KCksIGVudGlyZVJlY3QoKSwg
bV90cmFuc2Zvcm1zLnRhcmdldCwgMSwgMCk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci0+ZHJhd1RleHR1cmUoKm1hc2tUZXh0dXJlLmdldCgpLCBlbnRpcmVSZWN0KCksIG1fdHJhbnNm
b3JtLmNvbWJpbmVkKCksIDEsIDApOwogICAgICAgICBtYXNrVGV4dHVyZSA9IG1hc2tTdXJmYWNl
OwogICAgIH0KIApAQCAtNDU1LDcgKzM5Niw3IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OnBh
aW50UmVmbGVjdGlvbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAg
ICAgaWYgKHJlcGxpY2FNYXNrVGV4dHVyZSkgewogICAgICAgICByZXBsaWNhTWFza1N1cmZhY2Ug
PSBvcHRpb25zLnN1cmZhY2VNYW5hZ2VyLT5nZXRJbnRlcm1lZGlhdGVTdXJmYWNlKCk7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2UocmVwbGljYU1hc2tTdXJmYWNl
LmdldCgpKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqcmVw
bGljYU1hc2tUZXh0dXJlLmdldCgpLCBlbnRpcmVSZWN0KCksIG1fdHJhbnNmb3Jtcy50YXJnZXQs
IDEsIDApOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpyZXBs
aWNhTWFza1RleHR1cmUuZ2V0KCksIGVudGlyZVJlY3QoKSwgbV90cmFuc2Zvcm0uY29tYmluZWQo
KSwgMSwgMCk7CiAgICAgICAgIHJlcGxpY2FNYXNrVGV4dHVyZSA9IHJlcGxpY2FNYXNrU3VyZmFj
ZTsKICAgICB9CiAKQEAgLTQ3Myw3ICs0MTQsNyBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpw
YWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwog
ICAgIGlmICh1c2VJbnRlcm1lZGlhdGVCdWZmZXJGb3JSZXBsaWNhKSB7CiAgICAgICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhU3VyZmFjZSA9IG9wdGlvbnMuc3VyZmFjZU1hbmFnZXIt
PmdldEludGVybWVkaWF0ZVN1cmZhY2UoKTsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iaW5kU3VyZmFjZShyZXBsaWNhU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwgbV9z
dGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy50YXJnZXQsIG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX29wYWNpdHksIHJlcGxpY2FNYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVj
dCwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCksIG1fc3RhdGUu
cmVwbGljYUxheWVyLT5tX29wYWNpdHksIHJlcGxpY2FNYXNrVGV4dHVyZS5nZXQoKSk7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZp
ZXdwb3J0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgMSwgbWFza1RleHR1cmUuZ2V0KCkp
OwogICAgICAgICBvcHRpb25zLnN1cmZhY2VNYW5hZ2VyLT5yZWxlYXNlSW50ZXJtZWRpYXRlU3Vy
ZmFjZShzdXJmYWNlLmdldCgpKTsKICAgICAgICAgc3VyZmFjZSA9IHJlcGxpY2FTdXJmYWNlOwpA
QCAtNDgzLDcgKzQyNCw3IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OnBhaW50UmVmbGVjdGlv
bihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAKICAgICAvLyBEcmF3
IHRoZSByZWZsZWN0aW9uLgogICAgIGlmICghdXNlSW50ZXJtZWRpYXRlQnVmZmVyRm9yUmVwbGlj
YSkKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5n
ZXQoKSwgdmlld3BvcnRSZWN0LCBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV90cmFuc2Zvcm1zLnRh
cmdldCwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwgcmVwbGljYU1hc2tUZXh0dXJl
LmdldCgpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3Vy
ZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0LCBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV90cmFuc2Zv
cm0uY29tYmluZWQoKSwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwgcmVwbGljYU1h
c2tUZXh0dXJlLmdldCgpKTsKIAogICAgIC8vIERyYXcgdGhlIG9yaWdpbmFsLgogICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVj
dCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgb3B0aW9ucy5vcGFjaXR5LCBtYXNrVGV4dHVyZS5n
ZXQoKSk7CkBAIC01MjEsNyArNDYyLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRS
ZWN1cnNpdmUoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBvcHRpb25zKQogICAgIGlmIChtX3N0
YXRlLm1hc2tMYXllcikgewogICAgICAgICBtYXNrU3VyZmFjZSA9IG9wdGlvbnMuc3VyZmFjZU1h
bmFnZXItPmdldEludGVybWVkaWF0ZVN1cmZhY2UoKTsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLT5iaW5kU3VyZmFjZShtYXNrU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCks
IGVudGlyZVJlY3QoKSwgbV90cmFuc2Zvcm1zLnRhcmdldCwgMS4wLCAwKTsKKyAgICAgICAgb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1
cmUoKSwgZW50aXJlUmVjdCgpLCBtX3RyYW5zZm9ybS5jb21iaW5lZCgpLCAxLjAsIDApOwogICAg
IH0KIAogICAgIHN1cmZhY2UgPSBvcHRpb25zLnN1cmZhY2VNYW5hZ2VyLT5nZXRJbnRlcm1lZGlh
dGVTdXJmYWNlKCk7CkBAIC03MzIsNyArNjczLDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6
OnN5bmNDb21wb3NpdGluZ1N0YXRlU2VsZihHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3Jh
CiAgICAgaWYgKCFoYXNPcGFjaXR5QW5pbWF0aW9uKCkpCiAgICAgICAgIG1fb3BhY2l0eSA9IG1f
c3RhdGUub3BhY2l0eTsKICAgICBpZiAoIWhhc1RyYW5zZm9ybUFuaW1hdGlvbigpKQotICAgICAg
ICBtX3RyYW5zZm9ybXMubG9jYWwgPSBtX3N0YXRlLnRyYW5zZm9ybTsKKyAgICAgICAgbV90cmFu
c2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOworCisgICAgbV90cmFu
c2Zvcm0uc2V0UG9zaXRpb24obV9zdGF0ZS5wb3MpOworICAgIG1fdHJhbnNmb3JtLnNldEFuY2hv
clBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQpOworICAgIG1fdHJhbnNmb3JtLnNldFNpemUobV9z
dGF0ZS5zaXplKTsKKyAgICBtX3RyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFtX3N0YXRlLnByZXNl
cnZlczNEKTsKKyAgICBtX3RyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRlLmNo
aWxkcmVuVHJhbnNmb3JtKTsKIH0KIAogYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6ZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdApAQCAtODE0LDYgKzc2MSw4IEBA
IHN0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24sIGZsCiAKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmFwcGx5
VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRleHR1cmVNYXBwZXJBbmltYXRpb24mIGFuaW1hdGlv
biwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogZnJvbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgcmVz
dWx0IHRyYW5zZm9ybSB0byB0aGUgd2ViIHByb2Nlc3MgbGF5ZXIgdG8gaGF2ZSBhIHByb3Blcmx5
IGFkanVzdGVkIHZpc2libGUgcmVjdC4KKwogICAgIC8vIE9wdGltaXphdGlvbjogc3BlY2lhbCBj
YXNlIHRoZSBlZGdlIHZhbHVlcyAoMCBhbmQgMSkuCiAgICAgaWYgKHByb2dyZXNzID09IDEuMCB8
fCAhcHJvZ3Jlc3MpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlck5vZGUuaAppbmRleCA2YTIzNjBkM2Q3MTE0YjZiOGM0YmFmYzhmOWJjYWI5OTUx
YzA1Y2M5Li5kNGQ3OTBmNjVlZmY2ZGEzMWQ2NmVmMzI5YTVhZDMzYzk0MjNkNDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlck5vZGUuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50SGFzaC5oIgorI2lu
Y2x1ZGUgIkxheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgpAQCAtMTM1
LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgVGV4dHVyZU1hcHBlck5vZGUoKQot
ICAgICAgICA6IG1fcGFyZW50KDApLCBtX2VmZmVjdFRhcmdldCgwKSwgbV9vcGFjaXR5KDEuMCks
IG1fc3VyZmFjZU1hbmFnZXIoMCksIG1fdGV4dHVyZU1hcHBlcigwKSB7IH0KKyAgICAgICAgOiBt
X3BhcmVudCgwKSwgbV9lZmZlY3RUYXJnZXQoMCksIG1fb3BhY2l0eSgxLjApLCBtX2NlbnRlcloo
MC4wKSwgbV9zdXJmYWNlTWFuYWdlcigwKSwgbV90ZXh0dXJlTWFwcGVyKDApIHsgfQogCiAgICAg
dmlydHVhbCB+VGV4dHVyZU1hcHBlck5vZGUoKTsKIApAQCAtMTU3LDcgKzE1OCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbnRlbnRzVGlsZUJhY2tCdWZmZXIoaW50IGlkLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCB2b2lkKiBiaXRzLCBC
aXRtYXBUZXh0dXJlOjpQaXhlbEZvcm1hdCk7CiAgICAgdm9pZCBzZXRUaWxlQmFja0J1ZmZlclRl
eHR1cmVGb3JEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQgaWQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgQml0bWFwVGV4dHVyZSopOwog
ICAgIHZvaWQgY2xlYXJBbGxEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVRpbGVzKCk7Ci0gICAgYm9v
bCBjb2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMoTm9kZVJlY3RNYXAmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICB2b2lkIHB1cmdlTm9kZVRleHR1cmVzUmVjdXJzaXZlKCk7CiAjZW5kaWYKICAg
ICB2b2lkIHNldElEKGludCBpZCkgeyBtX2lkID0gaWQ7IH0KQEAgLTE2OCw3ICsxNjgsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJOb2RlKiByb290TGF5ZXIoKTsKICAg
ICB2b2lkIGNvbXB1dGVBbGxUcmFuc2Zvcm1zKCk7Ci0gICAgdm9pZCBjb21wdXRlVmlzaWJsZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByb290VmlzaWJsZVJlY3QpOwogICAgIHZvaWQgY29tcHV0ZU92
ZXJsYXBzSWZOZWVkZWQoKTsKICAgICB2b2lkIGNvbXB1dGVUaWxlcygpOwogICAgIHZvaWQgc3dh
cENvbnRlbnRzQnVmZmVycygpOwpAQCAtMTk3LDE1ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaGFzT3BhY2l0eUFuaW1hdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFzVHJhbnNmb3JtQW5p
bWF0aW9uKCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgVHJhbnNmb3JtRGF0YSB7Ci0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
Zm9yRGVzY2VuZGFudHM7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2FsOwotICAg
ICAgICBmbG9hdCBjZW50ZXJaOwotICAgICAgICBUcmFuc2Zvcm1EYXRhKCkgeyB9Ci0gICAgfTsK
LQotICAgIFRyYW5zZm9ybURhdGEgbV90cmFuc2Zvcm1zOworICAgIExheWVyVHJhbnNmb3JtIG1f
dHJhbnNmb3JtOwogCiAgICAgaW5saW5lIEZsb2F0UmVjdCB0YXJnZXRSZWN0KCkgY29uc3QKICAg
ICB7CkBAIC0yNjEsNiArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyTm9kZSog
bV9lZmZlY3RUYXJnZXQ7CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBmbG9hdCBtX29wYWNp
dHk7CisgICAgZmxvYXQgbV9jZW50ZXJaOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgaW50IG1f
aWQ7CiAKQEAgLTI4NCw3ICsyNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIG5lZWRzUmVz
ZXQ6IDE7CiAgICAgICAgIGJvb2wgbWlnaHRIYXZlT3ZlcmxhcHMgOiAxOwogICAgICAgICBib29s
IG5lZWRzUmVwYWludDsKLSAgICAgICAgSW50UmVjdCB2aXNpYmxlUmVjdDsKICAgICAgICAgZmxv
YXQgY29udGVudFNjYWxlOwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICAgICBU
aWxlT3duZXJzaGlwIHRpbGVPd25lcnNoaXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBhMTU2YWUxNTdhYTEzMDI5ZGFjNjcw
OThjYTc2ZDM2MjQ1YTFkZWM1Li5jYWUyN2MxYjI3MjAyYmQ0OGNjY2NlMjM4MDE5NjZiODYzODVh
OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKQEAgLTQ1LDggKzQ1LDEyIEBACiAjaW5jbHVkZSA8UURlY2xhcmF0aXZlRW5naW5l
PgogI2luY2x1ZGUgPFFGaWxlRGlhbG9nPgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrQ2FudmFz
PgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJl
Y3QuaD4KICNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1By
aXZhdGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCiAgICAgOiBxX3B0cih2aWV3cG9ydCkKICAg
ICAsIGFsZXJ0RGlhbG9nKDApCkBAIC0xMjMsNiArMTI3LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6aW5pdGlhbGl6ZURlc2t0b3AoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCiAgICAg
aW50ZXJhY3Rpb25FbmdpbmUucmVzZXQoMCk7CiAgICAgcGFnZVZpZXctPmQtPmV2ZW50SGFuZGxl
ci0+c2V0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgwKTsKICAgICBlbmFibGVNb3VzZUV2ZW50
cygpOworICAgIHVwZGF0ZURlc2t0b3BWaWV3cG9ydFNpemUoKTsKIH0KIAogdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZVRvdWNoKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQpA
QCAtMTMzLDcgKzEzOCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVU
b3VjaChRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkKICAgICBRT2JqZWN0Ojpjb25uZWN0KGludGVy
YWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRTdXNwZW5kUmVxdWVzdGVkKCkpLCB2
aWV3cG9ydCwgU0xPVChfcV9zdXNwZW5kKCkpKTsKICAgICBRT2JqZWN0Ojpjb25uZWN0KGludGVy
YWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRSZXN1bWVSZXF1ZXN0ZWQoKSksIHZp
ZXdwb3J0LCBTTE9UKF9xX3Jlc3VtZSgpKSk7CiAgICAgUU9iamVjdDo6Y29ubmVjdChpbnRlcmFj
dGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTCh2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2Vk
KGNvbnN0IFFQb2ludEYmKSksIHZpZXdwb3J0LCBTTE9UKF9xX3ZpZXdwb3J0VHJhamVjdG9yeVZl
Y3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSk7Ci0gICAgdXBkYXRlVmlld3BvcnRTaXplKCk7
CisgICAgdXBkYXRlVG91Y2hWaWV3cG9ydFNpemUoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZENvbW1pdCgpCkBAIC0zMDAsNyArMzA1LDE5IEBAIHZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6Ol9xX29uUmVjZWl2ZWRSZXNwb25zZUZyb21Eb3dubG9hZChRV2ViRG93
bmxvYWRJdGVtKiBkCiAgICAgZW1pdCBxLT5leHBlcmltZW50YWwoKS0+ZG93bmxvYWRSZXF1ZXN0
ZWQoZG93bmxvYWRJdGVtKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRl
Vmlld3BvcnRTaXplKCkKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZURlc2t0b3BW
aWV3cG9ydFNpemUoKQoreworICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBRU2l6ZSB2aWV3
cG9ydFNpemUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7CisgICAgcGFnZVZp
ZXctPnNldFdpZHRoKHZpZXdwb3J0U2l6ZS53aWR0aCgpKTsKKyAgICBwYWdlVmlldy0+c2V0SGVp
Z2h0KHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgLy8gVGhlIGZpeGVkIGxheW91dCBpcyBo
YW5kbGVkIGJ5IHRoZSBGcmFtZVZpZXcgYW5kIHRoZSBkcmF3aW5nIGFyZWEgZG9lc24ndCBiZWhh
dmUgZGlmZmVyZW50bHkKKyAgICAvLyB3ZXRoZXIgaXRzIGZpeGVkIG9yIG5vdC4gV2Ugc3RpbGwg
bmVlZCB0byB0ZWxsIHRoZSBkcmF3aW5nIGFyZWEgd2hpY2ggcGFydCBvZiBpdAorICAgIC8vIGhh
cyB0byBiZSByZW5kZXJlZCBvbiB0aWxlcywgYW5kIGluIGRlc2t0b3AgbW9kZSwgaXQncyBhbGwg
b2YgaXQuCisgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVu
dHNSZWN0QW5kU2NhbGUoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUpLCAxLjApOwor
fQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVUb3VjaFZpZXdwb3J0U2l6ZSgp
CiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEt
PmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKQEAgLTgwMCwxMSArODE3LDEwIEBAIHZv
aWQgUVF1aWNrV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0
cnksIGNvbnN0IFFSZWN0RiYgb2xkCiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwogICAgIFFRdWlj
a0l0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwogICAgIGlm
IChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKSB7Ci0gICAgICAgIGlm
IChkLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpIHsKLSAgICAgICAgICAgIGQtPnBh
Z2VWaWV3LT5zZXRXaWR0aChuZXdHZW9tZXRyeS53aWR0aCgpKTsKLSAgICAgICAgICAgIGQtPnBh
Z2VWaWV3LT5zZXRIZWlnaHQobmV3R2VvbWV0cnkuaGVpZ2h0KCkpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGQtPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOworICAgICAgICBpZiAoZC0+dXNl
VHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQorICAgICAgICAgICAgZC0+dXBkYXRlRGVza3Rv
cFZpZXdwb3J0U2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkLT51cGRhdGVUb3Vj
aFZpZXdwb3J0U2l6ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGE5NmQ0MzQ2MjA0NGQ0ZDM5
NzA0ZGIxN2JkMzA4MGNkM2NhNWM1YTkuLjNiYjRlODYwNmQzZGE3NjFhMDRkZTQwOTQ5ZjgxMGVi
NTIxNGJkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcF9wLmgKQEAgLTc3LDcgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
JiBhcmdzKTsKICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwogCi0gICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKKyAgICB2b2lkIHVwZGF0ZURlc2t0b3BWaWV3cG9ydFNp
emUoKTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKCk7CiAgICAgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBjb21wdXRlVmlld3BvcnRDb25zdHJhaW50
cygpOwogCiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDg3MWUz
YmYwOWRlMDI4MjUzMDFhZWVkZmNiZThmYTk1YjA5ZWE1MDkuLjdhY2E4MmQwMzhkY2IyNWI2ZmZi
N2EyZmFhZDhiNTEzNTcxOWUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3Jl
YXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCwgY29uc3QgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYpOwogICAgIHZvaWQgZGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZElt
YWdlKGludDY0X3QpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUhvc3RQcm94eU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0Rm9yTGF5ZXIo
V2ViTGF5ZXJJRCwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlVmlld3BvcnQoKTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJU
cmVlSG9zdFByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJl
ZUhvc3RQcm94eVF0LmNwcAppbmRleCBhMWRkMjcyYTc1ZDIyMzIyYzg0ZDU1YWRjMjI4YjNhZTEy
M2JkZWU3Li5kYjExMDIyYjBmNzM2Mjg2M2MzOTI5ZGNlOTEwODkzMjZmZjgzYjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5j
cHAKQEAgLTE4Miw3ICsxODIsNiBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdAogCiAgICAgR0xp
bnQgdmlld3BvcnRbNF07CiAgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3BvcnQp
OwotICAgIEludFJlY3Qgdmlld3BvcnRSZWN0KHZpZXdwb3J0WzBdLCB2aWV3cG9ydFsxXSwgdmll
d3BvcnRbMl0sIHZpZXdwb3J0WzNdKTsKICAgICBtX3RleHR1cmVNYXBwZXItPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKHZpZXdwb3J0WzJdLCB2aWV3cG9ydFszXSkpOwogICAgIG5vZGUtPnNldFRl
eHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKICAgICBtX3RleHR1cmVNYXBwZXIt
PmJlZ2luUGFpbnRpbmcoKTsKQEAgLTE5NCwyMCArMTkzLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0
UHJveHk6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXQKICAgICAgICAgY3VycmVudFJvb3RMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCk7CiAgICAgfQogCi0gICAgVGV4dHVyZU1hcHBlck5vZGU6Ok5vZGVSZWN0
TWFwIG5vZGVWaXN1YWxDb250ZW50c1JlY3RNYXA7Ci0gICAgaWYgKG5vZGUtPmNvbGxlY3RWaXNp
YmxlQ29udGVudHNSZWN0cyhub2RlVmlzdWFsQ29udGVudHNSZWN0TWFwLCB2aWV3cG9ydFJlY3Qp
KSB7Ci0gICAgICAgIFRleHR1cmVNYXBwZXJOb2RlOjpOb2RlUmVjdE1hcDo6aXRlcmF0b3IgZW5k
SXRlcmF0b3IgPSBub2RlVmlzdWFsQ29udGVudHNSZWN0TWFwLmVuZCgpOwotICAgICAgICBmb3Ig
KFRleHR1cmVNYXBwZXJOb2RlOjpOb2RlUmVjdE1hcDo6aXRlcmF0b3IgaXQgPSBub2RlVmlzdWFs
Q29udGVudHNSZWN0TWFwLmJlZ2luKCk7IGl0ICE9IGVuZEl0ZXJhdG9yOyArK2l0KSB7Ci0gICAg
ICAgICAgICBXZWJMYXllcklEIGxheWVySUQgPSBpdC0+Zmlyc3QtPmlkKCk7Ci0gICAgICAgICAg
ICAvLyBhdm9pZCB1cGRhdGluZyBub24tc3luY2VkIHJvb3QgbGF5ZXIKLSAgICAgICAgICAgIGlm
ICghbGF5ZXJJRCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEludFJl
Y3QgdmlzaWJsZVJlY3QgPSBJbnRSZWN0KGl0LT5zZWNvbmQpOwotICAgICAgICAgICAgc2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdEZvckxheWVyKGxheWVySUQsIHZpc2libGVSZWN0KTsKLSAgICAgICAg
fQotICAgIH0KICAgICBub2RlLT5wYWludCgpOwotCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQ
YWludGluZygpOwogCiAgICAgaWYgKG5vZGUtPmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdB
bmltYXRpb25zKCkpIHsKQEAgLTIyNiwxMSArMjEyLDYgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OnVwZGF0ZVZpZXdwb3J0KCkKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnVwZGF0ZVZpZXdw
b3J0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0Rm9yTGF5ZXIoV2ViTGF5ZXJJRCBsYXllcklELCBjb25zdCBJbnRSZWN0JiByZWN0KQotewot
ICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OkxheWVyVHJlZUhvc3Q6OlNldFZpc2libGVDb250ZW50UmVjdEZvckxheWVyKGxheWVySUQsIHJl
Y3QpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwotfQotCiBpbnQgTGF5
ZXJUcmVlSG9zdFByb3h5OjpyZW1vdGVUaWxlSURUb05vZGVUaWxlSUQoaW50IHRpbGVJRCkgY29u
c3QKIHsKICAgICBIYXNoTWFwPGludCwgaW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVU
b05vZGVUaWxlLmZpbmQodGlsZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDA5
MjVkNWRlNDYwMjg5ZWRjMGI2ZDE1NWMwOWY5ZWQzYTlmZWY0NWQuLjkyNWM2OTIzYTk2ODk3MGM5
MjYyYTQ5ZmIwOWRiYTlmMGRmYWJiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApAQCAt
MTA3LDcgKzEwNyw3IEBAIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3Qg
VmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFdlYkdyYXBoaWNzTGF5ZXIqIGNoaWxkID0gdG9XZWJHcmFwaGljc0xheWVyKGNoaWxkcmVuW2ld
KTsKLSAgICAgICAgY2hpbGQtPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAg
ICAgICAgY2hpbGQtPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVS
ZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogICAgICAgICBjaGlsZC0+bm90aWZ5Q2hhbmdlKCk7CiAg
ICAgfQogICAgIG5vdGlmeUNoYW5nZSgpOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgV2ViR3Jh
cGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hp
bGRyZW4pCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKLSAgICB0b1dlYkdy
YXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7Cisg
ICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2Nh
bGUobV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CiAgICAgdG9XZWJHcmFwaGlj
c0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiB9CkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZChHcmFwaGlj
c0xheWVyKiBsYXllcikKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KEdy
YXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQgaW5kZXgpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRk
Q2hpbGRBdEluZGV4KGxheWVyLCBpbmRleCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVy
KS0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVS
ZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5v
dGlmeUNoYW5nZSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTMzLDcgKzEzMyw3IEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxh
eWVyLCBpbnQgaW5kZXgpCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoR3Jh
cGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgdG9XZWJHcmFwaGlj
c0xheWVyKGxheWVyKS0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIHRv
V2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1f
cGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogICAgIHRvV2ViR3JhcGhpY3NMYXll
cihsYXllciktPm5vdGlmeUNoYW5nZSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluCiB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNp
YmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhsYXllciwgc2libGlu
Zyk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVD
b250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwog
ICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwogICAgIG5vdGlm
eUNoYW5nZSgpOwogfQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6
cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdD
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBub3RpZnlDaGFuZ2UoKTsKICAgICB0b1dlYkdy
YXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICB0b1dlYkdyYXBoaWNz
TGF5ZXIobmV3Q2hpbGQpLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAg
dG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2Nh
bGUobV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CiAgICAgdG9XZWJHcmFwaGlj
c0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0zODUsMTMgKzM4NSwxMyBAQCBXZWJMYXllcklEIFdlYkdyYXBoaWNzTGF5ZXI6OmlkKCkgY29u
c3QKIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigp
LnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbigpW2ldLT5zeW5jQ29tcG9zaXRpbmdTdGF0
ZShyZWN0KTsKICAgICBpZiAocmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJlcGxpY2FMYXllcigp
LT5zeW5jQ29tcG9zaXRpbmdTdGF0ZShyZWN0KTsKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAg
ICAgIG1hc2tMYXllcigpLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZShyZWN0KTsKICAgICBzeW5jQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkcmVuKClbaV0tPnN5bmND
b21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCiBXZWJHcmFwaGljc0xheWVyKiB0b1dlYkdyYXBo
aWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkBAIC00MDgsNiArNDA4LDcgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQog
ICAgIGlmICghbV9tb2RpZmllZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgY29tcHV0ZVRyYW5z
Zm9ybWVkVmlzaWJsZVJlY3QoKTsKICAgICBtX2xheWVySW5mby5uYW1lID0gbmFtZSgpOwogICAg
IG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQoKTsKICAgICBtX2xheWVySW5m
by5iYWNrZmFjZVZpc2libGUgPSBiYWNrZmFjZVZpc2liaWxpdHkoKTsKQEAgLTQ1MCwyNCArNDUx
LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4o
KQogewogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
c2NhbGUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xh
eWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwotICAgICAgICBsYXllci0+c2V0Q29udGVudHNTY2Fs
ZShzY2FsZSk7Ci0gICAgfQotCi0gICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgaWYg
KG1fbWFpbkJhY2tpbmdTdG9yZSAmJiBtX21haW5CYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUo
KSA9PSBzY2FsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbm90aWZ5Q2hhbmdlKCk7Ci0KLSAg
ICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlID0gbV9tYWluQmFja2luZ1N0b3JlLnJlbGVhc2UoKTsK
LSAgICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUo
dGhpcywgVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6Y3JlYXRlKHRoaXMpKSk7
Ci0gICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKLX0KLQog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiB7CiAgICAg
bV9sYXllckluZm8uaXNSb290TGF5ZXIgPSBpc1Jvb3Q7CkBAIC00NzksMTEgKzQ2MiwyMyBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0
b3IoY29uc3QgRmxvYXRQb2ludCYgdAogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0VmlzaWJs
ZVJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOwogfQogCi12b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQor
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25z
dCBJbnRSZWN0JiBwYWdlVmlzaWJsZVJlY3QsIGZsb2F0IHNjYWxlKQogewotICAgIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gcmVjdDsKLSAgICBub3RpZnlDaGFuZ2UoKTsKLSAgICBtX21haW5CYWNr
aW5nU3RvcmUtPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgaWYgKG1fcGFnZVZpc2libGVSZWN0
ID09IHBhZ2VWaXNpYmxlUmVjdCAmJiBtX2NvbnRlbnRzU2NhbGUgPT0gc2NhbGUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcGFnZVZpc2libGVSZWN0ID0gcGFnZVZpc2libGVSZWN0OworICAg
IG1fY29udGVudHNTY2FsZSA9IHNjYWxlOworCisgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUg
fHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkgIT0gc2NhbGUpIHsKKyAgICAg
ICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZSA9IG1fbWFpbkJhY2tpbmdTdG9yZS5yZWxlYXNlKCk7
CisgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdT
dG9yZSh0aGlzLCBUaWxlZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhp
cykpKTsKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRDb250ZW50c1NjYWxlKHNjYWxl
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5hZGp1c3RWaXNpYmxl
UmVjdCgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsg
KytpKQorICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIoY2hpbGRyZW4oKVtpXSktPnNldFZpc2li
bGVDb250ZW50UmVjdEFuZFNjYWxlKHBhZ2VWaXNpYmxlUmVjdCwgc2NhbGUpOwogfQogCiB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNTE2LDcgKzUxMSwxMCBAQCBJbnRS
ZWN0IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkKIAog
SW50UmVjdCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkK
IHsKLSAgICByZXR1cm4gbV92aXNpYmxlQ29udGVudFJlY3Q7CisgICAgLy8gTm9uLWludmVydGli
bGUgbGF5ZXJzIGFyZSBub3QgdmlzaWJsZS4KKyAgICBpZiAoIW1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZWQoKS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICBy
ZXR1cm4gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS5tYXBSZWN0KG1fcGFn
ZVZpc2libGVSZWN0KTs7CiB9CiAKIENvbG9yIFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2lu
Z1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKQEAgLTYxMiw2ICs2MTAsMTkgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpyZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICBpZiAo
bV9pbWFnZSkKICAgICAgICAgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIH0KKwordm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCit7CisgICAg
bV9sYXllclRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zvcm0oKSk7CisgICAgbV9s
YXllclRyYW5zZm9ybS5zZXRQb3NpdGlvbihwb3NpdGlvbigpKTsKKyAgICBtX2xheWVyVHJhbnNm
b3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KCkpOworICAgIG1fbGF5ZXJUcmFuc2Zvcm0u
c2V0U2l6ZShzaXplKCkpOworICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0RmxhdHRlbmluZyghcHJl
c2VydmVzM0QoKSk7CisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShj
aGlsZHJlblRyYW5zZm9ybSgpKTsKKyAgICBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zv
cm1zKHBhcmVudCgpID8gJnRvV2ViR3JhcGhpY3NMYXllcihwYXJlbnQoKSktPm1fbGF5ZXJUcmFu
c2Zvcm0gOiAwKTsKKyAgICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBp
biB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0LgorICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+
YWRqdXN0VmlzaWJsZVJlY3QoKTsKK30KICNlbmRpZgogCiBzdGF0aWMgUGFzc093blB0cjxHcmFw
aGljc0xheWVyPiBjcmVhdGVXZWJHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggNTI5NTVkZTFlN2I3ZDY0NTc5N2JkNmFm
NzZjMGNhYzJhZDQyMmFmMC4uNzNmNDExNDAyNjdkYjgzZjFlODI4MTIyMWEzNmY2YmRiNTQ3MjIy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CisjaW5jbHVkZSAiTGF5ZXJUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIK
QEAgLTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAg
ICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9p
ZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKGNvbnN0IEludFJlY3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMTI5LDcg
KzEzMCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2FwKCkg
Y29uc3Q7CiAgICAgdm9pZCB1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCk7Ci0gICAgdm9p
ZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICB2b2lkIHJlY3JlYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQoKTsKQEAgLTE0MCw3ICsxNDAsOCBAQCBwcml2YXRlOgogICAgIFdl
YktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogbV9sYXllclRpbGVDbGllbnQ7CiAgICAgUmVm
UHRyPEltYWdlPiBtX2ltYWdlOwogICAgIEZsb2F0UmVjdCBtX25lZWRzRGlzcGxheVJlY3Q7Ci0g
ICAgSW50UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKKyAgICBJbnRSZWN0IG1fcGFnZVZpc2li
bGVSZWN0OworICAgIExheWVyVHJhbnNmb3JtIG1fbGF5ZXJUcmFuc2Zvcm07CiAgICAgYm9vbCBt
X25lZWRzRGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX21vZGlmaWVkIDogMTsKICAgICBib29sIG1f
Y29udGVudE5lZWRzRGlzcGxheSA6IDE7CkBAIC0xNTAsNiArMTUxLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG5vdGlmeUNoYW5nZSgpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisg
ICAgdm9pZCBjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOworCiAgICAgV2ViS2l0OjpX
ZWJMYXllclRyZWVUaWxlQ2xpZW50KiBtX2xheWVyVHJlZVRpbGVDbGllbnQ7CiAgICAgT3duUHRy
PFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAgICAgT3du
UHRyPFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlPiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhv
c3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCBkMmU5YzM4NGUyNGI4ZGYzYmMxN2MxYTBkY2VhMmZk
ZDMwNzBmYjljLi40ZWUxY2MzYjQ4N2M0ZGMxYWM5NDVhZjE3MGE5OTI4ZGYxMDczMmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjAsNyArMjAsNiBAQAogCiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiBtZXNzYWdlcyAtPiBMYXllclRyZWVIb3N0IHsKLSAgICBTZXRWaXNpYmxl
Q29udGVudFJlY3RGb3JMYXllcihpbnQgbGF5ZXJJRCwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxl
Q29udGVudFJlY3QpCiAgICAgU2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3RvcihX
ZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQogICAgIFNldFZpc2libGVDb250
ZW50UmVjdEFuZFNjYWxlKFdlYkNvcmU6OkludFJlY3QgY29udGVudFJlY3QsIGZsb2F0IHNjYWxl
KQogICAgIFJlbmRlck5leHRGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCmluZGV4IDI2NmEzYTk1ZGQw
YmM5YTU3MmU3NGE2NTQ2ZmU2ZTEwYjEwMzYyNGYuLmM4ZGQ4ZmI4MjIyYWQ5YzZhODNiODJjYWM0
MTgxZGMyMmJhMmRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCkBAIC0zOTYsMjIgKzM5NiwxMCBAQCB2
b2lkIExheWVyVHJlZUhvc3RRdDo6cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0
aWxlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6
OlJlbW92ZVRpbGVGb3JMYXllcihsYXllcklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRy
ZWVIb3N0UXQ6OnNldFZpc2libGVDb250ZW50UmVjdEZvckxheWVyKGludCBsYXllcklELCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gV2ViR3JhcGhpY3NMYXllcjo6bGF5ZXJCeUlEKGxheWVySUQpOwotICAgIGlmICghbGF5ZXIp
Ci0gICAgICAgIHJldHVybjsKLSAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QocmVjdCk7Ci0gICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChyZWN0KTsKLX0KLQogdm9pZCBMYXllclRyZWVI
b3N0UXQ6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGZsb2F0IHNjYWxlKQogewotICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFw
aGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAgICBpZiAoIWxheWVyKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwotICAgIHRvV2ViR3Jh
cGhpY3NMYXllcihtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QocmVjdCk7CisgICAgaWYgKG1fcm9vdExheWVyKQorICAgICAgICB0b1dlYkdy
YXBoaWNzTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRT
Y2FsZShyZWN0LCBzY2FsZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlW
ZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
TGF5ZXJUcmVlSG9zdFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
TGF5ZXJUcmVlSG9zdFF0LmgKaW5kZXggODUyN2M1MjhiOGI3MDMyY2FhZDEwMmU1ODExYzM3NWM2
ODI1MGY5Yy4uN2EyMTRmYWZkMTAwZDc5NmY2ZjQxZWI1YTIxNzQ3NzM5NzcyYzY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuaApAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFVwZGF0
ZUluZm8mKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQgdGls
ZUlEKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0Rm9yTGF5ZXIoaW50
IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwog
ICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122414</attachid>
            <date>2012-01-13 05:26:45 -0800</date>
            <delta_ts>2012-01-18 06:54:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74720-20120113142356.patch</filename>
            <type>text/plain</type>
            <size>12936</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBmNjUyMDNlMzI3YTYz
MDgxYTVhZTEyMWQ5Njg2MTkzNTQ5N2E1My4uYjYzZjg1OWE3ODczMzg4NGQ1YTkxMTZjMWQ5ZTA3
ZmQ5N2EzMmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEyLTAxLTEyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgVGV4
dHVyZU1hcHBlcjogU2ltcGxpZnkgdHJhbnNmb3JtIG1hbmlwdWxhdGlvbnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gTWFrZSBzdXJlIHRoYXQgdGhl
IHJlcGxpY2Egbm9kZSBoYXMgYSBjb21wbGV0ZSB0cmFuc2Zvcm0gYW5kCisgICAgICAgICAgdXNl
IGl0IGRpcmVjdGx5IGluc3RlYWQgb2Yga2VlcGluZyBhIGNvcHkgaW4gdGhlIHNvdXJjZS4KKyAg
ICAgICAgLSBBcHBseSB0aGUgb3JpZ2luIGFuZCBwb3NpdGlvbiB0cmFuc2xhdGlvbiBvbmx5IG9u
Y2UsIG9uIHRoZQorICAgICAgICAgIHRhcmdldCBhbmQgZGVzY2VuZGFudHMgdHJhbnNmb3Jtcy4K
KyAgICAgICAgLSBVc2UgdG8yZFRyYW5zZm9ybSgpIG9uICFwcmVzZXJ2ZXMzRCBsYXllcnMgaW5z
dGVhZCBvZiBkb2luZworICAgICAgICAgIHRoZSBmbGF0dGVuaW5nIG1hbnVhbGx5LgorICAgICAg
ICAtIFJlbW92ZSBtZW50aW9ucyBvZiBwZXJzcGVjdGl2ZSBhcyB0aGlzIGlzIGhhbmRsZWQgYnkg
V2ViQ29yZQorICAgICAgICAgIHRocm91Z2ggdGhlIGNoaWxkcmVuIHRyYW5zZm9ybS4KKyAgICAg
ICAgLSBBcHBseSB0aGUgaW52ZXJzZSB0YXJnZXQgdHJhbnNmb3JtIG9uIHRoZSByZXBsaWNhIG9u
bHkgd2hlcmUgaXQKKyAgICAgICAgICBpcyBuZWVkZWQgaW4gcGFpbnRSZWZsZWN0aW9uIGFzIGlu
IHBhaW50U2VsZiBpdCB1c2VzIHRoZSBmdWxsIHRyYW5zZm9ybS4KKyAgICAgICAgLSBNZXJnZSB0
aGUgYmFzZSBhbmQgbG9jYWwgdHJhbnNmb3Jtcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTm9kZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJOb2RlOjpjb21wdXRlVHJhbnNmb3Jtc1NlbGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVBbGxUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJOb2RlOjpwYWludFNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlck5vZGU6OnBhaW50UmVmbGVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmg6CisKKzIwMTItMDEtMTIgIEpvY2VseW4gVHVy
Y290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKwogICAgICAgICBUZXh0dXJlTWFw
cGVyOiBGaXggdGhlIGZpbGxzRm9yd2FyZCB0cmFuc2Zvcm0gYWRqdXN0bWVudCBpbiBzeW5jQW5p
bWF0aW9ucy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2MTg0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCmluZGV4IGE2NzlhNmNiMzdlYzI3ZWQ2
MjQ2N2QzZWVmNjY5NWNiMmI5Y2U2YjIuLjQ0ZjBjMzcwZjk2NjZjNTQ0ZjUxMTY5NWQzNDRjMTE5
OTQxNzNjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcApAQCAtNDcsMjQgKzQ3LDkgQEAg
VGV4dHVyZU1hcHBlck5vZGUqIFRleHR1cmVNYXBwZXJOb2RlOjpyb290TGF5ZXIoKQogCiB2b2lk
IFRleHR1cmVNYXBwZXJOb2RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCkKIHsKLSAgICBpZiAobV90cmFuc2Zvcm1zLmJhc2UgPT0gbWF0cml4KQotICAg
ICAgICByZXR1cm47Ci0KICAgICBtX3RyYW5zZm9ybXMuYmFzZSA9IG1hdHJpeDsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcHV0ZVBlcnNwZWN0aXZlVHJhbnNmb3JtSWZOZWVkZWQo
KQotewotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSB8fCBtX3N0YXRlLmNoaWxkcmVuVHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgRmxvYXRQ
b2ludCBjZW50ZXJQb2ludCA9IEZsb2F0UG9pbnQobV9zaXplLndpZHRoKCkgLyAyLCBtX3NpemUu
aGVpZ2h0KCkgLyAyKTsKLSAgICBtX3RyYW5zZm9ybXMucGVyc3BlY3RpdmUgPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpCi0gICAgICAgICAgICAudHJhbnNsYXRlKGNlbnRlclBvaW50LngoKSwgY2Vu
dGVyUG9pbnQueSgpKQotICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUuY2hpbGRyZW5UcmFu
c2Zvcm0pCi0gICAgICAgICAgICAudHJhbnNsYXRlKC1jZW50ZXJQb2ludC54KCksIC1jZW50ZXJQ
b2ludC55KCkpOwotfQotCiBpbnQgVGV4dHVyZU1hcHBlck5vZGU6OmNvdW50RGVzY2VuZGFudHNX
aXRoQ29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgKCFtX3Np
emUud2lkdGgoKSAmJiAhbV9zaXplLmhlaWdodCgpICYmIG1fc3RhdGUubWFza3NUb0JvdW5kcykp
CkBAIC04MSwyNiArNjYsMzMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29tcHV0ZU92ZXJs
YXBzSWZOZWVkZWQoKQogICAgIG1fc3RhdGUubWlnaHRIYXZlT3ZlcmxhcHMgPSBjb3VudERlc2Nl
bmRhbnRzV2l0aENvbnRlbnQoKSA+IDE7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNv
bXB1dGVSZXBsaWNhVHJhbnNmb3JtSWZOZWVkZWQoKQotewotICAgIGlmICghbV9zdGF0ZS5yZXBs
aWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhbnNmb3Jtcy5yZXBsaWNhID0K
LSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkKLSAgICAg
ICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV90cmFuc2Zvcm1zLmxvY2Fs
KQotICAgICAgICAgICAgLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3Jt
cy50YXJnZXQpLmludmVyc2UoKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1
dGVMb2NhbFRyYW5zZm9ybUlmTmVlZGVkKCkKK3ZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1
dGVUcmFuc2Zvcm1zU2VsZigpCiB7CiAgICAgZmxvYXQgb3JpZ2luWCA9IG1fc3RhdGUuYW5jaG9y
UG9pbnQueCgpICogbV9zaXplLndpZHRoKCk7CiAgICAgZmxvYXQgb3JpZ2luWSA9IG1fc3RhdGUu
YW5jaG9yUG9pbnQueSgpICogbV9zaXplLmhlaWdodCgpOwotICAgIG1fdHJhbnNmb3Jtcy5sb2Nh
bCA9Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCkKLSAgICAgICAgLnRyYW5zbGF0ZTNk
KG9yaWdpblggKyBtX3N0YXRlLnBvcy54KCksIG9yaWdpblkgKyBtX3N0YXRlLnBvcy55KCksIG1f
c3RhdGUuYW5jaG9yUG9pbnQueigpICkKLSAgICAgICAgLm11bHRpcGx5KG1fdHJhbnNmb3Jtcy5i
YXNlKQotICAgICAgICAudHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9zdGF0ZS5h
bmNob3JQb2ludC56KCkpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNm
b3JtOworICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9wYXJl
bnQtPm1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5kYW50czsKKyAgICBlbHNlIGlmIChtX2VmZmVjdFRh
cmdldCkKKyAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9lZmZlY3RUYXJnZXQtPm1fdHJhbnNm
b3Jtcy50YXJnZXQ7CisgICAgbV90cmFuc2Zvcm1zLnRhcmdldCA9CisgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4KHBhcmVudFRyYW5zZm9ybSkKKyAgICAgICAgICAgIC50cmFuc2xhdGUzZChv
cmlnaW5YICsgbV9zdGF0ZS5wb3MueCgpLCBvcmlnaW5ZICsgbV9zdGF0ZS5wb3MueSgpLCBtX3N0
YXRlLmFuY2hvclBvaW50LnooKSApCisgICAgICAgICAgICAubXVsdGlwbHkobV90cmFuc2Zvcm1z
LmJhc2UpOworCisgICAgLy8gVGhlIGRlc2NlbmRhbnRzIHRyYW5zZm9ybSB3aWxsIHRha2UgaXQg
ZnJvbSBoZXJlLCBpZiBuZWVkZWQuCisgICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRzID0g
bV90cmFuc2Zvcm1zLnRhcmdldDsKKyAgICBtX3RyYW5zZm9ybXMudGFyZ2V0LnRyYW5zbGF0ZTNk
KC1vcmlnaW5YLCAtb3JpZ2luWSwgLW1fc3RhdGUuYW5jaG9yUG9pbnQueigpKTsKKworICAgIGlm
IChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW4gY2Fz
ZSBhIHBhcmVudCBoYWQgcHJlc2VydmVzM0QgYW5kIHRoaXMgbGF5ZXIgaGFzIG5vdCwgZmxhdHRl
biBvdXIgY2hpbGRyZW4uCisgICAgaWYgKCFtX3N0YXRlLnByZXNlcnZlczNEKQorICAgICAgICBt
X3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMgPSBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMu
dG8yZFRyYW5zZm9ybSgpOworICAgIG1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5kYW50cy5tdWx0aXBs
eShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICBtX3RyYW5zZm9ybXMuZm9yRGVzY2Vu
ZGFudHMudHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9zdGF0ZS5hbmNob3JQb2lu
dC56KCkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21wdXRlQWxsVHJhbnNmb3Jt
cygpCkBAIC0xMDgsMzUgKzEwMCwxNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21wdXRl
QWxsVHJhbnNmb3JtcygpCiAgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZS5tYXNr
c1RvQm91bmRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb21wdXRlTG9jYWxUcmFuc2Zvcm1J
Zk5lZWRlZCgpOwotICAgIGNvbXB1dGVSZXBsaWNhVHJhbnNmb3JtSWZOZWVkZWQoKTsKLSAgICBj
b21wdXRlUGVyc3BlY3RpdmVUcmFuc2Zvcm1JZk5lZWRlZCgpOwotCi0gICAgVGV4dHVyZU1hcHBl
ck5vZGUqIHBhcmVudCA9IG1fcGFyZW50ID8gbV9wYXJlbnQgOiBtX2VmZmVjdFRhcmdldDsKLSAg
ICBtX3RyYW5zZm9ybXMudGFyZ2V0ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgocGFyZW50ID8gcGFy
ZW50LT5tX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KS5tdWx0aXBseShtX3RyYW5zZm9ybXMubG9jYWwpOworICAgIGNvbXB1dGVUcmFuc2Zvcm1zU2Vs
ZigpOwogCiAgICAgbV9zdGF0ZS52aXNpYmxlID0gbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkg
fHwgbV90cmFuc2Zvcm1zLnRhcmdldC5pbnZlcnNlKCkubTMzKCkgPj0gMDsKLSAgICBpZiAoIW1f
c3RhdGUudmlzaWJsZSkKLSAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVGhpcyB0cmFuc2Zvcm0g
aXMgb25seSBhcHBsaWVkIGlmIHVzaW5nIGEgdHdvLXBhc3MgZm9yIHRoZSByZXBsaWNhLCBiZWNh
dXNlIHRoZSB0cmFuc2Zvcm0gbmVlZHMgdG8gYmUgYWRqdXN0ZWQgdG8gdGhlIHNpemUgb2YgdGhl
IGludGVybWVkaWF0ZSBzdXJmYWNlLCBpbnN0ZWFmIG9mIHRoZSBzaXplIG9mIHRoZSBjb250ZW50
IGxheWVyLgotICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5tX3N0YXRlLnByZXNlcnZlczNEKQor
ICAgIGlmIChtX3BhcmVudCAmJiBtX3BhcmVudC0+bV9zdGF0ZS5wcmVzZXJ2ZXMzRCkKICAgICAg
ICAgbV90cmFuc2Zvcm1zLmNlbnRlclogPSBtX3RyYW5zZm9ybXMudGFyZ2V0Lm1hcFBvaW50KEZs
b2F0UG9pbnQzRChtX3NpemUud2lkdGgoKSAvIDIsIG1fc2l6ZS5oZWlnaHQoKSAvIDIsIDApKS56
KCk7CiAKLSAgICBpZiAoIW1fY2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMgPSBtX3RyYW5zZm9ybXMudGFyZ2V0OwotCi0g
ICAgaWYgKCFtX3N0YXRlLnByZXNlcnZlczNEKSB7Ci0gICAgICAgIG1fdHJhbnNmb3Jtcy5mb3JE
ZXNjZW5kYW50cyA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KAotICAgICAgICAgICAgICAgICAgICBt
X3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMubTExKCksIG1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5k
YW50cy5tMTIoKSwgMCwgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRzLm0xNCgpLAotICAgICAg
ICAgICAgICAgICAgICBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMubTIxKCksIG1fdHJhbnNm
b3Jtcy5mb3JEZXNjZW5kYW50cy5tMjIoKSwgMCwgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRz
Lm0yNCgpLAotICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCAwLAotICAgICAgICAgICAgICAg
ICAgICBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMubTQxKCksIG1fdHJhbnNmb3Jtcy5mb3JE
ZXNjZW5kYW50cy5tNDIoKSwgMCwgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRzLm00NCgpKTsK
LSAgICB9Ci0KLSAgICBtX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMubXVsdGlwbHkobV90cmFu
c2Zvcm1zLnBlcnNwZWN0aXZlKTsKKyAgICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCisgICAgICAg
IG1fc3RhdGUubWFza0xheWVyLT5jb21wdXRlQWxsVHJhbnNmb3JtcygpOworICAgIGlmIChtX3N0
YXRlLnJlcGxpY2FMYXllcikKKyAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmNvbXB1dGVB
bGxUcmFuc2Zvcm1zKCk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVUaWxl
cygpCkBAIC00MDEsNyArMzc1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxm
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICAgICAgICAg
IGZsb2F0IHJlcGxpY2FPcGFjaXR5ID0gMS4wOwogICAgICAgICAgICAgaWYgKG1fc3RhdGUucmVw
bGljYUxheWVyKSB7Ci0gICAgICAgICAgICAgICAgcmVwbGljYU1hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KG1fdHJhbnNmb3Jtcy50YXJnZXQpLnNjYWxlKDEuMCAvIHRpbGUuc2NhbGUpLm11
bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybXMubG9jYWwpOworICAgICAg
ICAgICAgICAgIHJlcGxpY2FNYXRyaXggPSBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV90cmFuc2Zv
cm1zLnRhcmdldC5zY2FsZSgxLjAgLyB0aWxlLnNjYWxlKTsKICAgICAgICAgICAgICAgICByZXBs
aWNhT3BhY2l0eSA9IG9wYWNpdHkgKiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9vcGFjaXR5Owog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSA9ICp0aWxl
LmZyb250QnVmZmVyLnRleHR1cmU7CkBAIC00MTgsNyArMzkyLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiAgICAgICAgIEJpdG1hcFRleHR1cmUqIHRleHR1cmUgPSBtX293bmVkVGlsZXNbaV0udGV4
dHVyZS5nZXQoKTsKICAgICAgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyICYmICFvcHRpb25z
LmlzU3VyZmFjZSkgewogICAgICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4
dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdEZvclRpbGVSZWN0KHRhcmdldFJlY3QsIG1fb3duZWRU
aWxlc1tpXS5yZWN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkubXVsdGlwbHkobV9zdGF0ZS5yZXBsaWNhTGF5
ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybXMudGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGFjaXR5ICogbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGljYU1hc2tUZXh0dXJlID8gcmVwbGlj
YU1hc2tUZXh0dXJlLmdldCgpIDogbWFza1RleHR1cmUuZ2V0KCkpOwogICAgICAgICB9CkBAIC00
MzAsNyArNDA0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0IFRl
eHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgaWYgKG1fY3VycmVudENvbnRl
bnQuY29udGVudFR5cGUgPT0gTWVkaWFDb250ZW50VHlwZSAmJiBtX2N1cnJlbnRDb250ZW50Lm1l
ZGlhKSB7CiAgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiAhb3B0aW9ucy5pc1N1
cmZhY2UpCiAgICAgICAgICAgICBtX2N1cnJlbnRDb250ZW50Lm1lZGlhLT5wYWludFRvVGV4dHVy
ZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChtX3RyYW5zZm9ybXMudGFyZ2V0KS5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXll
ci0+bV90cmFuc2Zvcm1zLmxvY2FsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9y
bXMudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BhY2l0eSAqIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX29wYWNpdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsaWNhTWFza1RleHR1cmUgPyByZXBsaWNhTWFza1RleHR1cmUuZ2V0KCkgOiBtYXNrVGV4dHVy
ZS5nZXQoKSk7CiAgICAgICAgIG1fY3VycmVudENvbnRlbnQubWVkaWEtPnBhaW50VG9UZXh0dXJl
TWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgbV90cmFuc2Zvcm1zLnRh
cmdldCwgb3BhY2l0eSwgb3B0aW9ucy5pc1N1cmZhY2UgPyAwIDogbWFza1RleHR1cmUuZ2V0KCkp
OwpAQCAtNDg1LDYgKzQ1OSwxMCBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxl
Y3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgIGNvbnN0
IGJvb2wgdXNlSW50ZXJtZWRpYXRlQnVmZmVyRm9yUmVwbGljYSA9IG1fc3RhdGUucmVwbGljYUxh
eWVyICYmIG9wdGlvbnMub3BhY2l0eSA8IDAuOTk7CiAgICAgY29uc3QgYm9vbCB1c2VJbnRlcm1l
ZGlhdGVCdWZmZXJGb3JNYXNrID0gbWFza1RleHR1cmUgJiYgcmVwbGljYU1hc2tUZXh0dXJlOwog
ICAgIGNvbnN0IEZsb2F0UmVjdCB2aWV3cG9ydFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRo
KCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgLy8gUmV2ZXJzZSB0aGlzIGxheWVyJ3Mg
dHJhbnNmb3JtIG9uIHRoZSByZXBsaWNhJ3MgdHJhbnNmb3JtIGFuZCB1c2UgaXQgd2l0aCB0aGUg
Y29udGVudHMKKyAgICAvLyBpbnRlcm1lZGlhdGUgc3VyZmFjZSwgYXBwbGllZCBpbiB0aGUgdmll
d3BvcnQgY29vcmRpbmF0ZSBzeXN0ZW0uCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGlj
YU1hdHJpeCA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybXMudGFyZ2V0OworICAg
IHJlcGxpY2FNYXRyaXgubXVsdGlwbHkobV90cmFuc2Zvcm1zLnRhcmdldC5pbnZlcnNlKCkpOwog
CiAgICAgLy8gVGhlIG1hc2sgaGFzIHRvIGJlIGFkanVzdGVkIHRvIHRhcmdldCBjb29yZGluYXRl
cy4KICAgICBpZiAobWFza1RleHR1cmUpIHsKQEAgLTUxNiw3ICs0OTQsNyBAQCBib29sIFRleHR1
cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYgb3B0aW9ucwogICAgIGlmICh1c2VJbnRlcm1lZGlhdGVCdWZmZXJGb3JSZXBsaWNhKSB7
CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhU3VyZmFjZSA9IG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChvcHRpb25zLnRleHR1cmVNYXBw
ZXItPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5k
U3VyZmFjZShyZXBsaWNhU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1h
cHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwgbV90cmFuc2Zv
cm1zLnJlcGxpY2EsIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX29wYWNpdHksIHJlcGxpY2FNYXNr
VGV4dHVyZS5nZXQoKSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1
cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwgcmVwbGljYU1hdHJpeCwgbV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwgcmVwbGljYU1hc2tUZXh0dXJlLmdldCgpKTsKICAgICAg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmll
d3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxLCBtYXNrVGV4dHVyZS5nZXQoKSk7
CiAgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+cmVsZWFzZVRleHR1cmVUb1Bvb2woc3Vy
ZmFjZS5nZXQoKSk7CiAgICAgICAgIHN1cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsKQEAgLTUyNiw3
ICs1MDQsNyBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24oY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogCiAgICAgLy8gRHJhdyB0aGUgcmVm
bGVjdGlvbi4KICAgICBpZiAoIXVzZUludGVybWVkaWF0ZUJ1ZmZlckZvclJlcGxpY2EpCi0gICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZp
ZXdwb3J0UmVjdCwgbV90cmFuc2Zvcm1zLnJlcGxpY2EsIG1fc3RhdGUucmVwbGljYUxheWVyLT5t
X29wYWNpdHksIHJlcGxpY2FNYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwgcmVw
bGljYU1hdHJpeCwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwgcmVwbGljYU1hc2tU
ZXh0dXJlLmdldCgpKTsKIAogICAgIC8vIERyYXcgdGhlIG9yaWdpbmFsLgogICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgb3B0aW9ucy5vcGFjaXR5LCBtYXNrVGV4dHVyZS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IDRlZTM3NTc0NzQ2ZmVmNzQyYTg2Y2U5YWVh
OTg0NzBhMjQxNDZjODIuLmU0YWMxYjFkMjQ0ZTdiZTM1YTFmNWZkNmVlYWY1OTFlYWY1ZDRiOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xNzUsMTEgKzE3NSw5IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlck5vZGUqIHJvb3RMYXllcigpOwogICAgIHZvaWQgY29t
cHV0ZUFsbFRyYW5zZm9ybXMoKTsKKyAgICB2b2lkIGNvbXB1dGVUcmFuc2Zvcm1zU2VsZigpOwog
ICAgIHZvaWQgY29tcHV0ZVZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcm9vdFZpc2libGVS
ZWN0KTsKLSAgICB2b2lkIGNvbXB1dGVQZXJzcGVjdGl2ZVRyYW5zZm9ybUlmTmVlZGVkKCk7Ci0g
ICAgdm9pZCBjb21wdXRlUmVwbGljYVRyYW5zZm9ybUlmTmVlZGVkKCk7CiAgICAgdm9pZCBjb21w
dXRlT3ZlcmxhcHNJZk5lZWRlZCgpOwotICAgIHZvaWQgY29tcHV0ZUxvY2FsVHJhbnNmb3JtSWZO
ZWVkZWQoKTsKICAgICB2b2lkIGNvbXB1dGVUaWxlcygpOwogICAgIHZvaWQgc3dhcENvbnRlbnRz
QnVmZmVycygpOwogICAgIGludCBjb3VudERlc2NlbmRhbnRzV2l0aENvbnRlbnQoKSBjb25zdDsK
QEAgLTIwOSwxMSArMjA3LDggQEAgcHJpdmF0ZToKICAgICBib29sIGhhc01vcmVUaGFuT25lVGls
ZSgpIGNvbnN0OwogICAgIHN0cnVjdCBUcmFuc2Zvcm1EYXRhIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGFyZ2V0OwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNh
OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmb3JEZXNjZW5kYW50czsKLSAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWw7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGJhc2U7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZlOwogICAgICAg
ICBmbG9hdCBjZW50ZXJaOwogICAgICAgICBUcmFuc2Zvcm1EYXRhKCkgeyB9CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122920</attachid>
            <date>2012-01-18 06:55:06 -0800</date>
            <delta_ts>2012-01-18 09:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74720-20120118155504.patch</filename>
            <type>text/plain</type>
            <size>27788</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMzNDQ5MTNkZGE0NGRk
NmUwYjMwYmUwODQxNzAxY2RjNjc5OTU4Ni4uMGVhOTc5YWM3ZTBhNmNiZDliMGQwYTg4ZTcyYjgy
N2Y1YWM1MzI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTE4ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBIYW5kbGUgdGhlIGxheWVycyB2aXNpYmxlIHJlY3QgY2FsY3VsYXRpb24gb24gdGhlIHdlYiBw
cm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgYWxsIHZpc2libGUgcmVjdCBjYWxjdWxhdGlvbiByZWxhdGVkIGNvZGUgZnJvbSBUZXh0
dXJlTWFwcGVyTm9kZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTm9kZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJOb2RlLmg6CisKIDIwMTItMDEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRyYWNrIEhUTUwgcmV2aXNp
b25zIHdoZW4gZWRpdGluZyBET00gYW5kIC8gb3IgdXBvbiBmcmVlIGZsb3cgZWRpdHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNGE1OTVmMzVlMGRjMmQ2NWFjMGNiMmFmY2Y0ZGM4NjM3OGM3NmI1My4uZjFhYjY3
ODUzNDg5Y2E2NGIyMTkyMTEzNTQ5YmU1NmMwNWM2MGJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDEyLTAxLTE4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBIYW5kbGUgdGhlIGxheWVycyB2aXNpYmxlIHJlY3Qg
Y2FsY3VsYXRpb24gb24gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbGF5ZXJzIG5vdyBnZXQgdGhlaXIgdmlzaWJsZSBy
ZWN0IG9uIHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIHRoZQorICAgICAgICByb290IGxheWVyIHdo
ZW4gdGhlIFVJIHByb2Nlc3MgY2FsbCBzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZSwKKyAg
ICAgICAgcHJldmlvdXNseSBvbmx5IHVzZWQgZm9yIHRoZSBub24tY29tcG9zaXRlZCBjb250ZW50
IGxheWVyLgorICAgICAgICBUaGUgcmVjdCBpcyB0aGVuIGNhcnJpZWQgZG93biB0aGUgbGF5ZXJz
IGluIHRoZSB0cmVlIHdoaWNoIGFwcGx5IGl0IHRoZSBpbnZlcnNlCisgICAgICAgIG9mIHRoZWly
IHRyYW5zZm9ybSBiZWZvcmUgaGFuZGluZyBpdCB0byB0aGVpciB0aWxlZCBiYWNraW5nIHN0b3Jl
LgorCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBsYXllcnMgZ2V0IGEgcHJvcGVyIHZp
c2libGUgcmVjdCByaWdodCBvbiBjcmVhdGlvbiwKKyAgICAgICAgYW5kIGFsc28gdGhhdCBzaW11
bHRhbmVvdXMgdmlzaWJsZSByZWN0IGFuZCBzY2FsZSBjaGFuZ2VzIGFyZSBhcHBsaWVkIHN5bmNo
cm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
OgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVEZXNrdG9wKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplVG91Y2gpOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZURlc2t0b3BWaWV3cG9ydFNpemUpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIE1ha2Ugc3VyZSB0
aGF0IHRoZSB2aXNpYmxlIHJlY3QgaXMgdXBkYXRlZCBmb3IgdGhlIGRlc2t0b3AgdmlldyBhcyB3
ZWxsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdFByb3h5OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNz
TGF5ZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OmFkZENoaWxkQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cmVw
bGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldE1hc2tM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxl
UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0QW5kU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuaDoKKwogMjAxMi0wMS0xMyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gVHJpZ2dlciBmb3JjaW5nIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIGZyb20gdGhlIFVJIHByb2Nlc3Mgc2lkZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5v
ZGUuY3BwCmluZGV4IDNiZmRmZGU1ODZmY2MyYzA0MzFjNGNlZTUyYTcxMGEzY2M5MzYwM2IuLjg2
YjU0ZDFiYWU0Nzc1NmIzN2ZiYzEyNzliMDc2NDE1ZTY4OWRjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJOb2RlLmNwcApAQCAtMTU3LDUzICsxNTcsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpj
b21wdXRlVGlsZXMoKQogICAgICAgICBtX293bmVkVGlsZXMucmVtb3ZlKHRpbGVzVG9SZW1vdmVb
aV0pOwogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi1zdGF0aWMgdm9pZCBjbGFt
cFJlY3QoSW50UmVjdCYgcmVjdCwgaW50IGRpbWVuc2lvbikKLXsKLSAgICByZWN0LnNoaWZ0WEVk
Z2VUbyhyZWN0LngoKSAtIHJlY3QueCgpICUgZGltZW5zaW9uKTsKLSAgICByZWN0LnNoaWZ0WUVk
Z2VUbyhyZWN0LnkoKSAtIHJlY3QueSgpICUgZGltZW5zaW9uKTsKLSAgICByZWN0LnNoaWZ0TWF4
WEVkZ2VUbyhyZWN0Lm1heFgoKSAtIHJlY3QueCgpICUgZGltZW5zaW9uICsgZGltZW5zaW9uKTsK
LSAgICByZWN0LnNoaWZ0TWF4WUVkZ2VUbyhyZWN0Lm1heFkoKSAtIHJlY3QueSgpICUgZGltZW5z
aW9uICsgZGltZW5zaW9uKTsKLX0KLQotYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29sbGVjdFZp
c2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiByZWN0TWFwLCBjb25zdCBGbG9hdFJlY3Qm
IHJvb3RWaXNpYmxlUmVjdCkKLXsKLSAgICBpZiAoIW1fc3RhdGUudmlzaWJsZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBleGlzdHMgPSBmYWxzZTsKLQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgZXhpc3RzID0gbV9j
aGlsZHJlbltpXS0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKHJlY3RNYXAsIHJvb3RWaXNp
YmxlUmVjdCkgfHwgZXhpc3RzOwotICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKLSAgICAgICAg
ZXhpc3RzID0gbV9zdGF0ZS5tYXNrTGF5ZXItPmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyhy
ZWN0TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKLSAgICBpZiAobV9zdGF0ZS5yZXBs
aWNhTGF5ZXIpCi0gICAgICAgIGV4aXN0cyA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5jb2xsZWN0
VmlzaWJsZUNvbnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8fCBleGlzdHM7
Ci0KLSAgICAvLyBOb24taW52ZXJ0aWJsZSBsYXllcnMgYXJlIG5vdCB2aXNpYmxlLgotICAgIGlm
ICghbV90cmFuc2Zvcm0uY29tYmluZWQoKS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJu
IGV4aXN0czsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgdGlsaW5nVGhyZXNob2xkID0gMjU2Owot
Ci0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpOwotICAgIGlmIChtX3NpemUud2lkdGgoKSA+IHRpbGluZ1RocmVzaG9s
ZCB8fCBtX3NpemUuaGVpZ2h0KCkgPiB0aWxpbmdUaHJlc2hvbGQpIHsKLSAgICAgICAgSW50UmVj
dCB2aXNpYmxlUmVjdEluTG9jYWxDb29yZGluYXRlcyA9IGVuY2xvc2luZ0ludFJlY3QoVHJhbnNm
b3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0uY29tYmluZWQoKSkuaW52ZXJzZSgpLm1hcFJlY3Qo
cm9vdFZpc2libGVSZWN0KSk7Ci0gICAgICAgIGlmICghdmlzaWJsZVJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xhbXBSZWN0KHZpc2libGVSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzLCBnVGlsZURpbWVuc2lvbik7Ci0gICAgICAgIHZpc2libGVDb250ZW50c1Jl
Y3QuaW50ZXJzZWN0KHZpc2libGVSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKTsKLSAgICB9Ci0KLSAg
ICBpZiAodmlzaWJsZUNvbnRlbnRzUmVjdC5pc0VtcHR5KCkgfHwgdmlzaWJsZUNvbnRlbnRzUmVj
dCA9PSBtX3N0YXRlLnZpc2libGVSZWN0KQotICAgICAgICByZXR1cm4gZXhpc3RzOwotCi0gICAg
bV9zdGF0ZS52aXNpYmxlUmVjdCA9IHZpc2libGVDb250ZW50c1JlY3Q7Ci0gICAgcmVjdE1hcC5h
ZGQodGhpcywgbV9zdGF0ZS52aXNpYmxlUmVjdCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNl
bmRpZgotCiBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpoYXNNb3JlVGhhbk9uZVRpbGUoKSBjb25z
dAogewogICAgIGludCB0aWxlcyA9IDA7CkBAIC0yMzIsNyArMTg1LDYgQEAgYm9vbCBUZXh0dXJl
TWFwcGVyTm9kZTo6aGFzTW9yZVRoYW5PbmVUaWxlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLQogdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cmVuZGVyQ29udGVudChUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKaW5kZXggMzk2NWVlNmNiM2I3
ZjNlZWFiMWU5M2YyMjhlNjljYzBjMTAyOTAyNy4uM2RjYjI4MzNjOWRjOThmMDZiMzJmNjY1ZDg3
ZDljOTZkOTg3YTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKQEAgLTE2Niw3ICsxNjYsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RpbGVCYWNrQnVmZmVyKGludCBpZCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgdm9pZCog
Yml0cywgQml0bWFwVGV4dHVyZTo6UGl4ZWxGb3JtYXQpOwogICAgIHZvaWQgc2V0VGlsZUJhY2tC
dWZmZXJUZXh0dXJlRm9yRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50IGlkLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIEJpdG1hcFRleHR1
cmUqKTsKICAgICB2b2lkIGNsZWFyQWxsRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VUaWxlcygpOwot
ICAgIGJvb2wgY29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwdXJnZU5vZGVUZXh0dXJlc1JlY3Vyc2l2ZSgpOwogI2Vu
ZGlmCiAgICAgdm9pZCBzZXRJRChpbnQgaWQpIHsgbV9pZCA9IGlkOyB9CkBAIC0yODYsNyArMjg1
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBuZWVkc1Jlc2V0OiAxOwogICAgICAgICBib29s
IG1pZ2h0SGF2ZU92ZXJsYXBzIDogMTsKICAgICAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAg
ICAgIEludFJlY3QgdmlzaWJsZVJlY3Q7CiAgICAgICAgIGZsb2F0IGNvbnRlbnRTY2FsZTsKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgVGlsZU93bmVyc2hpcCB0aWxlT3du
ZXJzaGlwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKaW5kZXggNmIxMTg2Y2NiYzNlNWZlODZjZWEzNTIyZTcxNzRhMTAyMWRjMzk3OS4u
MDMyN2E3YTc5NDZhNzllZjIxZDg3YTQwZTUzNjVjNDU2MWMwMTZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC00Nyw5ICs0
NywxMyBAQAogI2luY2x1ZGUgPFFEZWNsYXJhdGl2ZUVuZ2luZT4KICNpbmNsdWRlIDxRRmlsZURp
YWxvZz4KICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0NhbnZhcz4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogUVF1aWNrV2ViVmlld1ByaXZhdGU6OlFR
dWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQogICAgIDogcV9wdHIo
dmlld3BvcnQpCiAgICAgLCBhbGVydERpYWxvZygwKQpAQCAtMTM0LDYgKzEzOCw3IEBAIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVEZXNrdG9wKFFRdWlja1dlYlZpZXcqIHZp
ZXdwb3J0KQogICAgIGludGVyYWN0aW9uRW5naW5lLnJlc2V0KDApOwogICAgIHBhZ2VWaWV3LT5k
LT5ldmVudEhhbmRsZXItPnNldFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoMCk7CiAgICAgZW5h
YmxlTW91c2VFdmVudHMoKTsKKyAgICB1cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCk7CiB9CiAK
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVUb3VjaChRUXVpY2tXZWJWaWV3
KiB2aWV3cG9ydCkKQEAgLTE0NCw3ICsxNDksNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRl
Ojppbml0aWFsaXplVG91Y2goUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCiAgICAgUU9iamVjdDo6
Y29ubmVjdChpbnRlcmFjdGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTChjb250ZW50U3VzcGVuZFJl
cXVlc3RlZCgpKSwgdmlld3BvcnQsIFNMT1QoX3Ffc3VzcGVuZCgpKSk7CiAgICAgUU9iamVjdDo6
Y29ubmVjdChpbnRlcmFjdGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTChjb250ZW50UmVzdW1lUmVx
dWVzdGVkKCkpLCB2aWV3cG9ydCwgU0xPVChfcV9yZXN1bWUoKSkpOwogICAgIFFPYmplY3Q6OmNv
bm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwodmlld3BvcnRUcmFqZWN0b3J5
VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJikpLCB2aWV3cG9ydCwgU0xPVChfcV92aWV3cG9y
dFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSkpOwotICAgIHVwZGF0ZVZp
ZXdwb3J0U2l6ZSgpOworICAgIHVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKCk7CiB9CiAKIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQpAQCAtMzE4LDcgKzMyMywxOSBA
QCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vblJlY2VpdmVkUmVzcG9uc2VGcm9tRG93
bmxvYWQoUVdlYkRvd25sb2FkSXRlbSogZAogICAgIGVtaXQgcS0+ZXhwZXJpbWVudGFsKCktPmRv
d25sb2FkUmVxdWVzdGVkKGRvd25sb2FkSXRlbSk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1
cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCkKK3sKKyAgICBRX1EoUVF1aWNrV2ViVmlldyk7Cisg
ICAgUVNpemUgdmlld3BvcnRTaXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6ZSgp
OworICAgIHBhZ2VWaWV3LT5zZXRXaWR0aCh2aWV3cG9ydFNpemUud2lkdGgoKSk7CisgICAgcGFn
ZVZpZXctPnNldEhlaWdodCh2aWV3cG9ydFNpemUuaGVpZ2h0KCkpOworICAgIC8vIFRoZSBmaXhl
ZCBsYXlvdXQgaXMgaGFuZGxlZCBieSB0aGUgRnJhbWVWaWV3IGFuZCB0aGUgZHJhd2luZyBhcmVh
IGRvZXNuJ3QgYmVoYXZlIGRpZmZlcmVudGx5CisgICAgLy8gd2V0aGVyIGl0cyBmaXhlZCBvciBu
b3QuIFdlIHN0aWxsIG5lZWQgdG8gdGVsbCB0aGUgZHJhd2luZyBhcmVhIHdoaWNoIHBhcnQgb2Yg
aXQKKyAgICAvLyBoYXMgdG8gYmUgcmVuZGVyZWQgb24gdGlsZXMsIGFuZCBpbiBkZXNrdG9wIG1v
ZGUgaXQncyBhbGwgb2YgaXQuCisgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNp
emUpLCAxLjApOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVUb3VjaFZp
ZXdwb3J0U2l6ZSgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIFFTaXplIHZpZXdw
b3J0U2l6ZSA9IHEtPmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKQEAgLTEwMDEsMTEg
KzEwMTgsMTAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJl
Y3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKICAgICBRX0QoUVF1aWNrV2ViVmll
dyk7CiAgICAgUVF1aWNrSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9t
ZXRyeSk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkp
IHsKLSAgICAgICAgaWYgKGQtPnBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZp
b3VyKCkpIHsKLSAgICAgICAgICAgIGQtPnBhZ2VWaWV3LT5zZXRXaWR0aChuZXdHZW9tZXRyeS53
aWR0aCgpKTsKLSAgICAgICAgICAgIGQtPnBhZ2VWaWV3LT5zZXRIZWlnaHQobmV3R2VvbWV0cnku
aGVpZ2h0KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGQtPnVwZGF0ZVZpZXdwb3J0
U2l6ZSgpOworICAgICAgICBpZiAoZC0+cGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BC
ZWhhdmlvdXIoKSkKKyAgICAgICAgICAgIGQtPnVwZGF0ZURlc2t0b3BWaWV3cG9ydFNpemUoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZC0+dXBkYXRlVG91Y2hWaWV3cG9ydFNpemUoKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaAppbmRleCBlOGU2YmY3MGRmZmVmODViY2U5OTIzMzJmY2ZiYjEyY2Fh
YzBkZmMxLi5iMTQwNjY5YjhlMTc2OWFjMmJlNjFhMWU2OTA5YTdkZTU2MTQ2Yzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5o
CkBAIC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncyk7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKTsKIAotICAgIHZvaWQgdXBkYXRlVmlld3BvcnRT
aXplKCk7CisgICAgdm9pZCB1cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCk7CisgICAgdm9pZCB1
cGRhdGVUb3VjaFZpZXdwb3J0U2l6ZSgpOwogICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6Q29uc3RyYWludHMgY29tcHV0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKIAogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAppbmRleCBkNTI4MWQzODJmMjBkNjExMWU0ZGYz
MjZmOTA2MTFiNzI2MGRhYTI3Li44OWQ1ZmJlOGZlMTUzNmViODlkNzBiM2ZjZGM4MWVjY2EyMzNi
NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5o
CkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZURpcmVjdGx5Q29tcG9z
aXRlZEltYWdlKGludDY0X3QsIGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
KTsKICAgICB2b2lkIGRlc3Ryb3lEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90KTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwot
ICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdEZvckxheWVyKFdlYkxheWVySUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQ
cm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJv
eHlRdC5jcHAKaW5kZXggODY1MDY5ODg0ZGUxNGRiZWNiYThiMWJmZTdjMTY2OWM0OWRhMWNlOS4u
ZjlhYmY0OTI2MGUwNWFlMTllOTU4NWY4OTc3MDFmNWVlMjgwYzBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCkBAIC0x
ODQsNyArMTg0LDYgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnBhaW50VG9DdXJyZW50R0xD
b250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQKIAogICAgIEdMaW50IHZpZXdw
b3J0WzRdOwogICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KTsKLSAgICBJ
bnRSZWN0IHZpZXdwb3J0UmVjdCh2aWV3cG9ydFswXSwgdmlld3BvcnRbMV0sIHZpZXdwb3J0WzJd
LCB2aWV3cG9ydFszXSk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZSh2aWV3cG9ydFsyXSwgdmlld3BvcnRbM10pKTsKICAgICBub2RlLT5zZXRUZXh0dXJlTWFw
cGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBh
aW50aW5nKCk7CkBAIC0xOTcsMjAgKzE5Niw2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5Ojpw
YWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0CiAg
ICAgfQogCiAgICAgbm9kZS0+cGFpbnQoKTsKLQotICAgIFRleHR1cmVNYXBwZXJOb2RlOjpOb2Rl
UmVjdE1hcCBub2RlVmlzdWFsQ29udGVudHNSZWN0TWFwOwotICAgIGlmIChub2RlLT5jb2xsZWN0
VmlzaWJsZUNvbnRlbnRzUmVjdHMobm9kZVZpc3VhbENvbnRlbnRzUmVjdE1hcCwgdmlld3BvcnRS
ZWN0KSkgewotICAgICAgICBUZXh0dXJlTWFwcGVyTm9kZTo6Tm9kZVJlY3RNYXA6Oml0ZXJhdG9y
IGVuZEl0ZXJhdG9yID0gbm9kZVZpc3VhbENvbnRlbnRzUmVjdE1hcC5lbmQoKTsKLSAgICAgICAg
Zm9yIChUZXh0dXJlTWFwcGVyTm9kZTo6Tm9kZVJlY3RNYXA6Oml0ZXJhdG9yIGl0ID0gbm9kZVZp
c3VhbENvbnRlbnRzUmVjdE1hcC5iZWdpbigpOyBpdCAhPSBlbmRJdGVyYXRvcjsgKytpdCkgewot
ICAgICAgICAgICAgV2ViTGF5ZXJJRCBsYXllcklEID0gaXQtPmZpcnN0LT5pZCgpOwotICAgICAg
ICAgICAgLy8gYXZvaWQgdXBkYXRpbmcgbm9uLXN5bmNlZCByb290IGxheWVyCi0gICAgICAgICAg
ICBpZiAoIWxheWVySUQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBJ
bnRSZWN0IHZpc2libGVSZWN0ID0gSW50UmVjdChpdC0+c2Vjb25kKTsKLSAgICAgICAgICAgIHNl
dFZpc2libGVDb250ZW50c1JlY3RGb3JMYXllcihsYXllcklELCB2aXNpYmxlUmVjdCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CiAKICAg
ICBpZiAobm9kZS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkgewpA
QCAtMjI5LDExICsyMTQsNiBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVmlld3Bv
cnQoKQogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9p
ZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3RGb3JMYXllcihXZWJM
YXllcklEIGxheWVySUQsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgbV9kcmF3aW5nQXJl
YVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdDo6
U2V0VmlzaWJsZUNvbnRlbnRSZWN0Rm9yTGF5ZXIobGF5ZXJJRCwgcmVjdCksIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7Ci19Ci0KIGludCBMYXllclRyZWVIb3N0UHJveHk6
OnJlbW90ZVRpbGVJRFRvTm9kZVRpbGVJRChpbnQgdGlsZUlEKSBjb25zdAogewogICAgIEhhc2hN
YXA8aW50LCBpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZVRvTm9kZVRpbGUuZmluZCh0
aWxlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTNhMDFmNDBiNTk0OGIzODky
MTc1MDljNzAyY2Q0YTJiZGU4ZTBkNS4uNGMxZWNiN2NkNDNlM2U4MDJiNDVmYzUzNzE4MGQ3N2Jl
NTc5NGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC00MSw4ICs0MSw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNv
bnN0IGZsb2F0IGdUaWxlRGltZW5zaW9uID0gMTAyNC4wOwotCiBzdGF0aWMgSGFzaE1hcDxXZWJM
YXllcklELCBXZWJHcmFwaGljc0xheWVyKj4mIGxheWVyQnlJRE1hcCgpCiB7CiAgICAgc3RhdGlj
IEhhc2hNYXA8V2ViTGF5ZXJJRCwgV2ViR3JhcGhpY3NMYXllcio+IGdsb2JhbE1hcDsKQEAgLTEw
OCw3ICsxMDYsNyBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZl
Y3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBX
ZWJHcmFwaGljc0xheWVyKiBjaGlsZCA9IHRvV2ViR3JhcGhpY3NMYXllcihjaGlsZHJlbltpXSk7
Ci0gICAgICAgIGNoaWxkLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAg
ICAgIGNoaWxkLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3Zpc2libGVQYWdlQ29u
dGVudHNSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogICAgICAgICBjaGlsZC0+bm90aWZ5Q2hhbmdl
KCk7CiAgICAgfQogICAgIG5vdGlmeUNoYW5nZSgpOwpAQCAtMTE4LDcgKzExNiw3IEBAIGJvb2wg
V2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIq
PiYgY2hpbGRyZW4pCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKLSAgICB0
b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2Fs
ZSk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUobV92aXNpYmxlUGFnZUNvbnRlbnRzUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKICAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlD
aGFuZ2UoKTsKIH0KQEAgLTEyNiw3ICsxMjQsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFk
ZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRD
aGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFw
aGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICB0b1dlYkdyYXBo
aWNzTGF5ZXIobGF5ZXIpLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAg
dG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUo
bV92aXNpYmxlUGFnZUNvbnRlbnRzUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKICAgICB0b1dlYkdy
YXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsK
IH0KQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJ
bmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQogdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBz
aWJsaW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxp
bmcpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldENvbnRlbnRzU2NhbGUobV9j
b250ZW50c1NjYWxlKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRWaXNpYmxl
Q29udGVudFJlY3RBbmRTY2FsZShtX3Zpc2libGVQYWdlQ29udGVudHNSZWN0LCBtX2NvbnRlbnRz
U2NhbGUpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwog
ICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTQyLDcgKzE0MCw3IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NM
YXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRCZWxvdyhsYXllciwgc2libGluZyk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVy
KGxheWVyKS0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3Jh
cGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fdmlzaWJs
ZVBhZ2VDb250ZW50c1JlY3QsIG1fY29udGVudHNTY2FsZSk7CiAgICAgdG9XZWJHcmFwaGljc0xh
eWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiB9CkBAIC0x
NTQsNyArMTUyLDcgQEAgYm9vbCBXZWJHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQoR3JhcGhp
Y3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0MKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIG5vdGlmeUNoYW5nZSgpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihvbGRDaGls
ZCktPm5vdGlmeUNoYW5nZSgpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNl
dENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIo
bmV3Q2hpbGQpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3Zpc2libGVQYWdlQ29u
dGVudHNSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihuZXdD
aGlsZCktPm5vdGlmeUNoYW5nZSgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzY5LDcgKzM2
Nyw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5ZXIgPSB0b1dlYkdy
YXBoaWNzTGF5ZXIobGF5ZXIpOwogICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldExheWVyVHJlZVRp
bGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKICAgICB3ZWJHcmFwaGljc0xheWVyLT5z
ZXRNYXNrVGFyZ2V0KHRoaXMpOwotICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzU2Nh
bGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3RBbmRTY2FsZShtX3Zpc2libGVQYWdlQ29udGVudHNSZWN0LCBtX2NvbnRlbnRzU2Nh
bGUpOwogICAgIHdlYkdyYXBoaWNzTGF5ZXItPm5vdGlmeUNoYW5nZSgpOwogICAgIG5vdGlmeUNo
YW5nZSgpOwogCkBAIC00MDYsOSArNDA0LDYgQEAgV2ViTGF5ZXJJRCBXZWJHcmFwaGljc0xheWVy
OjppZCgpIGNvbnN0CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3Rh
dGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKLSAgICAgICAgY2hpbGRyZW4oKVtpXS0+c3luY0NvbXBv
c2l0aW5nU3RhdGUocmVjdCk7Ci0KICAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRv
V2ViR3JhcGhpY3NMYXllcihtYXNrTGF5ZXIoKSkpCiAgICAgICAgIG1hc2stPnN5bmNDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogCkBAIC00MTYsNiArNDExLDkgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgICAgIHJlcGxpY2EtPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpOwogCiAgICAgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAg
IGNoaWxkcmVuKClbaV0tPnN5bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCiBXZWJHcmFw
aGljc0xheWVyKiB0b1dlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkBAIC00
MzMsNiArNDMxLDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGlmICghbV9tb2RpZmllZCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgY29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKTsKICAgICBtX2xheWVySW5m
by5uYW1lID0gbmFtZSgpOwogICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9yUG9p
bnQoKTsKICAgICBtX2xheWVySW5mby5iYWNrZmFjZVZpc2libGUgPSBiYWNrZmFjZVZpc2liaWxp
dHkoKTsKQEAgLTQ3MywyNyArNDcyLDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50QmVnaW4oKQogewogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwotICAgICAgICBs
YXllci0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci0gICAgfQotCi0gICAgaWYgKFdlYkdyYXBo
aWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQotICAgICAg
ICBtYXNrLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKLQotICAgIG1fY29udGVudHNTY2FsZSA9
IHNjYWxlOwotICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUgJiYgbV9tYWluQmFja2luZ1N0b3Jl
LT5jb250ZW50c1NjYWxlKCkgPT0gc2NhbGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG5vdGlm
eUNoYW5nZSgpOwotCi0gICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZSA9IG1fbWFpbkJhY2tpbmdT
dG9yZS5yZWxlYXNlKCk7Ci0gICAgbV9tYWluQmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRp
bGVkQmFja2luZ1N0b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6
OmNyZWF0ZSh0aGlzKSkpOwotICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2Fs
ZShzY2FsZSk7Ci19Ci0KIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wg
aXNSb290KQogewogICAgIG1fbGF5ZXJJbmZvLmlzUm9vdExheWVyID0gaXNSb290OwpAQCAtNTA1
LDEzICs0ODMsMjUgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJl
Y3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHQKICAgICBtX21haW5CYWNraW5n
U3RvcmUtPnNldFZpc2libGVSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsK
IH0KIAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0QW5kU2NhbGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVBhZ2VDb250ZW50c1JlY3QsIGZsb2F0
IHNjYWxlKQogewotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gcmVjdDsKLSAgICBub3RpZnlD
aGFuZ2UoKTsKLSAgICBtX21haW5CYWNraW5nU3RvcmUtPmFkanVzdFZpc2libGVSZWN0KCk7Cisg
ICAgaWYgKG1fdmlzaWJsZVBhZ2VDb250ZW50c1JlY3QgPT0gdmlzaWJsZVBhZ2VDb250ZW50c1Jl
Y3QgJiYgbV9jb250ZW50c1NjYWxlID09IHNjYWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3Zpc2libGVQYWdlQ29udGVudHNSZWN0ID0gdmlzaWJsZVBhZ2VDb250ZW50c1JlY3Q7CisgICAg
bV9jb250ZW50c1NjYWxlID0gc2NhbGU7CisKKyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSB8
fCBtX21haW5CYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSAhPSBzY2FsZSkgeworICAgICAg
ICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlID0gbV9tYWluQmFja2luZ1N0b3JlLnJlbGVhc2UoKTsK
KyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRpbGVkQmFja2luZ1N0
b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6OmNyZWF0ZSh0aGlz
KSkpOworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENvbnRlbnRzU2NhbGUoc2NhbGUp
OworICAgIH0gZWxzZQorICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmFkanVzdFZpc2libGVS
ZWN0KCk7CisKICAgICBpZiAobWFza0xheWVyKCkpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXll
cihtYXNrTGF5ZXIoKSktPnNldFZpc2libGVDb250ZW50UmVjdChyZWN0KTsKKyAgICAgICAgdG9X
ZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2Nh
bGUodmlzaWJsZVBhZ2VDb250ZW50c1JlY3QsIHNjYWxlKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIHRvV2ViR3JhcGhpY3NMYXll
cihjaGlsZHJlbigpW2ldKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUodmlzaWJsZVBh
Z2VDb250ZW50c1JlY3QsIHNjYWxlKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxl
ZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKQEAgLTU0NCw3ICs1MzQsMTAgQEAgSW50UmVjdCBXZWJHcmFwaGljc0xheWVyOjp0
aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCiAKIEludFJlY3QgV2ViR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0OworICAgIC8vIE5vbi1pbnZlcnRpYmxlIGxheWVycyBhcmUgbm90IHZpc2li
bGUuCisgICAgaWYgKCFtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaXNJbnZlcnRpYmxlKCkp
CisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmFuc2Zvcm0u
Y29tYmluZWQoKS5pbnZlcnNlKCkubWFwUmVjdChtX3Zpc2libGVQYWdlQ29udGVudHNSZWN0KTsK
IH0KIAogQ29sb3IgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdApAQCAtNjc1LDYgKzY2OCwyMCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldExheWVyVHJlZVRpbGVDbGllbnQoV2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBj
bAogICAgICAgICBtX2xheWVyVHJlZVRpbGVDbGllbnQtPmRpZERlbGV0ZUxheWVyKGlkKCkpOwog
ICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudCA9IGNsaWVudDsKIH0KKwordm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCit7CisgICAgLy8gRklYTUU6
IENvbnNpZGVyIHRyYW5zZm9ybSBhbmltYXRpb25zIGluIHRoZSB2aXNpYmxlIHJlY3QgY2FsY3Vs
YXRpb24uCisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zvcm0o
KSk7CisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRQb3NpdGlvbihwb3NpdGlvbigpKTsKKyAgICBt
X2xheWVyVHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KCkpOworICAgIG1fbGF5
ZXJUcmFuc2Zvcm0uc2V0U2l6ZShzaXplKCkpOworICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Rmxh
dHRlbmluZyghcHJlc2VydmVzM0QoKSk7CisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJl
blRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKKyAgICBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gdG9XZWJHcmFwaGljc0xheWVyKHBhcmVudCgpKS0+
bV9sYXllclRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKKyAgICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0
aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0LgorICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+YWRq
dXN0VmlzaWJsZVJlY3QoKTsKK30KICNlbmRpZgogCiBzdGF0aWMgUGFzc093blB0cjxHcmFwaGlj
c0xheWVyPiBjcmVhdGVXZWJHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggYjc1MDliMzM0ZjJmNTRkOWQyN2UzZmNiZTUy
MTlhMTBhZDcxNmJhMy4uODE1ZDI2MWYwYzA3NTdhYmEzOTgyNDM3NDc2NzVhYzIxODJkN2I1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiTGF5ZXJUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAg
LTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAg
dm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBz
ZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0
KGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxl
KGNvbnN0IEludFJlY3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVu
dFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMTMyLDcgKzEz
Myw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2FwKCkgY29u
c3Q7CiAgICAgdm9pZCB1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCk7Ci0gICAgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7
CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICB2b2lkIHJlY3JlYXRlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoKTsKQEAgLTE0Myw3ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJbWFnZT4gbV9pbWFnZTsKICAgICBHcmFwaGljc0xheWVyKiBtX21hc2tUYXJnZXQ7CiAgICAg
RmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKLSAgICBJbnRSZWN0IG1fdmlzaWJsZUNvbnRl
bnRSZWN0OworICAgIEludFJlY3QgbV9wYWdlVmlzaWJsZVJlY3Q7CisgICAgTGF5ZXJUcmFuc2Zv
cm0gbV9sYXllclRyYW5zZm9ybTsKICAgICBib29sIG1fbmVlZHNEaXNwbGF5IDogMTsKICAgICBi
b29sIG1fbW9kaWZpZWQgOiAxOwogICAgIGJvb2wgbV9jb250ZW50TmVlZHNEaXNwbGF5IDogMTsK
QEAgLTE1Myw2ICsxNTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKCk7CiAK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2b2lkIGNvbXB1dGVUcmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCk7CisKICAgICBXZWJLaXQ6OldlYkxheWVyVHJlZVRpbGVDbGllbnQqIG1f
bGF5ZXJUcmVlVGlsZUNsaWVudDsKICAgICBPd25QdHI8V2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsKICAgICBPd25QdHI8V2ViQ29yZTo6VGlsZWRCYWNraW5n
U3RvcmU+IG1fcHJldmlvdXNCYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCmluZGV4
IGQyZTljMzg0ZTI0YjhkZjNiYzE3YzFhMGRjZWEyZmRkMzA3MGZiOWMuLjRlZTFjYzNiNDg3YzRk
YzFhYzk0NWFmMTcwYTk5MjhkZjEwNzMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0y
MCw3ICsyMCw2IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIG1lc3NhZ2VzIC0+
IExheWVyVHJlZUhvc3QgewotICAgIFNldFZpc2libGVDb250ZW50UmVjdEZvckxheWVyKGludCBs
YXllcklELCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdCkKICAgICBTZXRWaXNp
YmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKFdlYkNvcmU6OkZsb2F0UG9pbnQgdHJhamVj
dG9yeVZlY3RvcnkpCiAgICAgU2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoV2ViQ29yZTo6
SW50UmVjdCBjb250ZW50UmVjdCwgZmxvYXQgc2NhbGUpCiAgICAgUmVuZGVyTmV4dEZyYW1lKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRy
ZWVIb3N0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVy
VHJlZUhvc3RRdC5jcHAKaW5kZXggMzQxZmI2OWU0MWU2YmQ2ODNjNDczYjZlMjNkOWE5N2FhYmNm
NmFmMi4uMThiN2ZhY2E0ZDA3MzRlOTNhMDAwY2EwMmQ5MzdkZGIwYzdmNTMxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhv
c3RRdC5jcHAKQEAgLTM5OCwyMiArMzk4LDEwIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpyZW1v
dmVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKICAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6UmVtb3ZlVGlsZUZvckxheWVyKGxheWVy
SUQsIHRpbGVJRCkpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRl
bnRSZWN0Rm9yTGF5ZXIoaW50IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
Ci17Ci0gICAgV2ViR3JhcGhpY3NMYXllciogbGF5ZXIgPSBXZWJHcmFwaGljc0xheWVyOjpsYXll
ckJ5SUQobGF5ZXJJRCk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0dXJuOwotICAgIEZs
b2F0UmVjdCB2aXNpYmxlUmVjdChyZWN0KTsKLSAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KHJlY3QpOwotfQotCiB2b2lkIExheWVyVHJlZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0QW5kU2NhbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgV2Vi
R3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobV9yb290TGF5ZXIuZ2V0
KCkpOwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBsYXllci0+c2V0Q29u
dGVudHNTY2FsZShzY2FsZSk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50UmVjdChyZWN0KTsKKyAgICBp
ZiAobV9yb290TGF5ZXIpCisgICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5n
ZXQoKSktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKHJlY3QsIHNjYWxlKTsKIH0KIAog
dm9pZCBMYXllclRyZWVIb3N0UXQ6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0
b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCBh
OTFjNTJiZjc1Y2YzZjk2YWFmOGQwMzIyZjhmNmI0NTNhODJhYzJkLi5hYzYzYzQyMGExMzNlMzll
NmNlZWQzYWQ4NmM2MzhkNTg0YmRiMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCkBAIC02OSw3ICs2OSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGls
ZUlELCBjb25zdCBVcGRhdGVJbmZvJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoV2Vi
TGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudFJlY3RGb3JMYXllcihpbnQgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJl
ZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Owo=
</data>
<flag name="review"
          id="123852"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="123872"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>