<?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>82534</bug_id>
          
          <creation_ts>2012-03-28 14:57:17 -0700</creation_ts>
          <short_desc>[Qt][WK2] Sync the layer&apos;s state and the layer&apos;s children separately</short_desc>
          <delta_ts>2012-04-09 16:46:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75780</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>590475</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 14:57:17 -0700</bug_when>
    <thetext>[Qt][WK2] Sync the layer&apos;s state and the layer&apos;s children separately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590491</commentid>
    <comment_count>1</comment_count>
      <attachid>134412</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 15:08:19 -0700</bug_when>
    <thetext>Created attachment 134412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590503</commentid>
    <comment_count>2</comment_count>
      <attachid>134419</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 15:13:46 -0700</bug_when>
    <thetext>Created attachment 134419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591058</commentid>
    <comment_count>3</comment_count>
      <attachid>134419</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-29 05:06:53 -0700</bug_when>
    <thetext>Comment on attachment 134419
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:431
&gt; +void WebGraphicsLayer::syncImageBackingStore()

sync isn&apos;t quite right, check? recreate? ensure?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:435
&gt; +    if (!m_image)
&gt; +        return;
&gt; +    if (!m_layerInfo.imageBackingStoreID)

if (m_image &amp;&amp; !m_layerInfo.imageBackingStoreID) ?

Otherwise, LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594462</commentid>
    <comment_count>4</comment_count>
      <attachid>134419</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-03 07:24:52 -0700</bug_when>
    <thetext>Comment on attachment 134419
Patch

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        We also don&apos;t serialize the name, and serialize the children in a separate
&gt; +        function, and only when the children have actually changed.

This is hard to understand

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:180
&gt; +    LayerMap::iterator it = m_layers.find(id);

ASSERT it != notFound?

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:431
&gt;&gt; +void WebGraphicsLayer::syncImageBackingStore()
&gt; 
&gt; sync isn&apos;t quite right, check? recreate? ensure?

ensure sounds fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598394</commentid>
    <comment_count>5</comment_count>
      <attachid>136260</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 10:24:22 -0700</bug_when>
    <thetext>Created attachment 136260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598420</commentid>
    <comment_count>6</comment_count>
      <attachid>136260</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-09 10:48:02 -0700</bug_when>
    <thetext>Comment on attachment 136260
Patch

This looks a lot simpler/cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598430</commentid>
    <comment_count>7</comment_count>
      <attachid>136267</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 10:54:51 -0700</bug_when>
    <thetext>Created attachment 136267
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598616</commentid>
    <comment_count>8</comment_count>
      <attachid>136267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 14:35:28 -0700</bug_when>
    <thetext>Comment on attachment 136267
Patch for landing

Rejecting attachment 136267 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
cceeded at 105 with fuzz 1 (offset 3 lines).
Hunk #3 succeeded at 134 (offset 4 lines).
Hunk #4 FAILED at 141.
1 out of 4 hunks FAILED -- saving rejects to file Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h.rej
patching file Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp
patching file Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12372383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598746</commentid>
    <comment_count>9</comment_count>
      <attachid>136267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 16:45:59 -0700</bug_when>
    <thetext>Comment on attachment 136267
Patch for landing

Clearing flags on attachment: 136267

Committed r113640: &lt;http://trac.webkit.org/changeset/113640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598747</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 16:46:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134412</attachid>
            <date>2012-03-28 15:08:19 -0700</date>
            <delta_ts>2012-03-28 15:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82534-20120328150811.patch</filename>
            <type>text/plain</type>
            <size>6222</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWUyNzk0ZmMzYzM5OTlh
NWFmYzQ0ZjdjODdhOGI5YWRjOGE4ZTg4OS4uMDFlMDA0ZjMwYTZhYjUyNzYxZGRmNDMxYjNmYTJi
ZThkMDg1NGJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIFJlbW92ZSBhbGwgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpIGRlZmluZXMgZnJvbSBjb2Rl
IHRoYXQgY29udGFpbnMgVUlfU0lERV9DT01QT1NJVElORworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHJlbW92aW5n
IHNvbWUgI2RlZmluZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAoTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVy
VHJlZUhvc3RRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6TGF5ZXJU
cmVlSG9zdFF0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpkZXRhY2hMYXll
cik6CisKKzIwMTItMDMtMjggIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lh
LmNvbT4KKwogICAgICAgICBbUXRdW1dLMl0gRGlzYWJsZSB0aGUgY29udGVudC1zY2FsaW5nIGFu
ZCB2aXNpYmxlIGNvbnRlbnRzIHJlY3Qgd2hlbiB0aGUgbGF5ZXIncyB0cmFuc2Zvcm0gaXMgbm90
IGFmZmluZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI1MjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMmMyN2MyNDMwY2MxZTcwZTAx
YWU5YTZhN2MyNTRiOTczMmZjNzM4ZC4uNDA0MDNjMzc0YjE4NzczOTFhZjMwMGM1NGU5MmQ5ZDU2
MTAwNjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC04NSwxMCArODUsOCBAQCBX
ZWJHcmFwaGljc0xheWVyOjpXZWJHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWVudCkKICAgICAsIG1fY29udGVudE5lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1faGFzUGVu
ZGluZ0FuaW1hdGlvbnMoZmFsc2UpCiAgICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKLSNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgw
KQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKLSNlbmRpZgogewogICAgIHN0YXRpYyBXZWJM
YXllcklEIG5leHRMYXllcklEID0gMTsKICAgICBtX2xheWVySW5mby5pZCA9IG5leHRMYXllcklE
Kys7CkBAIC00NzYsNyArNDc0LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIG1faGFzUGVuZGluZ0FuaW1hdGlvbnMg
PSBmYWxzZTsKIH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBXZWJHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKQogewogfQpAQCAtNjc1LDcg
KzY3Miw2IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJs
ZVJlY3QoKQogICAgIGFkanVzdFZpc2libGVSZWN0KCk7CiAgICAgYWRqdXN0Q29udGVudHNTY2Fs
ZSgpOwogfQotI2VuZGlmCiAKIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0
ZVdlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuaAppbmRleCBmZDljMTc2MTMyZDI4ZDc4MTcyMzQ4ZTA2ZTc2NGI4MDQwODE1
YzY5Li5mZWIxY2YwNjM4ZTEzMWM5NjIzMzQ5ZWZlZGJjNmFlMjRjZDNhYjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuaApAQCAtMTE4LDcgKzExOCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIGluaXRGYWN0b3J5KCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAv
LyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdT
dG9yZVBhaW50QmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CkBAIC0xMzksNyArMTM4LDYgQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2FwKCkgY29uc3Q7CiAgICAg
dm9pZCB1cGRhdGVDb250ZW50QnVmZmVycygpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVz
KCk7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYkxheWVySW5mbyBtX2xheWVy
SW5mbzsKQEAgLTE1OCw3ICsxNTYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlQmFja2lu
Z1N0b3JlKCk7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdHJhbnNmb3JtQW5pbWF0aW9uczsKIAot
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIGJvb2wgc2VsZk9yQW5jZXN0b3JIYXZl
Tm9uQWZmaW5lVHJhbnNmb3JtcygpOwogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nU3Rv
cmUoKTsKICAgICB2b2lkIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKQEAgLTE2OSw3ICsxNjYsNiBA
QCBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWlu
QmFja2luZ1N0b3JlOwogICAgIE93blB0cjxXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZT4gbV9w
cmV2aW91c0JhY2tpbmdTdG9yZTsKICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7Ci0jZW5kaWYK
IH07CiAKIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhv
c3QuaAppbmRleCAwMzQ5ZTI0ZTcxY2FjOTJhZWE2MTg0NDA2YTc2YWM3NWQ4NGQ3NzMzLi5iZWE4
ZGRjZWQxZjg3YzYwMzc1OTZhNzY0MzU0MmIzZjU4Y2Q0NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTc5LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRlcmluZygpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKSB7IH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorI2lmIFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2Fs
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlQ29udGVudHNSZWN0Rm9yTGF5ZXIoaW50IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgeyB9CkBAIC05
Niw4ICs5Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKIAotCi0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcp
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
Y3BwCmluZGV4IGNhNzRmMTE0MGIyYjU4NTlmNzUxOTE3Zjg4YWM5MDI1N2NjY2E0NDMuLmJkYTYw
NjM4ODI4MjljNGY2ZDFlYTVmMzE0MTczYmMzMmFlYjViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCkBA
IC02MywxMSArNjMsOSBAQCBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQogICAgICwgbV9ub3RpZnlB
ZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCiAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKLSNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAsIG1fd2FpdGluZ0ZvclVJUHJvY2Vzcyhm
YWxzZSkKICAgICAsIG1faXNTdXNwZW5kZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUo
MSkKLSNlbmRpZgogICAgICwgbV9zaG91bGRTeW5jRnJhbWUoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZFN5bmNSb290TGF5ZXIodHJ1ZSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKHRoaXMsICZMYXll
clRyZWVIb3N0UXQ6OmxheWVyRmx1c2hUaW1lckZpcmVkKQpAQCAtODUsOSArODMsNyBAQCBMYXll
clRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQogICAgIG1fbGF5
ZXJUcmVlQ29udGV4dC53ZWJMYXllcklEID0gdG9XZWJHcmFwaGljc0xheWVyKHdlYlJvb3RMYXll
ciktPmlkKCk7CiAKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUodGhpcyk7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdG9X
ZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0V2ViR3JhcGhpY3NMYXllckNs
aWVudCh0aGlzKTsKLSNlbmRpZgogI2lmbmRlZiBOREVCVUcKICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3RRdCBub24tY29tcG9zaXRlZCBjb250
ZW50Iik7CiAjZW5kaWYKQEAgLTI1NCwxMCArMjUwLDggQEAgdm9pZCBMYXllclRyZWVIb3N0UXQ6
OmRldGFjaExheWVyKFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIExheWVyVHJlZUhv
c3RRdDo6cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKQogewotI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQogICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8IG1fd2FpdGluZ0ZvclVJUHJvY2Vz
cykKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBtX3dlYlBhZ2UtPmxheW91dElmTmVl
ZGVkKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134419</attachid>
            <date>2012-03-28 15:13:46 -0700</date>
            <delta_ts>2012-04-09 10:24:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82534-20120328151338.patch</filename>
            <type>text/plain</type>
            <size>28500</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODU1YmIxYTc5MjgwNTg4
M2Y0MzA0ZjYzYjg4MTMwYmVjYTEzZWFhMy4uYzEwNWU3MDcxZjM3OTFhODE1YjdiNGE3NDYxOWNi
MDFmNzAxNTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIFN5bmMgdGhlIGxheWVyJ3Mgc3RhdGUgYW5kIHRoZSBsYXllcidzIGNoaWxkcmVuIHNlcGFy
YXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dp
dGNoZWQgdGhlIFdlYkxheWVySW5mbyBzdHJ1Y3QsIHdoaWNoIGluY2x1ZGVzIGEgc2luZ2xlIGxh
eWVyJ3Mgc3RhdGUsCisgICAgICAgIHRvIHVzZSBvbmx5IFBPRCB0eXBlcyB0aGF0IGNhbiBiZSBz
ZXJpYWxpemVkIHZpYSBTaW1wbGVBcmd1bWVudENvZGVyLgorICAgICAgICBXZSBhbHNvIGRvbid0
IHNlcmlhbGl6ZSB0aGUgbmFtZSwgYW5kIHNlcmlhbGl6ZSB0aGUgY2hpbGRyZW4gaW4gYSBzZXBh
cmF0ZQorICAgICAgICBmdW5jdGlvbiwgYW5kIG9ubHkgd2hlbiB0aGUgY2hpbGRyZW4gaGF2ZSBh
Y3R1YWxseSBjaGFuZ2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTGF5ZXJUcmVl
SW5mby5oOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckluZm86OldlYkxheWVySW5mbyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllclN0YXRlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29t
cG9zaXRpbmdMYXllckNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9z
dFByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
UmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVl
UmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhp
Y3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFu
Z2VMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjph
ZGRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRk
Q2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGls
ZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldERyYXdzQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6aWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcjo6c3luY0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnN5bmNJbWFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoV2ViR3JhcGhpY3NMYXllcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJD
aGlsZHJlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdFF0KToKKworMjAxMi0wMy0yOCAgTm8nYW0gUm9z
ZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCiAgICAgICAgIFtRdF1bV0syXSBB
Y2NlbGVyYXRlZCBhbmQgbm9uLWFjY2VsZXJhdGVkIGFuaW1hdGlvbnMgbmVlZCB0byBiZSBzeW5j
aHJvbml6ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1NzgwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJ
bmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAppbmRl
eCBiMDc2ZTQzMjliOGM1YTM5YTgyMmNlYjkxM2Y2NDUzYjY1NDRiNDM1Li5jMmYxY2E0NDc4NTFl
YzZiMTA3ODU2NDc4NzRjN2ZiZGZiODNkNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkxheWVyVHJlZUluZm8uY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgQ29yZUlQQzsKIApAQCAtMzIsNDAgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2
b2lkIFdlYkxheWVySW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
cikgY29uc3QKIHsKLSAgICAvLyBXZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVz
LCBiZWNhdXNlIENvcmVJUEM6OkluL091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRz
LgotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpZCwgbmFtZSwgcGFyZW50LCBjaGls
ZHJlbiwgZmxhZ3MsIHJlcGxpY2EsIG1hc2ssIGltYWdlQmFja2luZ1N0b3JlSUQpKTsKLSAgICBl
bmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4ocG9zLCBzaXplLCB0cmFuc2Zvcm0sIG9wYWNpdHks
IGFuY2hvclBvaW50LCBjaGlsZHJlblRyYW5zZm9ybSwgY29udGVudHNSZWN0KSk7CisgICAgU2lt
cGxlQXJndW1lbnRDb2RlcjxXZWJMYXllckluZm8+OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwog
fQogCiBib29sIFdlYkxheWVySW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIC8vIFdlIGhhdmUgdG8gZGl2aWRl
IGl0IHRvIHNldmVyYWwgbGluZXMsIGJlY2F1c2UgQ29yZUlQQzo6SW4vT3V0IHRha2VzIGEgbWF4
aW11bSBvZiAxMCBhcmd1bWVudHMuCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6
T3V0KGluZm8uaWQsIGluZm8ubmFtZSwgaW5mby5wYXJlbnQsIGluZm8uY2hpbGRyZW4sIGluZm8u
ZmxhZ3MsIGluZm8ucmVwbGljYSwgaW5mby5tYXNrLCBpbmZvLmltYWdlQmFja2luZ1N0b3JlSUQp
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJ
UEM6Ok91dChpbmZvLnBvcywgaW5mby5zaXplLCBpbmZvLnRyYW5zZm9ybSwgaW5mby5vcGFjaXR5
LCBpbmZvLmFuY2hvclBvaW50LCBpbmZvLmNoaWxkcmVuVHJhbnNmb3JtLCBpbmZvLmNvbnRlbnRz
UmVjdCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBXZWJMYXllclRyZWVJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihsYXllcnMs
IHJvb3RMYXllcklELCBkZWxldGVkTGF5ZXJJRHMsIGNvbnRlbnRTY2FsZSkpOwotfQotCi1ib29s
IFdlYkxheWVyVHJlZUluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYkxheWVyVHJlZUluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29k
ZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcnMsIGluZm8ucm9vdExheWVySUQsIGluZm8uZGVsZXRl
ZExheWVySURzLCBpbmZvLmNvbnRlbnRTY2FsZSkpOwotfQotCi12b2lkIFdlYkxheWVyVXBkYXRl
SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4obGF5ZXJJRCwgcmVjdCwgYml0bWFwSGFu
ZGxlKSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJMYXllclVwZGF0ZUluZm8mIGluZm8pCi17Ci0gICAg
cmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcklELCBpbmZvLnJl
Y3QsIGluZm8uYml0bWFwSGFuZGxlKSk7CisgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8
V2ViTGF5ZXJJbmZvPjo6ZGVjb2RlKGRlY29kZXIsIGluZm8pOwogfQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaAppbmRleCA5YjI3MWVlMmZlYmVkYTYw
MTY2NmZmZThlZmEyZmE3ZjI2YjYzYzRjLi5mOWEyZGUxNmUwZGI3NjRkOWMxOTc0YTYwMmIyY2U3
MmE2M2Q4ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVl
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgKQEAg
LTM0LDMyICszNCwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHR5cGVkZWYgdWludDMyX3QgV2Vi
TGF5ZXJJRDsKIGVudW0geyBJbnZhbGlkV2ViTGF5ZXJJRCA9IDAgfTsKIAotc3RydWN0IFdlYkxh
eWVyVXBkYXRlSW5mbyB7Ci0gICAgV2ViTGF5ZXJVcGRhdGVJbmZvKCkgeyB9Ci0gICAgV2ViTGF5
ZXJVcGRhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHIpCi0gICAgICAgIDogbGF5ZXJJ
RChJbnZhbGlkV2ViTGF5ZXJJRCkKLSAgICAgICAgLCByZWN0KHIpIHsgfQotCi0gICAgV2ViTGF5
ZXJJRCBsYXllcklEOwotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdDsKLSAgICBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGU7Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgV2ViTGF5ZXJVcGRhdGVJbmZvJik7Ci19OwotCisvLyBOT1RFOiBX
ZWJMYXllckluZm8gc2hvdWxkIG9ubHkgdXNlIFBPRCB0eXBlcywgYXMgdG8gbWFrZSBzZXJpYWxp
emF0aW9uIGZhc3Rlci4KIHN0cnVjdCBXZWJMYXllckluZm8gewogICAgIFdlYkxheWVySW5mbygp
Ci0gICAgICAgIDogaWQoSW52YWxpZFdlYkxheWVySUQpCi0gICAgICAgICwgcGFyZW50KEludmFs
aWRXZWJMYXllcklEKQorICAgICAgICA6IHBhcmVudChJbnZhbGlkV2ViTGF5ZXJJRCkKICAgICAg
ICAgLCByZXBsaWNhKEludmFsaWRXZWJMYXllcklEKQogICAgICAgICAsIG1hc2soSW52YWxpZFdl
YkxheWVySUQpCiAgICAgICAgICwgaW1hZ2VCYWNraW5nU3RvcmVJRCgwKQogICAgICAgICAsIG9w
YWNpdHkoMCkKICAgICAgICAgLCBmbGFncygwKSB7IH0KIAotICAgIFN0cmluZyBuYW1lOwotICAg
IFdlYkxheWVySUQgaWQ7CiAgICAgV2ViTGF5ZXJJRCBwYXJlbnQ7CiAgICAgV2ViTGF5ZXJJRCBy
ZXBsaWNhOwogICAgIFdlYkxheWVySUQgbWFzazsKQEAgLTg0LDI3ICs2OCwxMSBAQCBzdHJ1Y3Qg
V2ViTGF5ZXJJbmZvIHsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwog
ICAgIH07Ci0gICAgVmVjdG9yPFdlYkxheWVySUQ+IGNoaWxkcmVuOwotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGltYWdlQmFja2luZ1N0b3JlOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYkxheWVySW5mbyYpOwogfTsKIAotc3RydWN0IFdlYkxh
eWVyVHJlZUluZm8gewotICAgIFdlYkxheWVyVHJlZUluZm8oKQotICAgICAgICA6IHJvb3RMYXll
cklEKEludmFsaWRXZWJMYXllcklEKQotICAgICAgICAsIGNvbnRlbnRTY2FsZSgwKSB7IH0KLQot
ICAgIFZlY3RvcjxXZWJMYXllckluZm8+IGxheWVyczsKLSAgICBWZWN0b3I8V2ViTGF5ZXJJRD4g
ZGVsZXRlZExheWVySURzOwotICAgIFdlYkxheWVySUQgcm9vdExheWVySUQ7Ci0gICAgZmxvYXQg
Y29udGVudFNjYWxlOwotCi0gICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
KikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciosIFdlYkxheWVyVHJlZUluZm8mKTsKLX07Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJl
ZUhvc3RQcm94eS5jcHAKaW5kZXggYzJmNjE2MDI5NmIwMDczODliZWI4NTM0N2FmMzdmNGM3MzBj
MmEyNC4uMjQ0OWMzMTI2MzdiZGNiMTc4OTk1MWEwZWQ0MDgwMThiZjhjY2FlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTk4LDkg
Kzk4LDE0IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJMYXllcklEIGlkKQogICAgIHVwZGF0ZVZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdlYkxheWVySW5m
byYgaW5mbykKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyU3Rh
dGUoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJldlYkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jTGF5ZXJQYXJhbWV0ZXJz
LCBtX3JlbmRlcmVyLmdldCgpLCBpbmZvKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2Vi
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBp
bmZvKSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVy
Q2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJl
bikKK3sKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0
TGF5ZXJDaGlsZHJlbiwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggMjU4N2MxZjIxYTliZmZkYjhm
MjYxMjgyOGRhNGIzNjRjYzU0YTQ5Zi4uYTkwY2U0MDI5MjNkYmNmMzVkN2ZjMWQ1MzY4Mjk3OGI0
NGEwMGYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhv
c3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJv
eHkuaApAQCAtNDcsNyArNDcsOCBAQCBjbGFzcyBMYXllclRyZWVIb3N0UHJveHkgewogcHVibGlj
OgogICAgIExheWVyVHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5Kik7CiAgICAgdmlydHVh
bCB+TGF5ZXJUcmVlSG9zdFByb3h5KCk7Ci0gICAgdm9pZCBzeW5jQ29tcG9zaXRpbmdMYXllclN0
YXRlKGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllclN0
YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZvaWQgc2V0Q29tcG9z
aXRpbmdMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYp
OwogICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lk
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3MDQ2NWIzNTAyMTcxZTc2
Yzg4YzIyZDYwZWU4Nzg1OGY5MmU4MjY4Li4zMDEwM2UzNWNkOGZkY2NlOGExZmNkZjBlNjUxOGI0
ODY0NmZhYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVl
SG9zdFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTE5LDcgKzE5LDggQEAKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiBtZXNz
YWdlcyAtPiBMYXllclRyZWVIb3N0UHJveHkgewotICAgIFN5bmNDb21wb3NpdGluZ0xheWVyU3Rh
dGUoV2ViS2l0OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQorICAgIFNldENvbXBvc2l0aW5nTGF5
ZXJTdGF0ZSh1aW50MzJfdCBpZCwgV2ViS2l0OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQorICAg
IFNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbih1aW50MzJfdCBpZCwgVmVjdG9yPHVpbnQzMl90
PiBjaGlsZHJlbikKICAgICBTZXRSb290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAg
ICBEZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JM
YXllcih1aW50MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBk
YXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRy
ZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwCmluZGV4IDI1ZWQyN2RkNGY0YWMzODVlMmJjNTE4Y2YxOTY2YjMwMjRkMzY5Mzcu
LjRkNWFmYmQwZDcxMThhZWI3NTYxM2U0ODU4Yzg1MTc1NDg3M2JjYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMTU1LDE0
ICsxNTUsMzAgQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVmlld3BvcnQoKQog
ICAgICAgICBtX2xheWVyVHJlZUhvc3RQcm94eS0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9p
ZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXll
ckluZm8mIGxheWVySW5mbykKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hp
bGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZElEcykK
IHsKLSAgICBXZWJMYXllcklEIGlkID0gbGF5ZXJJbmZvLmlkOwogICAgIGVuc3VyZUxheWVyKGlk
KTsKICAgICBMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKICAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7CisgICAgVmVjdG9yPEdyYXBoaWNzTGF5
ZXIqPiBjaGlsZHJlbjsKIAotICAgIGxheWVyLT5zZXROYW1lKGxheWVySW5mby5uYW1lKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkSURzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFdlYkxheWVySUQgY2hpbGRJRCA9IGNoaWxkSURzW2ldOworICAgICAgICBHcmFwaGljc0xheWVy
KiBjaGlsZCA9IGxheWVyQnlJRChjaGlsZElEKTsKKyAgICAgICAgaWYgKCFjaGlsZCkgeworICAg
ICAgICAgICAgY2hpbGQgPSBjcmVhdGVMYXllcihjaGlsZElEKS5sZWFrUHRyKCk7CisgICAgICAg
ICAgICBtX2xheWVycy5hZGQoY2hpbGRJRCwgY2hpbGQpOworICAgICAgICB9CisgICAgICAgIGNo
aWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgfQorICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGls
ZHJlbik7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2Vi
TGF5ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluZm8pCit7CisgICAgZW5zdXJl
TGF5ZXIoaWQpOworICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQp
OworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gaXQtPnNlY29uZDsKIAogICAgIGxheWVyLT5z
ZXRSZXBsaWNhdGVkQnlMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLnJlcGxpY2EpKTsKICAgICBs
YXllci0+c2V0TWFza0xheWVyKGxheWVyQnlJRChsYXllckluZm8ubWFzaykpOwpAQCAtMTgzLDE5
ICsxOTksNiBAQCB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jTGF5ZXJQYXJhbWV0ZXJz
KGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbmZvKQogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91
bmRzKGxheWVySW5mby5pc1Jvb3RMYXllciA/IGZhbHNlIDogbGF5ZXJJbmZvLm1hc2tzVG9Cb3Vu
ZHMpOwogICAgIGxheWVyLT5zZXRPcGFjaXR5KGxheWVySW5mby5vcGFjaXR5KTsKICAgICBsYXll
ci0+c2V0UHJlc2VydmVzM0QobGF5ZXJJbmZvLnByZXNlcnZlczNEKTsKLSAgICBWZWN0b3I8R3Jh
cGhpY3NMYXllcio+IGNoaWxkcmVuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXll
ckluZm8uY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViTGF5ZXJJRCBjaGlsZElE
ID0gbGF5ZXJJbmZvLmNoaWxkcmVuW2ldOwotICAgICAgICBHcmFwaGljc0xheWVyKiBjaGlsZCA9
IGxheWVyQnlJRChjaGlsZElEKTsKLSAgICAgICAgaWYgKCFjaGlsZCkgewotICAgICAgICAgICAg
Y2hpbGQgPSBjcmVhdGVMYXllcihjaGlsZElEKS5sZWFrUHRyKCk7Ci0gICAgICAgICAgICBtX2xh
eWVycy5hZGQoY2hpbGRJRCwgY2hpbGQpOwotICAgICAgICB9Ci0gICAgICAgIGNoaWxkcmVuLmFw
cGVuZChjaGlsZCk7Ci0gICAgfQotICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7Ci0K
ICAgICBpZiAobGF5ZXJJbmZvLmlzUm9vdExheWVyICYmIG1fcm9vdExheWVySUQgIT0gaWQpCiAg
ICAgICAgIHNldFJvb3RMYXllcklEKGlkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggYTdmOGFjZGFhYzI1NGYyOWI4MTIxMzc0
OTcwODY5MDhiYzFiNTk2My4uNDRjZGJhN2NhNDY5NzYwMmQzZTUwNWU1OWNkMjkyYjAwYTcwNmMx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRl
cmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVy
LmgKQEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkZWxldGVMYXllcihXZWJM
YXllcklEKTsKICAgICB2b2lkIHNldFJvb3RMYXllcklEKFdlYkxheWVySUQpOwotICAgIHZvaWQg
c3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mKTsKKyAgICB2b2lkIHNldExh
eWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7CisgICAg
dm9pZCBzZXRMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOwogICAg
IHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGZsb2F0IHNjYWxlKTsKICAgICB2b2lk
IHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50KTsKICAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5
ZXJJRCwgaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNw
cAppbmRleCA3M2NhNjVmYzJmMTk3MWY0Y2YzODY2MGM3NWY4ODg2NTBkNTQ2N2E0Li5mYmZhZjgx
NTgwMTQ1ODI0YWUyZGI0OGEzMjE0YjJkZWFjYjA1YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTYwLDkgKzYwLDE2IEBAIHN0YXRpYyBXZWJMYXllcklEIHRvV2ViTGF5ZXJJRChH
cmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1cm4gbGF5ZXIgPyB0b1dlYkdyYXBoaWNzTGF5
ZXIobGF5ZXIpLT5pZCgpIDogMDsKIH0KIAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpub3RpZnlD
aGFuZ2UoKQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VMYXllclN0YXRlKCkKIHsK
LSAgICBtX21vZGlmaWVkID0gdHJ1ZTsKKyAgICBtX3Nob3VsZFN5bmNMYXllclN0YXRlID0gdHJ1
ZTsKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWly
ZWQodGhpcyk7Cit9CisKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlQ2hpbGRyZW4o
KQoreworICAgIG1fc2hvdWxkU3luY0NoaWxkcmVuID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50KCkp
CiAgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7CiB9CkBAIC04MSwy
MSArODgsMjIgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRTaG91bGRVcGRhdGVWaXNpYmxl
UmVjdCgpCiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkoKQogewot
ICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICBzZXRT
aG91bGRVcGRhdGVWaXNpYmxlUmVjdCgpOwogfQogCiBXZWJHcmFwaGljc0xheWVyOjpXZWJHcmFw
aGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5
ZXIoY2xpZW50KQogICAgICwgbV9tYXNrVGFyZ2V0KDApCi0gICAgLCBtX21vZGlmaWVkKHRydWUp
CiAgICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJs
ZVJlY3QodHJ1ZSkKKyAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkKKyAgICAsIG1f
c2hvdWxkU3luY0NoaWxkcmVuKHRydWUpCiAgICAgLCBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQo
MCkKLSAgICAsIG1fY29udGVudHNTY2FsZSgxLmYpCisgICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkK
IHsKICAgICBzdGF0aWMgV2ViTGF5ZXJJRCBuZXh0TGF5ZXJJRCA9IDE7Ci0gICAgbV9sYXllcklu
Zm8uaWQgPSBuZXh0TGF5ZXJJRCsrOworICAgIG1faWQgPSBuZXh0TGF5ZXJJRCsrOwogICAgIGxh
eWVyQnlJRE1hcCgpLmFkZChpZCgpLCB0aGlzKTsKIH0KIApAQCAtMTE3LDkgKzEyNSw5IEBAIGJv
b2wgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5
ZXIqPiYgY2hpbGRyZW4pCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7
ICsraSkgewogICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBjaGlsZCA9IHRvV2ViR3JhcGhpY3NM
YXllcihjaGlsZHJlbltpXSk7CiAgICAgICAgIGNoaWxkLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgICAgIGNoaWxkLT5ub3RpZnlDaGFu
Z2UoKTsKKyAgICAgICAgY2hpbGQtPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICB9Ci0gICAg
bm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTI3LDMyICsxMzUsMzIgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRD
aGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGls
ZChsYXllcik7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0V2ViR3JhcGhpY3NM
YXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwotICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIHRv
V2ViR3JhcGhpY3NMYXllcihsYXllciktPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKKyAgICBkaWRD
aGFuZ2VDaGlsZHJlbigpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJ
bmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQogewogICAgIEdyYXBoaWNzTGF5
ZXI6OmFkZENoaWxkQXRJbmRleChsYXllciwgaW5kZXgpOwogICAgIHRvV2ViR3JhcGhpY3NMYXll
cihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xp
ZW50KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKLSAg
ICBub3RpZnlDaGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5kaWRDaGFu
Z2VMYXllclN0YXRlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBXZWJH
cmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGlj
c0xheWVyKiBzaWJsaW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5
ZXIsIHNpYmxpbmcpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBo
aWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKLSAgICB0b1dlYkdyYXBo
aWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAg
ZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGls
ZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQogewog
ICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cobGF5ZXIsIHNpYmxpbmcpOwogICAgIHRv
V2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3Rp
ZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIo
bGF5ZXIpLT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsK
IH0KIAogYm9vbCBXZWJHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciog
b2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKQpAQCAtMTYwLDIwICsxNjgsMjAgQEAg
Ym9vbCBXZWJHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hp
bGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0MKICAgICBib29sIG9rID0gR3JhcGhpY3NMYXllcjo6cmVw
bGFjZUNoaWxkKG9sZENoaWxkLCBuZXdDaGlsZCk7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG5vdGlmeUNoYW5nZSgpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihv
bGRDaGlsZCktPm5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CisgICAg
dG9XZWJHcmFwaGljc0xheWVyKG9sZENoaWxkKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAg
IHRvV2ViR3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQo
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hp
bGQpLT5ub3RpZnlDaGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQpLT5k
aWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7CiAgICAgaWYgKFdlYkdyYXBoaWNzTGF5
ZXIqIHBhcmVudExheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHBhcmVudCgpKSkKLSAgICAgICAg
cGFyZW50TGF5ZXItPm5vdGlmeUNoYW5nZSgpOworICAgICAgICBwYXJlbnRMYXllci0+ZGlkQ2hh
bmdlQ2hpbGRyZW4oKTsKICAgICBHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KCk7CiAK
LSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkKQEAg
LTI0Nyw3ICsyNTUsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChi
b29sIGIpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRl
bnQoYik7CiAKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7
CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBiKQpA
QCAtMjU3LDcgKzI2NSw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFx
dWUoYm9vbCBiKQogICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIG1fbWFpbkJh
Y2tpbmdTdG9yZS0+c2V0U3VwcG9ydHNBbHBoYSghYik7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNPcGFxdWUoYik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5
ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJp
bGl0eShib29sIGIpCkBAIC0yNjYsNyArMjc0LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
ZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFw
aGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7
CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKQEAgLTI3NSw3ICsyODMsNyBAQCB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShvcGFjaXR5KTsKLSAgICBub3RpZnlDaGFu
Z2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHIpCkBAIC0yODQsNyArMjkyLDcg
QEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0
KHIpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0K
IAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCkBAIC0z
MDMsMTMgKzMxMSwxMyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIC8vIFdlIGFkb3B0IGZpcnN0LCBpbiBjYXNlIHRoaXMg
aXMgdGhlIHNhbWUgZnJhbWUgLSB0aGF0IHdheSB3ZSBhdm9pZCBkZXN0cm95aW5nIGFuZCByZWNy
ZWF0aW5nIHRoZSBpbWFnZS4KICAgICAgICAgbmV3SUQgPSBtX3dlYkdyYXBoaWNzTGF5ZXJDbGll
bnQtPmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUoaW1hZ2UpOwogICAgICAgICBtX3dlYkdyYXBoaWNz
TGF5ZXJDbGllbnQtPnJlbGVhc2VJbWFnZUJhY2tpbmdTdG9yZShtX2xheWVySW5mby5pbWFnZUJh
Y2tpbmdTdG9yZUlEKTsKLSAgICAgICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgICAgIGRpZENoYW5n
ZUxheWVyU3RhdGUoKTsKICAgICAgICAgaWYgKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3Jl
SUQgJiYgbmV3SUQgPT0gbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQgaXMgbm90IHNldCB5ZXQgdGhlcmUgc2hvdWxkIGJlIG5vIGJhY2tpbmcgc3RvcmUg
SUQuCiAgICAgICAgIEFTU0VSVCghbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7Ci0g
ICAgICAgIG5vdGlmeUNoYW5nZSgpOworICAgICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAg
ICAgfQogCiAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IG5ld0lEOwpAQCAt
MzMxLDggKzMzOSw4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKEdyYXBo
aWNzTGF5ZXIqIGxheWVyKQogICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5ZXIg
PSB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpOwogICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldFdl
YkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICB3ZWJH
cmFwaGljc0xheWVyLT5zZXRNYXNrVGFyZ2V0KHRoaXMpOwotICAgIHdlYkdyYXBoaWNzTGF5ZXIt
Pm5vdGlmeUNoYW5nZSgpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIHdlYkdyYXBoaWNzTGF5
ZXItPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAK
IH0KIApAQCAtMzQ1LDcgKzM1Myw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0UmVwbGlj
YXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVy
KTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAK
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5KCkKQEAgLTM1NywxMiArMzY1
LDEyIEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQogICAgICAg
ICBtX21haW5CYWNraW5nU3RvcmUtPmludmFsaWRhdGUoSW50UmVjdChyZWN0KSk7Ci0gICAgbm90
aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiBXZWJMYXllcklE
IFdlYkdyYXBoaWNzTGF5ZXI6OmlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sYXllckluZm8u
aWQ7CisgICAgcmV0dXJuIG1faWQ7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0Nv
bXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMzg0LDEyICszOTIsMjQg
QEAgV2ViR3JhcGhpY3NMYXllciogdG9XZWJHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHcmFwaGljc0xheWVyKj4obGF5ZXIpOwog
fQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclBhcmFtZXRlcnMoKQordm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ2hpbGRyZW4oKQoreworICAgIGlmICghbV9zaG91bGRTeW5j
Q2hpbGRyZW4pCisgICAgICAgIHJldHVybjsKKyAgICBtX3Nob3VsZFN5bmNDaGlsZHJlbiA9IGZh
bHNlOworICAgIFZlY3RvcjxXZWJMYXllcklEPiBjaGlsZElEczsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkSURzLmFwcGVu
ZCh0b1dlYkxheWVySUQoY2hpbGRyZW4oKVtpXSkpOworCisgICAgbV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50LT5zeW5jTGF5ZXJDaGlsZHJlbihtX2lkLCBjaGlsZElEcyk7Cit9CisKK3ZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogIHsKLSAgICBpZiAoIW1fbW9kaWZpZWQp
CisgICAgaWYgKCFtX3Nob3VsZFN5bmNMYXllclN0YXRlKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9tb2RpZmllZCA9IGZhbHNlOwotICAgIG1fbGF5ZXJJbmZvLm5hbWUgPSBuYW1lKCk7CisgICAg
bV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSA9IGZhbHNlOworCiAgICAgbV9sYXllckluZm8uYW5jaG9y
UG9pbnQgPSBhbmNob3JQb2ludCgpOwogICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlzaWJsZSA9
IGJhY2tmYWNlVmlzaWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3Jt
ID0gY2hpbGRyZW5UcmFuc2Zvcm0oKTsKQEAgLTQwNSwyNiArNDI1LDI0IEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6c3luY0xheWVyUGFyYW1ldGVycygpCiAgICAgbV9sYXllckluZm8ucmVwbGlj
YSA9IHRvV2ViTGF5ZXJJRChyZXBsaWNhTGF5ZXIoKSk7CiAgICAgbV9sYXllckluZm8uc2l6ZSA9
IHNpemUoKTsKICAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0oKTsKLSAgICBt
X2xheWVySW5mby5jaGlsZHJlbi5jbGVhcigpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGlsZHJlbigpLnNpemUoKTsgKytpKQotICAgICAgICBtX2xheWVySW5mby5jaGlsZHJlbi5h
cHBlbmQodG9XZWJMYXllcklEKGNoaWxkcmVuKClbaV0pKTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQtPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5ZXJJbmZvKTsKK30KIAotICAgIG1f
d2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGlkU3luY0NvbXBvc2l0aW5nU3RhdGVGb3JMYXllciht
X2xheWVySW5mbyk7Cit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNJbWFnZUJhY2tpbmdTdG9y
ZSgpCit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2xh
eWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKQorICAgICAgICBtX2xheWVySW5mby5pbWFnZUJh
Y2tpbmdTdG9yZUlEID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2lu
Z1N0b3JlKG1faW1hZ2UuZ2V0KCkpOwogfQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewogICAgIC8vIFRoZSByZW1vdGUgaW1h
Z2UgbWlnaHQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJ5IHB1cmdlQmFja2luZ1N0b3Jlcy4KLSAgICBp
ZiAobV9pbWFnZSkgewotICAgICAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3Jl
SUQpCi0gICAgICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0gbV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1hZ2UuZ2V0KCkp
OwotICAgIH0KLQorICAgIHN5bmNJbWFnZUJhY2tpbmdTdG9yZSgpOwogICAgIGNvbXB1dGVUcmFu
c2Zvcm1lZFZpc2libGVSZWN0KCk7Ci0gICAgc3luY0xheWVyUGFyYW1ldGVycygpOworICAgIHN5
bmNDaGlsZHJlbigpOworICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgdXBkYXRlQ29udGVudEJ1
ZmZlcnMoKTsKLQotICAgIG1fbW9kaWZpZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKQpAQCAtNDM0LDcgKzQ1Miw3IEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wgaXNSb290KQogewogICAgIG1f
bGF5ZXJJbmZvLmlzUm9vdExheWVyID0gaXNSb290OwotICAgIG5vdGlmeUNoYW5nZSgpOworICAg
IGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRW
aXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnlWZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCmluZGV4IDI0NTAyZjUzMjFlYzFkZjBm
YmU0NjY3NTBkZWIwMDI1NmU4ODQxZjguLjQxZTA0MmU0M2NkZTljM2U5NDMyNjJhYjExNDY4MTlm
OGEyN2UwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCkBAIC01NSw3ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBhZG9wdEltYWdlQmFja2luZ1N0b3JlKFdlYkNvcmU6
OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUo
aW50NjRfdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
ckxheWVyKGNvbnN0IFdlYkxheWVySW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0xh
eWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5
ZXJJRD4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExheWVyKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXIqKSA9IDA7CiB9OwpAQCAtMTAxLDExICsxMDIsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBG
bG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0
IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoKTsKKwogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wpOwogCiAgICAgV2Vi
S2l0OjpXZWJMYXllcklEIGlkKCkgY29uc3Q7CiAgICAgc3RhdGljIFdlYkdyYXBoaWNzTGF5ZXIq
IGxheWVyQnlJRChXZWJLaXQ6OldlYkxheWVySUQpOwotICAgIGJvb2wgaXNNb2RpZmllZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kaWZpZWQ7IH0KICAgICB2b2lkIGRpZFN5bmNocm9uaXplKCk7CiAg
ICAgSW1hZ2UqIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogCkBAIC0xMjksNiAr
MTMwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKGludCB0aWxlSUQp
OwogCiAgICAgdm9pZCBzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhp
Y3NMYXllckNsaWVudCopOworICAgIHZvaWQgc3luY0NoaWxkcmVuKCk7CisgICAgdm9pZCBzeW5j
TGF5ZXJTdGF0ZSgpOworICAgIHZvaWQgc3luY0ltYWdlQmFja2luZ1N0b3JlKCk7CiAKICAgICB2
b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CiAgICAgYm9vbCBpc1JlYWR5Rm9yVGlsZUJ1ZmZlclN3
YXAoKSBjb25zdDsKQEAgLTEzNiwxNyArMTQwLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIHB1cmdl
QmFja2luZ1N0b3JlcygpOwogCiBwcml2YXRlOgorICAgIFdlYktpdDo6V2ViTGF5ZXJJRCBtX2lk
OwogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwogICAgIFJlZlB0cjxJbWFn
ZT4gbV9pbWFnZTsKICAgICBHcmFwaGljc0xheWVyKiBtX21hc2tUYXJnZXQ7CiAgICAgRmxvYXRS
ZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBMYXllclRyYW5zZm9ybSBtX2xheWVyVHJhbnNm
b3JtOwotICAgIGJvb2wgbV9tb2RpZmllZCA6IDE7CiAgICAgYm9vbCBtX2luVXBkYXRlTW9kZSA6
IDE7CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOworICAgIGJvb2wgbV9z
aG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0NoaWxkcmVuOiAx
OwogCiAgICAgdm9pZCBub3RpZnlDaGFuZ2UoKTsKICAgICB2b2lkIGRpZENoYW5nZUdlb21ldHJ5
KCk7CisgICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgdm9pZCBkaWRDaGFuZ2VD
aGlsZHJlbigpOwogICAgIHZvaWQgY3JlYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBib29sIHNl
bGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKaW5k
ZXggYmRhNjA2Mzg4MjgyOWM0ZjZkMWVhNWYzMTQxNzNiYzMyYWViNWI1Ni4uMTNlOWZjMTUzNzU4
OGZmZjdlNmZjNzg4ZWMwNjZkMzkzZTFhOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKQEAgLTIyNiwx
MCArMjI2LDE2IEBAIGJvb2wgTGF5ZXJUcmVlSG9zdFF0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RRdDo6ZGlk
U3luY0NvbXBvc2l0aW5nU3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXllckluZm8mIGluZm8pCit2
b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29uc3Qg
V2ViTGF5ZXJJbmZvJiBpbmZvKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6U3luY0NvbXBv
c2l0aW5nTGF5ZXJTdGF0ZShpbmZvKSk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpM
YXllclRyZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZShpZCwgaW5mbykpOwor
fQorCit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJlbikKK3sKKyAgICBtX3Nob3VsZFN5
bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVI
b3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0K
IAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OmF0dGFjaExheWVyKFdlYkdyYXBoaWNzTGF5ZXIqIGxh
eWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xh
eWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xh
eWVyVHJlZUhvc3RRdC5oCmluZGV4IDA4ZjBlNjRiNzRiM2QxM2RjMWY0YmI2Zjc1YmJiNDFlZmZm
MDU1OWYuLjhkMzIzNmVmNDJkZDg3YWEyZjRmZDE5NzVkYTU2ZTU4ZDM3ZWZjODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9z
dFF0LmgKQEAgLTcxLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJh
Y2tpbmdTdG9yZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxv
d2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIo
Y29uc3QgV2ViTGF5ZXJJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKFdl
YkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5
ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mKTsKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciopOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136260</attachid>
            <date>2012-04-09 10:24:22 -0700</date>
            <delta_ts>2012-04-09 10:54:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82534-20120409102420.patch</filename>
            <type>text/plain</type>
            <size>28617</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjExODViOTBiMjc2NmI2
Y2YwNDZjZmM1ZGMxZTQyMmQ0ZDM2MWUyOS4uYzhlMzYxMjcwODIzYjdjNzQyNzYyMmM0YzcwZDk3
MzhlZTg1NmU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIFN5bmMgdGhlIGxheWVyJ3Mgc3RhdGUgYW5kIHRoZSBsYXllcidzIGNoaWxkcmVuIHNlcGFy
YXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dp
dGNoZWQgdGhlIFdlYkxheWVySW5mbyBzdHJ1Y3QsIHdoaWNoIGluY2x1ZGVzIGEgc2luZ2xlIGxh
eWVyJ3Mgc3RhdGUsCisgICAgICAgIHRvIHVzZSBvbmx5IFBPRCB0eXBlcyB0aGF0IGNhbiBiZSBz
ZXJpYWxpemVkIHZpYSBTaW1wbGVBcmd1bWVudENvZGVyLgorICAgICAgICBUbyBhbGxvdyBQT0Qt
c2VyaWFsaXphdGlvbiwgd2Ugc2VyaWFsaXplIHRoZSBjaGlsZHJlbiBJRHMgaW4gYSBzZXBlcmF0
ZQorICAgICAgICBtZXNzYWdlIChTZXRMYXllckNoaWxkcmVuKSwgYW5kIG9ubHkgd2hlbiB0aGUg
dHJlZSBsYXlvdXQgaGFzIGFjdHVhbGx5CisgICAgICAgIGJlZW4gbW9kaWZpZWQuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbmZvOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW5mbzo6V2ViTGF5ZXJJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5Ojpz
ZXRDb21wb3NpdGluZ0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVy
VHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJl
bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmg6CisgICAgICAgIChXZWJMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUxheWVyU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpXZWJHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNz
TGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5j
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c3luY0xheWVy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViR3JhcGhpY3NMYXllckNsaWVu
dCk6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdFF0OjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllckNoaWxkcmVuKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6CisgICAgICAgIChMYXllclRyZWVI
b3N0UXQpOgorCisyMDEyLTAzLTI4ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBu
b2tpYS5jb20+CisKICAgICAgICAgW1F0XVtXSzJdIEFjY2VsZXJhdGVkIGFuZCBub24tYWNjZWxl
cmF0ZWQgYW5pbWF0aW9ucyBuZWVkIHRvIGJlIHN5bmNocm9uaXplZAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwCmluZGV4IGIwNzZlNDMyOWI4YzVhMzlhODIyY2Vi
OTEzZjY0NTNiNjU0NGI0MzUuLmZmZGVhNTIyYjM5ZDI2YzRmN2E1MTE4OTFlNWRlY2I4NzA4ZDQ0
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAKQEAgLTIy
LDkgKzIyLDkgQEAKICNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykKICNpbmNsdWRlICJXZWJM
YXllclRyZWVJbmZvLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIApAQCAtMzIs
NDAgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYkxheWVySW5mbzo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKLSAgICAvLyBX
ZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVzLCBiZWNhdXNlIENvcmVJUEM6Oklu
L091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRzLgotICAgIGVuY29kZXItPmVuY29k
ZShDb3JlSVBDOjpJbihpZCwgbmFtZSwgcGFyZW50LCBjaGlsZHJlbiwgZmxhZ3MsIHJlcGxpY2Es
IG1hc2ssIGltYWdlQmFja2luZ1N0b3JlSUQpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6SW4ocG9zLCBzaXplLCB0cmFuc2Zvcm0sIG9wYWNpdHksIGFuY2hvclBvaW50LCBjaGlsZHJl
blRyYW5zZm9ybSwgY29udGVudHNSZWN0KSk7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxXZWJM
YXllckluZm8+OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwogfQogCiBib29sIFdlYkxheWVySW5m
bzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViTGF5ZXJJbmZv
JiBpbmZvKQogewotICAgIC8vIFdlIGhhdmUgdG8gZGl2aWRlIGl0IHRvIHNldmVyYWwgbGluZXMs
IGJlY2F1c2UgQ29yZUlQQzo6SW4vT3V0IHRha2VzIGEgbWF4aW11bSBvZiAxMCBhcmd1bWVudHMu
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGluZm8uaWQsIGluZm8ubmFt
ZSwgaW5mby5wYXJlbnQsIGluZm8uY2hpbGRyZW4sIGluZm8uZmxhZ3MsIGluZm8ucmVwbGljYSwg
aW5mby5tYXNrLCBpbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLnBvcywgaW5m
by5zaXplLCBpbmZvLnRyYW5zZm9ybSwgaW5mby5vcGFjaXR5LCBpbmZvLmFuY2hvclBvaW50LCBp
bmZvLmNoaWxkcmVuVHJhbnNmb3JtLCBpbmZvLmNvbnRlbnRzUmVjdCkpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVJbmZv
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAotewotICAg
IGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihsYXllcnMsIHJvb3RMYXllcklELCBkZWxldGVk
TGF5ZXJJRHMsIGNvbnRlbnRTY2FsZSkpOwotfQotCi1ib29sIFdlYkxheWVyVHJlZUluZm86OmRl
Y29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVyVHJlZUluZm8m
IGluZm8pCi17Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5s
YXllcnMsIGluZm8ucm9vdExheWVySUQsIGluZm8uZGVsZXRlZExheWVySURzLCBpbmZvLmNvbnRl
bnRTY2FsZSkpOwotfQotCi12b2lkIFdlYkxheWVyVXBkYXRlSW5mbzo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyLT5lbmNvZGUo
Q29yZUlQQzo6SW4obGF5ZXJJRCwgcmVjdCwgYml0bWFwSGFuZGxlKSk7Ci19Ci0KLWJvb2wgV2Vi
TGF5ZXJVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBXZWJMYXllclVwZGF0ZUluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29k
ZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcklELCBpbmZvLnJlY3QsIGluZm8uYml0bWFwSGFuZGxl
KSk7CisgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8V2ViTGF5ZXJJbmZvPjo6ZGVjb2Rl
KGRlY29kZXIsIGluZm8pOwogfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxh
eWVyVHJlZUluZm8uaAppbmRleCA5YjI3MWVlMmZlYmVkYTYwMTY2NmZmZThlZmEyZmE3ZjI2YjYz
YzRjLi5mOWEyZGUxNmUwZGI3NjRkOWMxOTc0YTYwMmIyY2U3MmE2M2Q4ZTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgKQEAgLTM0LDMyICszNCwxNiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIHR5cGVkZWYgdWludDMyX3QgV2ViTGF5ZXJJRDsKIGVudW0geyBJbnZh
bGlkV2ViTGF5ZXJJRCA9IDAgfTsKIAotc3RydWN0IFdlYkxheWVyVXBkYXRlSW5mbyB7Ci0gICAg
V2ViTGF5ZXJVcGRhdGVJbmZvKCkgeyB9Ci0gICAgV2ViTGF5ZXJVcGRhdGVJbmZvKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHIpCi0gICAgICAgIDogbGF5ZXJJRChJbnZhbGlkV2ViTGF5ZXJJRCkK
LSAgICAgICAgLCByZWN0KHIpIHsgfQotCi0gICAgV2ViTGF5ZXJJRCBsYXllcklEOwotICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdDsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBI
YW5kbGU7Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25z
dDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2Vi
TGF5ZXJVcGRhdGVJbmZvJik7Ci19OwotCisvLyBOT1RFOiBXZWJMYXllckluZm8gc2hvdWxkIG9u
bHkgdXNlIFBPRCB0eXBlcywgYXMgdG8gbWFrZSBzZXJpYWxpemF0aW9uIGZhc3Rlci4KIHN0cnVj
dCBXZWJMYXllckluZm8gewogICAgIFdlYkxheWVySW5mbygpCi0gICAgICAgIDogaWQoSW52YWxp
ZFdlYkxheWVySUQpCi0gICAgICAgICwgcGFyZW50KEludmFsaWRXZWJMYXllcklEKQorICAgICAg
ICA6IHBhcmVudChJbnZhbGlkV2ViTGF5ZXJJRCkKICAgICAgICAgLCByZXBsaWNhKEludmFsaWRX
ZWJMYXllcklEKQogICAgICAgICAsIG1hc2soSW52YWxpZFdlYkxheWVySUQpCiAgICAgICAgICwg
aW1hZ2VCYWNraW5nU3RvcmVJRCgwKQogICAgICAgICAsIG9wYWNpdHkoMCkKICAgICAgICAgLCBm
bGFncygwKSB7IH0KIAotICAgIFN0cmluZyBuYW1lOwotICAgIFdlYkxheWVySUQgaWQ7CiAgICAg
V2ViTGF5ZXJJRCBwYXJlbnQ7CiAgICAgV2ViTGF5ZXJJRCByZXBsaWNhOwogICAgIFdlYkxheWVy
SUQgbWFzazsKQEAgLTg0LDI3ICs2OCwxMSBAQCBzdHJ1Y3QgV2ViTGF5ZXJJbmZvIHsKICAgICAg
ICAgfTsKICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgIH07Ci0gICAgVmVjdG9yPFdl
YkxheWVySUQ+IGNoaWxkcmVuOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlQmFj
a2luZ1N0b3JlOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikg
Y29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IFdlYkxheWVySW5mbyYpOwogfTsKIAotc3RydWN0IFdlYkxheWVyVHJlZUluZm8gewotICAgIFdl
YkxheWVyVHJlZUluZm8oKQotICAgICAgICA6IHJvb3RMYXllcklEKEludmFsaWRXZWJMYXllcklE
KQotICAgICAgICAsIGNvbnRlbnRTY2FsZSgwKSB7IH0KLQotICAgIFZlY3RvcjxXZWJMYXllcklu
Zm8+IGxheWVyczsKLSAgICBWZWN0b3I8V2ViTGF5ZXJJRD4gZGVsZXRlZExheWVySURzOwotICAg
IFdlYkxheWVySUQgcm9vdExheWVySUQ7Ci0gICAgZmxvYXQgY29udGVudFNjYWxlOwotCi0gICAg
dm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7Ci0gICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYkxheWVyVHJlZUluZm8m
KTsKLX07Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXgg
YzJmNjE2MDI5NmIwMDczODliZWI4NTM0N2FmMzdmNGM3MzBjMmEyNC4uMjQ0OWMzMTI2MzdiZGNi
MTc4OTk1MWEwZWQ0MDgwMThiZjhjY2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTk4LDkgKzk4LDE0IEBAIHZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEIGlkKQogICAg
IHVwZGF0ZVZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jQ29t
cG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdlYkxheWVySW5mbyYgaW5mbykKK3ZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29u
c3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJldlYkxh
eWVyVHJlZVJlbmRlcmVyOjpzeW5jTGF5ZXJQYXJhbWV0ZXJzLCBtX3JlbmRlcmVyLmdldCgpLCBp
bmZvKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyU3RhdGUsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBpbmZvKSk7Cit9CisKK3ZvaWQgTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJlbikKK3sKKyAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbiwgbV9yZW5k
ZXJlci5nZXQoKSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5
OjpkaWRSZW5kZXJGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVl
SG9zdFByb3h5LmgKaW5kZXggMjU4N2MxZjIxYTliZmZkYjhmMjYxMjgyOGRhNGIzNjRjYzU0YTQ5
Zi4uYTkwY2U0MDI5MjNkYmNmMzVkN2ZjMWQ1MzY4Mjk3OGI0NGEwMGYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaApAQCAtNDcsNyArNDcsOCBA
QCBjbGFzcyBMYXllclRyZWVIb3N0UHJveHkgewogcHVibGljOgogICAgIExheWVyVHJlZUhvc3RQ
cm94eShEcmF3aW5nQXJlYVByb3h5Kik7CiAgICAgdmlydHVhbCB+TGF5ZXJUcmVlSG9zdFByb3h5
KCk7Ci0gICAgdm9pZCBzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdlYkxheWVySW5m
byYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0
IFdlYkxheWVySW5mbyYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllckNoaWxkcmVuKFdl
YkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYpOwogICAgIHZvaWQgZGVsZXRlQ29t
cG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA3MDQ2NWIzNTAyMTcxZTc2Yzg4YzIyZDYwZWU4Nzg1OGY5MmU4
MjY4Li4zMDEwM2UzNWNkOGZkY2NlOGExZmNkZjBlNjUxOGI0ODY0NmZhYTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTE5LDcgKzE5LDggQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykgJiYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiBtZXNzYWdlcyAtPiBMYXllclRyZWVIb3N0
UHJveHkgewotICAgIFN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViS2l0OjpXZWJMYXllcklu
Zm8gbGF5ZXJJbmZvKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZSh1aW50MzJfdCBpZCwg
V2ViS2l0OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJD
aGlsZHJlbih1aW50MzJfdCBpZCwgVmVjdG9yPHVpbnQzMl90PiBjaGlsZHJlbikKICAgICBTZXRS
b290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVDb21wb3NpdGluZ0xh
eWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklE
LCBpbnQgdGlsZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDQxOTM3
Yjc1YjMwMWVjZDA1ZmYwYzE2YmUwNTYyMmE0MWExODJlMTYuLmYyOGQwNzk0ZTExM2MzNWEyNDUz
MmNhNmQ2ZWY4Y2JmZDI4MzcwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMTU1LDE0ICsxNTUsMzIgQEAgdm9pZCBXZWJM
YXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVmlld3BvcnQoKQogICAgICAgICBtX2xheWVyVHJlZUhv
c3RQcm94eS0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVSZW5kZXJl
cjo6c3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKK3Zv
aWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwg
Y29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZElEcykKIHsKLSAgICBXZWJMYXllcklEIGlk
ID0gbGF5ZXJJbmZvLmlkOwogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBMYXllck1hcDo6aXRl
cmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGl0LT5zZWNvbmQ7CisgICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRJRHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
V2ViTGF5ZXJJRCBjaGlsZElEID0gY2hpbGRJRHNbaV07CisgICAgICAgIEdyYXBoaWNzTGF5ZXIq
IGNoaWxkID0gbGF5ZXJCeUlEKGNoaWxkSUQpOworICAgICAgICBpZiAoIWNoaWxkKSB7CisgICAg
ICAgICAgICBjaGlsZCA9IGNyZWF0ZUxheWVyKGNoaWxkSUQpLmxlYWtQdHIoKTsKKyAgICAgICAg
ICAgIG1fbGF5ZXJzLmFkZChjaGlsZElELCBjaGlsZCk7CisgICAgICAgIH0KKyAgICAgICAgY2hp
bGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICB9CisgICAgbGF5ZXItPnNldENoaWxkcmVuKGNoaWxk
cmVuKTsKK30KIAotICAgIGxheWVyLT5zZXROYW1lKGxheWVySW5mby5uYW1lKTsKK3ZvaWQgV2Vi
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2Vi
TGF5ZXJJbmZvJiBsYXllckluZm8pCit7CisgICAgZW5zdXJlTGF5ZXIoaWQpOworICAgIExheWVy
TWFwOjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBt
X2xheWVycy5lbmQoKSk7CisKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7
CiAKICAgICBsYXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5y
ZXBsaWNhKSk7CiAgICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLm1h
c2spKTsKQEAgLTE4MywxOSArMjAxLDYgQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c3lu
Y0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKICAgICBsYXll
ci0+c2V0TWFza3NUb0JvdW5kcyhsYXllckluZm8uaXNSb290TGF5ZXIgPyBmYWxzZSA6IGxheWVy
SW5mby5tYXNrc1RvQm91bmRzKTsKICAgICBsYXllci0+c2V0T3BhY2l0eShsYXllckluZm8ub3Bh
Y2l0eSk7CiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxheWVySW5mby5wcmVzZXJ2ZXMzRCk7
Ci0gICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGF5ZXJJbmZvLmNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdl
YkxheWVySUQgY2hpbGRJRCA9IGxheWVySW5mby5jaGlsZHJlbltpXTsKLSAgICAgICAgR3JhcGhp
Y3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7Ci0gICAgICAgIGlmICghY2hpbGQp
IHsKLSAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIoY2hpbGRJRCkubGVha1B0cigpOwot
ICAgICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNoaWxkKTsKLSAgICAgICAgfQotICAg
ICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwotICAgIH0KLSAgICBsYXllci0+c2V0Q2hpbGRy
ZW4oY2hpbGRyZW4pOwotCiAgICAgaWYgKGxheWVySW5mby5pc1Jvb3RMYXllciAmJiBtX3Jvb3RM
YXllcklEICE9IGlkKQogICAgICAgICBzZXRSb290TGF5ZXJJRChpZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCmluZGV4IGE3ZjhhY2Rh
YWMyNTRmMjliODEyMTM3NDk3MDg2OTA4YmMxYjU5NjMuLjQ0Y2RiYTdjYTQ2OTc2MDJkM2U1MDVl
NTljZDI5MmIwMGE3MDZjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJMYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
YXllclRyZWVSZW5kZXJlci5oCkBAIC01OSw3ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGVsZXRlTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChXZWJMYXll
cklEKTsKLSAgICB2b2lkIHN5bmNMYXllclBhcmFtZXRlcnMoY29uc3QgV2ViTGF5ZXJJbmZvJik7
CisgICAgdm9pZCBzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJM
YXllcklEPiYpOworICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJM
YXllckluZm8mKTsKICAgICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBmbG9hdCBz
Y2FsZSk7CiAgICAgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCk7CiAgICAgdm9pZCB1
cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggNDQ0YTc4MWE1MjU4MGVlMmI2YzEzZmQyM2JjMTg3MDgx
ODMzOTZkZS4uNTIzYjQxOTQ3MzRhYTQ2MTM5ZDg2YWMwOTkyMTBhZTZmZjhkYTRiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC02MCw5ICs2MCwxNiBAQCBzdGF0aWMgV2ViTGF5ZXJJ
RCB0b1dlYkxheWVySUQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgcmV0dXJuIGxheWVyID8g
dG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+aWQoKSA6IDA7CiB9CiAKLXZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6bm90aWZ5Q2hhbmdlKCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpCiB7Ci0gICAgbV9tb2RpZmllZCA9IHRydWU7CisgICAgbV9zaG91bGRTeW5j
TGF5ZXJTdGF0ZSA9IHRydWU7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+
bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmRp
ZENoYW5nZUNoaWxkcmVuKCkKK3sKKyAgICBtX3Nob3VsZFN5bmNDaGlsZHJlbiA9IHRydWU7CiAg
ICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+bm90aWZ5U3luY1JlcXVpcmVkKHRo
aXMpOwogfQpAQCAtODEsMjEgKzg4LDIyIEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0U2hv
dWxkVXBkYXRlVmlzaWJsZVJlY3QoKQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmRpZENoYW5n
ZUdlb21ldHJ5KCkKIHsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0
YXRlKCk7CiAgICAgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKIH0KIAogV2ViR3JhcGhp
Y3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbWFza1RhcmdldCgwKQotICAgICwg
bV9tb2RpZmllZCh0cnVlKQogICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCiAgICAgLCBtX3No
b3VsZFVwZGF0ZVZpc2libGVSZWN0KHRydWUpCisgICAgLCBtX3Nob3VsZFN5bmNMYXllclN0YXRl
KHRydWUpCisgICAgLCBtX3Nob3VsZFN5bmNDaGlsZHJlbih0cnVlKQogICAgICwgbV93ZWJHcmFw
aGljc0xheWVyQ2xpZW50KDApCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5mKQorICAgICwgbV9j
b250ZW50c1NjYWxlKDEpCiB7CiAgICAgc3RhdGljIFdlYkxheWVySUQgbmV4dExheWVySUQgPSAx
OwotICAgIG1fbGF5ZXJJbmZvLmlkID0gbmV4dExheWVySUQrKzsKKyAgICBtX2lkID0gbmV4dExh
eWVySUQrKzsKICAgICBsYXllckJ5SURNYXAoKS5hZGQoaWQoKSwgdGhpcyk7CiB9CiAKQEAgLTEy
Myw5ICsxMzEsOSBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZl
Y3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViR3JhcGhpY3NMYXllciogY2hpbGQg
PSB0b1dlYkdyYXBoaWNzTGF5ZXIoY2hpbGRyZW5baV0pOwogICAgICAgICBjaGlsZC0+c2V0V2Vi
R3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwotICAgICAgICBj
aGlsZC0+bm90aWZ5Q2hhbmdlKCk7CisgICAgICAgIGNoaWxkLT5kaWRDaGFuZ2VMYXllclN0YXRl
KCk7CiAgICAgfQotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzMywzMiArMTQxLDMyIEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGQobGF5ZXIpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllcikt
PnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKLSAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlD
aGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5kaWRDaGFuZ2VMYXllclN0
YXRlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsK
ICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKICAgICB0
b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2Vi
R3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90
aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVy
KGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7
CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVy
KiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjph
ZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5
ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7
Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90
aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5
ZXJTdGF0ZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBz
aWJsaW5nKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xh
eWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGljc0xh
eWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgdG9X
ZWJHcmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRpZENo
YW5nZUNoaWxkcmVuKCk7CiB9CiAKIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxk
KEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCkKQEAgLTE2
NiwyMCArMTc0LDIwIEBAIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKEdyYXBo
aWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDCiAgICAgYm9vbCBvayA9IEdy
YXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpOwogICAgIGlmICgh
b2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKLSAgICB0b1dl
YkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VD
aGlsZHJlbigpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihvbGRDaGlsZCktPmRpZENoYW5nZUxh
eWVyU3RhdGUoKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQpLT5zZXRXZWJHcmFw
aGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFw
aGljc0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xh
eWVyKG5ld0NoaWxkKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKQogewogICAgIGlm
IChXZWJHcmFwaGljc0xheWVyKiBwYXJlbnRMYXllciA9IHRvV2ViR3JhcGhpY3NMYXllcihwYXJl
bnQoKSkpCi0gICAgICAgIHBhcmVudExheWVyLT5ub3RpZnlDaGFuZ2UoKTsKKyAgICAgICAgcGFy
ZW50TGF5ZXItPmRpZENoYW5nZUNoaWxkcmVuKCk7CiAgICAgR3JhcGhpY3NMYXllcjo6cmVtb3Zl
RnJvbVBhcmVudCgpOwogCi0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJT
dGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHApCkBAIC0yNTMsNyArMjYxLDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
ZXREcmF3c0NvbnRlbnQoYm9vbCBiKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXll
cjo6c2V0RHJhd3NDb250ZW50KGIpOwogCi0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hh
bmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
T3BhcXVlKGJvb2wgYikKQEAgLTI2Myw3ICsyNzEsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgYikKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQog
ICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFN1cHBvcnRzQWxwaGEoIWIpOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKGIpOwotICAgIG5vdGlmeUNoYW5nZSgpOwor
ICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
ZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiKQpAQCAtMjcyLDcgKzI4MCw3IEBAIHZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgYikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGIpOwotICAg
IG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCkBAIC0yODEsNyArMjg5
LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkob3BhY2l0eSk7
Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByKQpA
QCAtMjkwLDcgKzI5OCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0
KGNvbnN0IEludFJlY3QmIHIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzUmVjdChyKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VM
YXllclN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNOZWVk
c0Rpc3BsYXkoKQpAQCAtMzA5LDEzICszMTcsMTMgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICAvLyBXZSBhZG9wdCBmaXJz
dCwgaW4gY2FzZSB0aGlzIGlzIHRoZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkgd2UgYXZvaWQgZGVz
dHJveWluZyBhbmQgcmVjcmVhdGluZyB0aGUgaW1hZ2UuCiAgICAgICAgIG5ld0lEID0gbV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKGltYWdlKTsKICAgICAg
ICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUobV9s
YXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7Ci0gICAgICAgIG5vdGlmeUNoYW5nZSgpOwor
ICAgICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgICAgIGlmIChtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEICYmIG5ld0lEID09IG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0
b3JlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYg
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50IGlzIG5vdCBzZXQgeWV0IHRoZXJlIHNob3VsZCBiZSBu
byBiYWNraW5nIHN0b3JlIElELgogICAgICAgICBBU1NFUlQoIW1fbGF5ZXJJbmZvLmltYWdlQmFj
a2luZ1N0b3JlSUQpOwotICAgICAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICAgICAgZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpOwogICAgIH0KIAogICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3Jl
SUQgPSBuZXdJRDsKQEAgLTMzNyw4ICszNDUsOCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBXZWJHcmFwaGljc0xheWVyKiB3
ZWJHcmFwaGljc0xheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKTsKICAgICB3ZWJHcmFw
aGljc0xheWVyLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudCk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+c2V0TWFza1RhcmdldCh0aGlzKTsKLSAgICB3
ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAg
ICB3ZWJHcmFwaGljc0xheWVyLT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpOwogCiB9CiAKQEAgLTM1MSw3ICszNTksNyBAQCB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgICAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1f
d2ViR3JhcGhpY3NMYXllckNsaWVudCk7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihsYXllcik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5
ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheSgp
CkBAIC0zNjMsMTIgKzM3MSwxMiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlz
cGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKG1fbWFpbkJhY2tp
bmdTdG9yZSkKICAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5pbnZhbGlkYXRlKEludFJlY3Qo
cmVjdCkpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsK
IH0KIAogV2ViTGF5ZXJJRCBXZWJHcmFwaGljc0xheWVyOjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fbGF5ZXJJbmZvLmlkOworICAgIHJldHVybiBtX2lkOwogfQogCiB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAg
LTM5MCwxMyArMzk4LDI0IEBAIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhpY3NMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViR3JhcGhpY3NM
YXllcio+KGxheWVyKTsKIH0KIAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJQYXJh
bWV0ZXJzKCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NoaWxkcmVuKCkKK3sKKyAgICBp
ZiAoIW1fc2hvdWxkU3luY0NoaWxkcmVuKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRT
eW5jQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICBWZWN0b3I8V2ViTGF5ZXJJRD4gY2hpbGRJRHM7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAg
ICBjaGlsZElEcy5hcHBlbmQodG9XZWJMYXllcklEKGNoaWxkcmVuKClbaV0pKTsKKworICAgIG1f
d2ViR3JhcGhpY3NMYXllckNsaWVudC0+c3luY0xheWVyQ2hpbGRyZW4obV9pZCwgY2hpbGRJRHMp
OworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICB7Ci0gICAg
aWYgKCFtX21vZGlmaWVkKQorICAgIGlmICghbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSkKICAgICAg
ICAgcmV0dXJuOworICAgIG1fc2hvdWxkU3luY0xheWVyU3RhdGUgPSBmYWxzZTsKIAotICAgIG1f
bW9kaWZpZWQgPSBmYWxzZTsKLSAgICBtX2xheWVySW5mby5uYW1lID0gbmFtZSgpOwogICAgIG1f
bGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQoKTsKICAgICBtX2xheWVySW5mby5i
YWNrZmFjZVZpc2libGUgPSBiYWNrZmFjZVZpc2liaWxpdHkoKTsKICAgICBtX2xheWVySW5mby5j
aGlsZHJlblRyYW5zZm9ybSA9IGNoaWxkcmVuVHJhbnNmb3JtKCk7CkBAIC00MTIsMjQgKzQzMSwy
NCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclBhcmFtZXRlcnMoKQogICAgIG1f
bGF5ZXJJbmZvLnJlcGxpY2EgPSB0b1dlYkxheWVySUQocmVwbGljYUxheWVyKCkpOwogICAgIG1f
bGF5ZXJJbmZvLnNpemUgPSBzaXplKCk7CiAgICAgbV9sYXllckluZm8udHJhbnNmb3JtID0gdHJh
bnNmb3JtKCk7Ci0gICAgbV9sYXllckluZm8uY2hpbGRyZW4uY2xlYXIoKTsKLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKLSAgICAgICAgbV9sYXll
ckluZm8uY2hpbGRyZW4uYXBwZW5kKHRvV2ViTGF5ZXJJRChjaGlsZHJlbigpW2ldKSk7CisgICAg
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5zeW5jTGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5m
byk7Cit9CiAKLSAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRpZFN5bmNDb21wb3NpdGlu
Z1N0YXRlRm9yTGF5ZXIobV9sYXllckluZm8pOwordm9pZCBXZWJHcmFwaGljc0xheWVyOjplbnN1
cmVJbWFnZUJhY2tpbmdTdG9yZSgpCit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKQorICAgICAgICBt
X2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1hZ2UuZ2V0KCkpOwogfQogdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewogICAg
IC8vIFRoZSByZW1vdGUgaW1hZ2UgbWlnaHQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJ5IHB1cmdlQmFj
a2luZ1N0b3Jlcy4KLSAgICBpZiAobV9pbWFnZSAmJiAhbV9sYXllckluZm8uaW1hZ2VCYWNraW5n
U3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IG1fd2Vi
R3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShtX2ltYWdlLmdldCgp
KTsKLQorICAgIGVuc3VyZUltYWdlQmFja2luZ1N0b3JlKCk7CiAgICAgY29tcHV0ZVRyYW5zZm9y
bWVkVmlzaWJsZVJlY3QoKTsKLSAgICBzeW5jTGF5ZXJQYXJhbWV0ZXJzKCk7CisgICAgc3luY0No
aWxkcmVuKCk7CisgICAgc3luY0xheWVyU3RhdGUoKTsKICAgICB1cGRhdGVDb250ZW50QnVmZmVy
cygpOwotCi0gICAgbV9tb2RpZmllZCA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpCkBAIC00MzksNyArNDU4LDcgQEAgdm9p
ZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKQogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiB7CiAgICAgbV9sYXll
ckluZm8uaXNSb290TGF5ZXIgPSBpc1Jvb3Q7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2li
bGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggZjAyYzNhOTRjNDI5MDAxMmZmMzk3
OGY1YWE0ZGQ3ZGVkZTY3MzViYS4uZjlkNmVhNjc0Y2EzYTI0NGJhMjA3Y2VkYmVlZDNjOTIyMTBj
ZDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTU1LDcgKzU1LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IGFkb3B0SW1hZ2VCYWNraW5nU3RvcmUoV2ViQ29yZTo6SW1h
Z2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VJbWFnZUJhY2tpbmdTdG9yZShpbnQ2
NF90KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5
ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJT
dGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklE
PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllciopID0gMDsKIH07CkBAIC0xMDEsMTEgKzEwMiwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0
UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpOworCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKICAgICBXZWJLaXQ6
OldlYkxheWVySUQgaWQoKSBjb25zdDsKICAgICBzdGF0aWMgV2ViR3JhcGhpY3NMYXllciogbGF5
ZXJCeUlEKFdlYktpdDo6V2ViTGF5ZXJJRCk7Ci0gICAgYm9vbCBpc01vZGlmaWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RpZmllZDsgfQogICAgIHZvaWQgZGlkU3luY2hyb25pemUoKTsKICAgICBJ
bWFnZSogaW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAKQEAgLTEyOSw2ICsxMzAs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoaW50IHRpbGVJRCk7CiAK
ICAgICB2b2lkIHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xh
eWVyQ2xpZW50Kik7CisgICAgdm9pZCBzeW5jQ2hpbGRyZW4oKTsKKyAgICB2b2lkIHN5bmNMYXll
clN0YXRlKCk7CisgICAgdm9pZCBlbnN1cmVJbWFnZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgdm9p
ZCBhZGp1c3RWaXNpYmxlUmVjdCgpOwogICAgIGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2Fw
KCkgY29uc3Q7CkBAIC0xMzcsMTcgKzE0MSwyMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIFdlYktpdDo6V2ViTGF5ZXJJRCBt
X2lkOwogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwogICAgIFJlZlB0cjxJ
bWFnZT4gbV9pbWFnZTsKICAgICBHcmFwaGljc0xheWVyKiBtX21hc2tUYXJnZXQ7CiAgICAgRmxv
YXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBMYXllclRyYW5zZm9ybSBtX2xheWVyVHJh
bnNmb3JtOwotICAgIGJvb2wgbV9tb2RpZmllZCA6IDE7CiAgICAgYm9vbCBtX2luVXBkYXRlTW9k
ZSA6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOworICAgIGJvb2wg
bV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0NoaWxkcmVu
OiAxOwogCiAgICAgdm9pZCBub3RpZnlDaGFuZ2UoKTsKICAgICB2b2lkIGRpZENoYW5nZUdlb21l
dHJ5KCk7CisgICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgdm9pZCBkaWRDaGFu
Z2VDaGlsZHJlbigpOwogICAgIHZvaWQgY3JlYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBib29s
IHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAK
aW5kZXggYmRhNjA2Mzg4MjgyOWM0ZjZkMWVhNWYzMTQxNzNiYzMyYWViNWI1Ni4uMTNlOWZjMTUz
NzU4OGZmZjdlNmZjNzg4ZWMwNjZkMzkzZTFhOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKQEAgLTIy
NiwxMCArMjI2LDE2IEBAIGJvb2wgTGF5ZXJUcmVlSG9zdFF0OjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RRdDo6
ZGlkU3luY0NvbXBvc2l0aW5nU3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXllckluZm8mIGluZm8p
Cit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29u
c3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsK
LSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6U3luY0Nv
bXBvc2l0aW5nTGF5ZXJTdGF0ZShpbmZvKSk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZShpZCwgaW5mbykp
OworfQorCit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJ
RCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJlbikKK3sKKyAgICBtX3Nob3Vs
ZFN5bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRy
ZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsK
IH0KIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OmF0dGFjaExheWVyKFdlYkdyYXBoaWNzTGF5ZXIq
IGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IDA4ZjBlNjRiNzRiM2QxM2RjMWY0YmI2Zjc1YmJiNDFl
ZmZmMDU1OWYuLjhkMzIzNmVmNDJkZDg3YWEyZjRmZDE5NzVkYTU2ZTU4ZDM3ZWZjODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0
UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVl
SG9zdFF0LmgKQEAgLTcxLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXJn
ZUJhY2tpbmdTdG9yZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNB
bGxvd2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3Qo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5
ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRl
KFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5j
TGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciopOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKik7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136267</attachid>
            <date>2012-04-09 10:54:51 -0700</date>
            <delta_ts>2012-04-09 16:45:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82534-20120409105448.patch</filename>
            <type>text/plain</type>
            <size>28629</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGNlNjRmMWRlNTI2NTBm
ZTg3MWU0NjE3YWU1YmI0MWFhNzUyMTc5Yi4uNjUyMWFiOTI5NDBhZjc2MzU2YTFlMmRhMTA1MThl
YjI3N2EwNDU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIFN5bmMgdGhlIGxheWVyJ3Mgc3RhdGUgYW5kIHRoZSBsYXllcidzIGNoaWxkcmVuIHNlcGFy
YXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgU3dpdGNoZWQgdGhlIFdlYkxheWVySW5mbyBzdHJ1Y3QsIHdoaWNoIGluY2x1ZGVz
IGEgc2luZ2xlIGxheWVyJ3Mgc3RhdGUsCisgICAgICAgIHRvIHVzZSBvbmx5IFBPRCB0eXBlcyB0
aGF0IGNhbiBiZSBzZXJpYWxpemVkIHZpYSBTaW1wbGVBcmd1bWVudENvZGVyLgorICAgICAgICBU
byBhbGxvdyBQT0Qtc2VyaWFsaXphdGlvbiwgd2Ugc2VyaWFsaXplIHRoZSBjaGlsZHJlbiBJRHMg
aW4gYSBzZXBlcmF0ZQorICAgICAgICBtZXNzYWdlIChTZXRMYXllckNoaWxkcmVuKSwgYW5kIG9u
bHkgd2hlbiB0aGUgdHJlZSBsYXlvdXQgaGFzIGFjdHVhbGx5CisgICAgICAgIGJlZW4gbW9kaWZp
ZWQuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bmZvOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW5mbzo6V2ViTGF5ZXJJbmZvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVy
Q2hpbGRyZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaDoKKyAg
ICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJl
ZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0
TGF5ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXllclRyZWVSZW5kZXJlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUxheWVyU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
OjpXZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpzeW5jQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cjo6c3luY0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c3luY0ltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViR3JhcGhp
Y3NMYXllckNsaWVudCk6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllckNoaWxkcmVuKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6CisgICAgICAg
IChMYXllclRyZWVIb3N0UXQpOgorCisyMDEyLTAzLTI4ICBObydhbSBSb3NlbnRoYWwgIDxub2Ft
LnJvc2VudGhhbEBub2tpYS5jb20+CisKICAgICAgICAgW1F0XVtXSzJdIEFjY2VsZXJhdGVkIGFu
ZCBub24tYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBuZWVkIHRvIGJlIHN5bmNocm9uaXplZAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwCmluZGV4IGIwNzZlNDMyOWI4
YzVhMzlhODIyY2ViOTEzZjY0NTNiNjU0NGI0MzUuLmZmZGVhNTIyYjM5ZDI2YzRmN2E1MTE4OTFl
NWRlY2I4NzA4ZDQ0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXll
clRyZWVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5m
by5jcHAKQEAgLTIyLDkgKzIyLDkgQEAKICNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykKICNp
bmNsdWRlICJXZWJMYXllclRyZWVJbmZvLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2UgQ29yZUlQ
QzsKIApAQCAtMzIsNDAgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYkxh
eWVySW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QK
IHsKLSAgICAvLyBXZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVzLCBiZWNhdXNl
IENvcmVJUEM6OkluL091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRzLgotICAgIGVu
Y29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpZCwgbmFtZSwgcGFyZW50LCBjaGlsZHJlbiwgZmxh
Z3MsIHJlcGxpY2EsIG1hc2ssIGltYWdlQmFja2luZ1N0b3JlSUQpKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGUoQ29yZUlQQzo6SW4ocG9zLCBzaXplLCB0cmFuc2Zvcm0sIG9wYWNpdHksIGFuY2hvclBv
aW50LCBjaGlsZHJlblRyYW5zZm9ybSwgY29udGVudHNSZWN0KSk7CisgICAgU2ltcGxlQXJndW1l
bnRDb2RlcjxXZWJMYXllckluZm8+OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwogfQogCiBib29s
IFdlYkxheWVySW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
V2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIC8vIFdlIGhhdmUgdG8gZGl2aWRlIGl0IHRvIHNl
dmVyYWwgbGluZXMsIGJlY2F1c2UgQ29yZUlQQzo6SW4vT3V0IHRha2VzIGEgbWF4aW11bSBvZiAx
MCBhcmd1bWVudHMuCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGluZm8u
aWQsIGluZm8ubmFtZSwgaW5mby5wYXJlbnQsIGluZm8uY2hpbGRyZW4sIGluZm8uZmxhZ3MsIGlu
Zm8ucmVwbGljYSwgaW5mby5tYXNrLCBpbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChp
bmZvLnBvcywgaW5mby5zaXplLCBpbmZvLnRyYW5zZm9ybSwgaW5mby5vcGFjaXR5LCBpbmZvLmFu
Y2hvclBvaW50LCBpbmZvLmNoaWxkcmVuVHJhbnNmb3JtLCBpbmZvLmNvbnRlbnRzUmVjdCkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJM
YXllclRyZWVJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAotewotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihsYXllcnMsIHJvb3RMYXll
cklELCBkZWxldGVkTGF5ZXJJRHMsIGNvbnRlbnRTY2FsZSkpOwotfQotCi1ib29sIFdlYkxheWVy
VHJlZUluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxh
eWVyVHJlZUluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBD
OjpPdXQoaW5mby5sYXllcnMsIGluZm8ucm9vdExheWVySUQsIGluZm8uZGVsZXRlZExheWVySURz
LCBpbmZvLmNvbnRlbnRTY2FsZSkpOwotfQotCi12b2lkIFdlYkxheWVyVXBkYXRlSW5mbzo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4obGF5ZXJJRCwgcmVjdCwgYml0bWFwSGFuZGxlKSk7Ci19
Ci0KLWJvb2wgV2ViTGF5ZXJVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBXZWJMYXllclVwZGF0ZUluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuIGRl
Y29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcklELCBpbmZvLnJlY3QsIGluZm8u
Yml0bWFwSGFuZGxlKSk7CisgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8V2ViTGF5ZXJJ
bmZvPjo6ZGVjb2RlKGRlY29kZXIsIGluZm8pOwogfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaAppbmRleCA5YjI3MWVlMmZlYmVkYTYwMTY2NmZmZThl
ZmEyZmE3ZjI2YjYzYzRjLi5mOWEyZGUxNmUwZGI3NjRkOWMxOTc0YTYwMmIyY2U3MmE2M2Q4ZTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgKQEAgLTM0LDMyICsz
NCwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHR5cGVkZWYgdWludDMyX3QgV2ViTGF5ZXJJRDsK
IGVudW0geyBJbnZhbGlkV2ViTGF5ZXJJRCA9IDAgfTsKIAotc3RydWN0IFdlYkxheWVyVXBkYXRl
SW5mbyB7Ci0gICAgV2ViTGF5ZXJVcGRhdGVJbmZvKCkgeyB9Ci0gICAgV2ViTGF5ZXJVcGRhdGVJ
bmZvKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHIpCi0gICAgICAgIDogbGF5ZXJJRChJbnZhbGlk
V2ViTGF5ZXJJRCkKLSAgICAgICAgLCByZWN0KHIpIHsgfQotCi0gICAgV2ViTGF5ZXJJRCBsYXll
cklEOwotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdDsKLSAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBiaXRtYXBIYW5kbGU7Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgV2ViTGF5ZXJVcGRhdGVJbmZvJik7Ci19OwotCisvLyBOT1RFOiBXZWJMYXllcklu
Zm8gc2hvdWxkIG9ubHkgdXNlIFBPRCB0eXBlcywgYXMgdG8gbWFrZSBzZXJpYWxpemF0aW9uIGZh
c3Rlci4KIHN0cnVjdCBXZWJMYXllckluZm8gewogICAgIFdlYkxheWVySW5mbygpCi0gICAgICAg
IDogaWQoSW52YWxpZFdlYkxheWVySUQpCi0gICAgICAgICwgcGFyZW50KEludmFsaWRXZWJMYXll
cklEKQorICAgICAgICA6IHBhcmVudChJbnZhbGlkV2ViTGF5ZXJJRCkKICAgICAgICAgLCByZXBs
aWNhKEludmFsaWRXZWJMYXllcklEKQogICAgICAgICAsIG1hc2soSW52YWxpZFdlYkxheWVySUQp
CiAgICAgICAgICwgaW1hZ2VCYWNraW5nU3RvcmVJRCgwKQogICAgICAgICAsIG9wYWNpdHkoMCkK
ICAgICAgICAgLCBmbGFncygwKSB7IH0KIAotICAgIFN0cmluZyBuYW1lOwotICAgIFdlYkxheWVy
SUQgaWQ7CiAgICAgV2ViTGF5ZXJJRCBwYXJlbnQ7CiAgICAgV2ViTGF5ZXJJRCByZXBsaWNhOwog
ICAgIFdlYkxheWVySUQgbWFzazsKQEAgLTg0LDI3ICs2OCwxMSBAQCBzdHJ1Y3QgV2ViTGF5ZXJJ
bmZvIHsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgIH07Ci0g
ICAgVmVjdG9yPFdlYkxheWVySUQ+IGNoaWxkcmVuOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGltYWdlQmFja2luZ1N0b3JlOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIFdlYkxheWVySW5mbyYpOwogfTsKIAotc3RydWN0IFdlYkxheWVyVHJlZUlu
Zm8gewotICAgIFdlYkxheWVyVHJlZUluZm8oKQotICAgICAgICA6IHJvb3RMYXllcklEKEludmFs
aWRXZWJMYXllcklEKQotICAgICAgICAsIGNvbnRlbnRTY2FsZSgwKSB7IH0KLQotICAgIFZlY3Rv
cjxXZWJMYXllckluZm8+IGxheWVyczsKLSAgICBWZWN0b3I8V2ViTGF5ZXJJRD4gZGVsZXRlZExh
eWVySURzOwotICAgIFdlYkxheWVySUQgcm9vdExheWVySUQ7Ci0gICAgZmxvYXQgY29udGVudFNj
YWxlOwotCi0gICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYkxh
eWVyVHJlZUluZm8mKTsKLX07Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVI
b3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94
eS5jcHAKaW5kZXggYzJmNjE2MDI5NmIwMDczODliZWI4NTM0N2FmMzdmNGM3MzBjMmEyNC4uMjQ0
OWMzMTI2MzdiZGNiMTc4OTk1MWEwZWQ0MDgwMThiZjhjY2FlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTk4LDkgKzk4LDE0IEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJMYXll
cklEIGlkKQogICAgIHVwZGF0ZVZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdlYkxheWVySW5mbyYgaW5mbykK
K3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViTGF5
ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJldlYkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jTGF5ZXJQYXJhbWV0ZXJzLCBtX3JlbmRl
cmVyLmdldCgpLCBpbmZvKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5ZXJUcmVl
UmVuZGVyZXI6OnNldExheWVyU3RhdGUsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBpbmZvKSk7Cit9
CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4o
V2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJlbikKK3sKKyAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGls
ZHJlbiwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKIHZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggMjU4N2MxZjIxYTliZmZkYjhmMjYxMjgyOGRh
NGIzNjRjYzU0YTQ5Zi4uYTkwY2U0MDI5MjNkYmNmMzVkN2ZjMWQ1MzY4Mjk3OGI0NGEwMGYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaApAQCAt
NDcsNyArNDcsOCBAQCBjbGFzcyBMYXllclRyZWVIb3N0UHJveHkgewogcHVibGljOgogICAgIExh
eWVyVHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5Kik7CiAgICAgdmlydHVhbCB+TGF5ZXJU
cmVlSG9zdFByb3h5KCk7Ci0gICAgdm9pZCBzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0
IFdlYkxheWVySW5mbyYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllclN0YXRlKFdlYkxh
eWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXll
ckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYpOwogICAgIHZv
aWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJU
cmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVy
VHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3MDQ2NWIzNTAyMTcxZTc2Yzg4YzIyZDYw
ZWU4Nzg1OGY5MmU4MjY4Li4zMDEwM2UzNWNkOGZkY2NlOGExZmNkZjBlNjUxOGI0ODY0NmZhYTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW4KQEAgLTE5LDcgKzE5LDggQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykgJiYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiBtZXNzYWdlcyAtPiBM
YXllclRyZWVIb3N0UHJveHkgewotICAgIFN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViS2l0
OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZSh1
aW50MzJfdCBpZCwgV2ViS2l0OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQorICAgIFNldENvbXBv
c2l0aW5nTGF5ZXJDaGlsZHJlbih1aW50MzJfdCBpZCwgVmVjdG9yPHVpbnQzMl90PiBjaGlsZHJl
bikKICAgICBTZXRSb290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVD
b21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50
MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
CmluZGV4IDQxOTM3Yjc1YjMwMWVjZDA1ZmYwYzE2YmUwNTYyMmE0MWExODJlMTYuLmYyOGQwNzk0
ZTExM2MzNWEyNDUzMmNhNmQ2ZWY4Y2JmZDI4MzcwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMTU1LDE0ICsxNTUsMzIg
QEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVmlld3BvcnQoKQogICAgICAgICBt
X2xheWVyVHJlZUhvc3RQcm94eS0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9pZCBXZWJMYXll
clRyZWVSZW5kZXJlcjo6c3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mIGxh
eWVySW5mbykKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4oV2Vi
TGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZElEcykKIHsKLSAgICBX
ZWJMYXllcklEIGlkID0gbGF5ZXJJbmZvLmlkOwogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBM
YXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKICAgICBHcmFwaGljc0xh
eWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7CisgICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGls
ZHJlbjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRJRHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgV2ViTGF5ZXJJRCBjaGlsZElEID0gY2hpbGRJRHNbaV07CisgICAgICAgIEdy
YXBoaWNzTGF5ZXIqIGNoaWxkID0gbGF5ZXJCeUlEKGNoaWxkSUQpOworICAgICAgICBpZiAoIWNo
aWxkKSB7CisgICAgICAgICAgICBjaGlsZCA9IGNyZWF0ZUxheWVyKGNoaWxkSUQpLmxlYWtQdHIo
KTsKKyAgICAgICAgICAgIG1fbGF5ZXJzLmFkZChjaGlsZElELCBjaGlsZCk7CisgICAgICAgIH0K
KyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICB9CisgICAgbGF5ZXItPnNldENo
aWxkcmVuKGNoaWxkcmVuKTsKK30KIAotICAgIGxheWVyLT5zZXROYW1lKGxheWVySW5mby5uYW1l
KTsKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluZm8pCit7CisgICAgZW5zdXJlTGF5ZXIoaWQp
OworICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQpOworICAgIEFT
U0VSVChpdCAhPSBtX2xheWVycy5lbmQoKSk7CisKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGl0LT5zZWNvbmQ7CiAKICAgICBsYXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXJCeUlE
KGxheWVySW5mby5yZXBsaWNhKSk7CiAgICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SUQo
bGF5ZXJJbmZvLm1hc2spKTsKQEAgLTE4MywxOSArMjAxLDYgQEAgdm9pZCBXZWJMYXllclRyZWVS
ZW5kZXJlcjo6c3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5m
bykKICAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhsYXllckluZm8uaXNSb290TGF5ZXIgPyBm
YWxzZSA6IGxheWVySW5mby5tYXNrc1RvQm91bmRzKTsKICAgICBsYXllci0+c2V0T3BhY2l0eShs
YXllckluZm8ub3BhY2l0eSk7CiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxheWVySW5mby5w
cmVzZXJ2ZXMzRCk7Ci0gICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJJbmZvLmNoaWxkcmVuLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFdlYkxheWVySUQgY2hpbGRJRCA9IGxheWVySW5mby5jaGlsZHJlbltpXTsKLSAg
ICAgICAgR3JhcGhpY3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7Ci0gICAgICAg
IGlmICghY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIoY2hpbGRJRCku
bGVha1B0cigpOwotICAgICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNoaWxkKTsKLSAg
ICAgICAgfQotICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwotICAgIH0KLSAgICBsYXll
ci0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotCiAgICAgaWYgKGxheWVySW5mby5pc1Jvb3RMYXll
ciAmJiBtX3Jvb3RMYXllcklEICE9IGlkKQogICAgICAgICBzZXRSb290TGF5ZXJJRChpZCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCmlu
ZGV4IGE3ZjhhY2RhYWMyNTRmMjliODEyMTM3NDk3MDg2OTA4YmMxYjU5NjMuLjQ0Y2RiYTdjYTQ2
OTc2MDJkM2U1MDVlNTljZDI5MmIwMGE3MDZjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCkBAIC01OSw3ICs1OSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGVsZXRlTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRSb290TGF5
ZXJJRChXZWJMYXllcklEKTsKLSAgICB2b2lkIHN5bmNMYXllclBhcmFtZXRlcnMoY29uc3QgV2Vi
TGF5ZXJJbmZvJik7CisgICAgdm9pZCBzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0
IFZlY3RvcjxXZWJMYXllcklEPiYpOworICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShXZWJMYXllcklE
LCBjb25zdCBXZWJMYXllckluZm8mKTsKICAgICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwg
aW50LCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCk7
CiAgICAgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNDQ0YTc4MWE1MjU4MGVlMmI2YzEz
ZmQyM2JjMTg3MDgxODMzOTZkZS4uNTIzYjQxOTQ3MzRhYTQ2MTM5ZDg2YWMwOTkyMTBhZTZmZjhk
YTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC02MCw5ICs2MCwxNiBAQCBzdGF0
aWMgV2ViTGF5ZXJJRCB0b1dlYkxheWVySUQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgcmV0
dXJuIGxheWVyID8gdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+aWQoKSA6IDA7CiB9CiAKLXZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6bm90aWZ5Q2hhbmdlKCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpCiB7Ci0gICAgbV9tb2RpZmllZCA9IHRydWU7CisgICAg
bV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSA9IHRydWU7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAg
ICBjbGllbnQoKS0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOworfQorCit2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OmRpZENoYW5nZUNoaWxkcmVuKCkKK3sKKyAgICBtX3Nob3VsZFN5bmNDaGlsZHJl
biA9IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+bm90aWZ5U3lu
Y1JlcXVpcmVkKHRoaXMpOwogfQpAQCAtODEsMjEgKzg4LDIyIEBAIHZvaWQgV2ViR3JhcGhpY3NM
YXllcjo6c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKIHsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRD
aGFuZ2VMYXllclN0YXRlKCk7CiAgICAgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKIH0K
IAogV2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbWFza1Rhcmdl
dCgwKQotICAgICwgbV9tb2RpZmllZCh0cnVlKQogICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2Up
CiAgICAgLCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0KHRydWUpCisgICAgLCBtX3Nob3VsZFN5
bmNMYXllclN0YXRlKHRydWUpCisgICAgLCBtX3Nob3VsZFN5bmNDaGlsZHJlbih0cnVlKQogICAg
ICwgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KDApCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5m
KQorICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiB7CiAgICAgc3RhdGljIFdlYkxheWVySUQgbmV4
dExheWVySUQgPSAxOwotICAgIG1fbGF5ZXJJbmZvLmlkID0gbmV4dExheWVySUQrKzsKKyAgICBt
X2lkID0gbmV4dExheWVySUQrKzsKICAgICBsYXllckJ5SURNYXAoKS5hZGQoaWQoKSwgdGhpcyk7
CiB9CiAKQEAgLTEyMyw5ICsxMzEsOSBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxk
cmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViR3JhcGhpY3NM
YXllciogY2hpbGQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIoY2hpbGRyZW5baV0pOwogICAgICAgICBj
aGlsZC0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQp
OwotICAgICAgICBjaGlsZC0+bm90aWZ5Q2hhbmdlKCk7CisgICAgICAgIGNoaWxkLT5kaWRDaGFu
Z2VMYXllclN0YXRlKCk7CiAgICAgfQotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5n
ZUNoaWxkcmVuKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzMywzMiArMTQxLDMyIEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7
CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQobGF5ZXIpOwogICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsK
LSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5kaWRD
aGFuZ2VMYXllclN0YXRlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGlu
dCBpbmRleCkKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGlu
ZGV4KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVy
Q2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVy
KGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJH
cmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRpZENoYW5n
ZUNoaWxkcmVuKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShH
cmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFw
aGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKICAgICB0b1dlYkdyYXBo
aWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NM
YXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdl
KCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+
ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CiB9CiAKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwg
R3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJl
bG93KGxheWVyLCBzaWJsaW5nKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRX
ZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9X
ZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdl
KCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgp
OworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CiB9CiAKIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6
cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdD
aGlsZCkKQEAgLTE2NiwyMCArMTc0LDIwIEBAIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6cmVwbGFj
ZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDCiAgICAg
Ym9vbCBvayA9IEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQp
OwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBub3RpZnlDaGFuZ2Uo
KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2UoKTsKKyAg
ICBkaWRDaGFuZ2VDaGlsZHJlbigpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihvbGRDaGlsZCkt
PmRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQp
LT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0g
ICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7CisgICAgdG9X
ZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQo
KQogewogICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBwYXJlbnRMYXllciA9IHRvV2ViR3JhcGhp
Y3NMYXllcihwYXJlbnQoKSkpCi0gICAgICAgIHBhcmVudExheWVyLT5ub3RpZnlDaGFuZ2UoKTsK
KyAgICAgICAgcGFyZW50TGF5ZXItPmRpZENoYW5nZUNoaWxkcmVuKCk7CiAgICAgR3JhcGhpY3NM
YXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0yNTMsNyArMjYxLDcgQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBiKQogICAgICAgICByZXR1cm47CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGIpOwogCi0gICAgbm90aWZ5Q2hhbmdlKCk7
CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgYikKQEAgLTI2Myw3ICsyNzEsNyBAQCB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgYikKICAgICBpZiAobV9tYWluQmFj
a2luZ1N0b3JlKQogICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFN1cHBvcnRzQWxwaGEo
IWIpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKGIpOwotICAgIG5vdGlm
eUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiKQpAQCAtMjcyLDcgKzI4MCw3
IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgYikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmls
aXR5KGIpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsK
IH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCkBA
IC0yODEsNyArMjg5LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGZsb2F0
IG9wYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNp
dHkob3BhY2l0eSk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0
ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiByKQpAQCAtMjkwLDcgKzI5OCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChyKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAg
ICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNOZWVkc0Rpc3BsYXkoKQpAQCAtMzA5LDEzICszMTcsMTMgQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICAvLyBX
ZSBhZG9wdCBmaXJzdCwgaW4gY2FzZSB0aGlzIGlzIHRoZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkg
d2UgYXZvaWQgZGVzdHJveWluZyBhbmQgcmVjcmVhdGluZyB0aGUgaW1hZ2UuCiAgICAgICAgIG5l
d0lEID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKGlt
YWdlKTsKICAgICAgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNr
aW5nU3RvcmUobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7Ci0gICAgICAgIG5vdGlm
eUNoYW5nZSgpOworICAgICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgICAgIGlmICht
X2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEICYmIG5ld0lEID09IG1fbGF5ZXJJbmZvLmlt
YWdlQmFja2luZ1N0b3JlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gSWYgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50IGlzIG5vdCBzZXQgeWV0IHRoZXJl
IHNob3VsZCBiZSBubyBiYWNraW5nIHN0b3JlIElELgogICAgICAgICBBU1NFUlQoIW1fbGF5ZXJJ
bmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwotICAgICAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICAg
ICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIH0KIAogICAgIG1fbGF5ZXJJbmZvLmltYWdl
QmFja2luZ1N0b3JlSUQgPSBuZXdJRDsKQEAgLTMzNyw4ICszNDUsOCBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBXZWJHcmFw
aGljc0xheWVyKiB3ZWJHcmFwaGljc0xheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKTsK
ICAgICB3ZWJHcmFwaGljc0xheWVyLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3Jh
cGhpY3NMYXllckNsaWVudCk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+c2V0TWFza1RhcmdldCh0
aGlzKTsKLSAgICB3ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlD
aGFuZ2UoKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7Cisg
ICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogCiB9CiAKQEAgLTM1MSw3ICszNTksNyBAQCB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyKQogICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xh
eWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7CiAKICAgICBHcmFwaGljc0xheWVy
OjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAg
ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldE5l
ZWRzRGlzcGxheSgpCkBAIC0zNjMsMTIgKzM3MSwxMiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KG1fbWFpbkJhY2tpbmdTdG9yZSkKICAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5pbnZhbGlk
YXRlKEludFJlY3QocmVjdCkpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxh
eWVyU3RhdGUoKTsKIH0KIAogV2ViTGF5ZXJJRCBXZWJHcmFwaGljc0xheWVyOjppZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fbGF5ZXJJbmZvLmlkOworICAgIHJldHVybiBtX2lkOwogfQogCiB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKQEAgLTM5MCwxMyArMzk4LDI0IEBAIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3Jh
cGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViR3JhcGhpY3NMYXllcio+KGxheWVyKTsKIH0KIAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
eW5jTGF5ZXJQYXJhbWV0ZXJzKCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NoaWxkcmVu
KCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkU3luY0NoaWxkcmVuKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zaG91bGRTeW5jQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICBWZWN0b3I8V2ViTGF5ZXJJRD4g
Y2hpbGRJRHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsg
KytpKQorICAgICAgICBjaGlsZElEcy5hcHBlbmQodG9XZWJMYXllcklEKGNoaWxkcmVuKClbaV0p
KTsKKworICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+c3luY0xheWVyQ2hpbGRyZW4obV9p
ZCwgY2hpbGRJRHMpOworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRl
KCkKICB7Ci0gICAgaWYgKCFtX21vZGlmaWVkKQorICAgIGlmICghbV9zaG91bGRTeW5jTGF5ZXJT
dGF0ZSkKICAgICAgICAgcmV0dXJuOworICAgIG1fc2hvdWxkU3luY0xheWVyU3RhdGUgPSBmYWxz
ZTsKIAotICAgIG1fbW9kaWZpZWQgPSBmYWxzZTsKLSAgICBtX2xheWVySW5mby5uYW1lID0gbmFt
ZSgpOwogICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQoKTsKICAgICBt
X2xheWVySW5mby5iYWNrZmFjZVZpc2libGUgPSBiYWNrZmFjZVZpc2liaWxpdHkoKTsKICAgICBt
X2xheWVySW5mby5jaGlsZHJlblRyYW5zZm9ybSA9IGNoaWxkcmVuVHJhbnNmb3JtKCk7CkBAIC00
MTIsMjQgKzQzMSwyNCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclBhcmFtZXRl
cnMoKQogICAgIG1fbGF5ZXJJbmZvLnJlcGxpY2EgPSB0b1dlYkxheWVySUQocmVwbGljYUxheWVy
KCkpOwogICAgIG1fbGF5ZXJJbmZvLnNpemUgPSBzaXplKCk7CiAgICAgbV9sYXllckluZm8udHJh
bnNmb3JtID0gdHJhbnNmb3JtKCk7Ci0gICAgbV9sYXllckluZm8uY2hpbGRyZW4uY2xlYXIoKTsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgbV9sYXllckluZm8uY2hpbGRyZW4uYXBwZW5kKHRvV2ViTGF5ZXJJRChjaGlsZHJlbigp
W2ldKSk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5zeW5jTGF5ZXJTdGF0ZShtX2lk
LCBtX2xheWVySW5mbyk7Cit9CiAKLSAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRpZFN5
bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIobV9sYXllckluZm8pOwordm9pZCBXZWJHcmFwaGlj
c0xheWVyOjplbnN1cmVJbWFnZUJhY2tpbmdTdG9yZSgpCit7CisgICAgaWYgKCFtX2ltYWdlKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlE
KQorICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0gbV93ZWJHcmFwaGlj
c0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1hZ2UuZ2V0KCkpOwogfQog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogewogICAgIC8vIFRoZSByZW1vdGUgaW1hZ2UgbWlnaHQgaGF2ZSBiZWVuIHJlbGVhc2Vk
IGJ5IHB1cmdlQmFja2luZ1N0b3Jlcy4KLSAgICBpZiAobV9pbWFnZSAmJiAhbV9sYXllckluZm8u
aW1hZ2VCYWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3Rv
cmVJRCA9IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZSht
X2ltYWdlLmdldCgpKTsKLQorICAgIGVuc3VyZUltYWdlQmFja2luZ1N0b3JlKCk7CiAgICAgY29t
cHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKTsKLSAgICBzeW5jTGF5ZXJQYXJhbWV0ZXJzKCk7
CisgICAgc3luY0NoaWxkcmVuKCk7CisgICAgc3luY0xheWVyU3RhdGUoKTsKICAgICB1cGRhdGVD
b250ZW50QnVmZmVycygpOwotCi0gICAgbV9tb2RpZmllZCA9IGZhbHNlOwogfQogCiB2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpCkBAIC00MzksNyAr
NDU4LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVn
aW4oKQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiB7
CiAgICAgbV9sYXllckluZm8uaXNSb290TGF5ZXIgPSBpc1Jvb3Q7Ci0gICAgbm90aWZ5Q2hhbmdl
KCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2lu
dCYgdHJhamVjdG9yeVZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggZjAyYzNhOTRj
NDI5MDAxMmZmMzk3OGY1YWE0ZGQ3ZGVkZTY3MzViYS4uZjlkNmVhNjc0Y2EzYTI0NGJhMjA3Y2Vk
YmVlZDNjOTIyMTBjZDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTU1LDcgKzU1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IGFkb3B0SW1hZ2VCYWNraW5nU3RvcmUo
V2ViQ29yZTo6SW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VJbWFnZUJhY2tp
bmdTdG9yZShpbnQ2NF90KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGlu
Z1N0YXRlRm9yTGF5ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jTGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3Rv
cjxXZWJMYXllcklEPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIo
V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciopID0gMDsKIH07CkBAIC0xMDEsMTEgKzEwMiwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9y
KGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3Rh
dGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOworCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAK
ICAgICBXZWJLaXQ6OldlYkxheWVySUQgaWQoKSBjb25zdDsKICAgICBzdGF0aWMgV2ViR3JhcGhp
Y3NMYXllciogbGF5ZXJCeUlEKFdlYktpdDo6V2ViTGF5ZXJJRCk7Ci0gICAgYm9vbCBpc01vZGlm
aWVkKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZDsgfQogICAgIHZvaWQgZGlkU3luY2hyb25p
emUoKTsKICAgICBJbWFnZSogaW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAKQEAg
LTEyOSw2ICsxMzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoaW50
IHRpbGVJRCk7CiAKICAgICB2b2lkIHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpX
ZWJHcmFwaGljc0xheWVyQ2xpZW50Kik7CisgICAgdm9pZCBzeW5jQ2hpbGRyZW4oKTsKKyAgICB2
b2lkIHN5bmNMYXllclN0YXRlKCk7CisgICAgdm9pZCBlbnN1cmVJbWFnZUJhY2tpbmdTdG9yZSgp
OwogCiAgICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgpOwogICAgIGJvb2wgaXNSZWFkeUZvclRp
bGVCdWZmZXJTd2FwKCkgY29uc3Q7CkBAIC0xMzcsMTcgKzE0MSwyMSBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIFdlYktpdDo6
V2ViTGF5ZXJJRCBtX2lkOwogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwog
ICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBHcmFwaGljc0xheWVyKiBtX21hc2tUYXJn
ZXQ7CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBMYXllclRyYW5zZm9y
bSBtX2xheWVyVHJhbnNmb3JtOwotICAgIGJvb2wgbV9tb2RpZmllZCA6IDE7CiAgICAgYm9vbCBt
X2luVXBkYXRlTW9kZSA6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAx
OworICAgIGJvb2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKKyAgICBib29sIG1fc2hvdWxk
U3luY0NoaWxkcmVuOiAxOwogCiAgICAgdm9pZCBub3RpZnlDaGFuZ2UoKTsKICAgICB2b2lkIGRp
ZENoYW5nZUdlb21ldHJ5KCk7CisgICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAg
dm9pZCBkaWRDaGFuZ2VDaGlsZHJlbigpOwogICAgIHZvaWQgY3JlYXRlQmFja2luZ1N0b3JlKCk7
CiAKICAgICBib29sIHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJl
ZUhvc3RRdC5jcHAKaW5kZXggYmRhNjA2Mzg4MjgyOWM0ZjZkMWVhNWYzMTQxNzNiYzMyYWViNWI1
Ni4uMTNlOWZjMTUzNzU4OGZmZjdlNmZjNzg4ZWMwNjZkMzkzZTFhOWYwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5jcHAKQEAgLTIyNiwxMCArMjI2LDE2IEBAIGJvb2wgTGF5ZXJUcmVlSG9zdFF0OjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCi12b2lkIExheWVy
VHJlZUhvc3RRdDo6ZGlkU3luY0NvbXBvc2l0aW5nU3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXll
ckluZm8mIGluZm8pCit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyU3RhdGUoV2ViTGF5
ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewogICAgIG1fc2hvdWxkU3luY0Zy
YW1lID0gdHJ1ZTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQ
cm94eTo6U3luY0NvbXBvc2l0aW5nTGF5ZXJTdGF0ZShpbmZvKSk7CisgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJTdGF0
ZShpZCwgaW5mbykpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyQ2hpbGRy
ZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+JiBjaGlsZHJlbikKK3sK
KyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwg
Y2hpbGRyZW4pKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OmF0dGFjaExheWVyKFdlYkdy
YXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IDA4ZjBlNjRiNzRiM2QxM2RjMWY0
YmI2Zjc1YmJiNDFlZmZmMDU1OWYuLjhkMzIzNmVmNDJkZDg3YWEyZjRmZDE5NzVkYTU2ZTU4ZDM3
ZWZjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvTGF5ZXJUcmVlSG9zdFF0LmgKQEAgLTcxLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVl
VGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGlu
Z1N0YXRlRm9yTGF5ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIHN5
bmNMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZpcnR1
YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5
ZXJJRD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyKik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>