<?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>75007</bug_id>
          
          <creation_ts>2011-12-21 07:03:41 -0800</creation_ts>
          <short_desc>[CSSRegions]Rollout support for background-color region styling</short_desc>
          <delta_ts>2012-01-04 10:27:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>74141</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihnea Ovidenie">mihnea</reporter>
          <assigned_to name="Mihnea Ovidenie">mihnea</assigned_to>
          <cc>macpherson</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525255</commentid>
    <comment_count>0</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2011-12-21 07:03:41 -0800</bug_when>
    <thetext>Temporary rollout support for region styling (background-color) since it causes performance regression (see https://bugs.webkit.org/show_bug.cgi?id=74141). I will add the support back after:
1. Improve speed of methods that call RenderObject::style() extensively
2. Finish analyze the regression in performance of the current patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525261</commentid>
    <comment_count>1</comment_count>
      <attachid>120179</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2011-12-21 07:28:45 -0800</bug_when>
    <thetext>Created attachment 120179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527400</commentid>
    <comment_count>2</comment_count>
      <attachid>120179</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-12-27 10:07:30 -0800</bug_when>
    <thetext>Comment on attachment 120179
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527402</commentid>
    <comment_count>3</comment_count>
      <attachid>120179</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 10:13:30 -0800</bug_when>
    <thetext>Comment on attachment 120179
Patch

Rejecting attachment 120179 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:
WebCore/rendering/RenderObject.cpp
patching file Source/WebCore/rendering/RenderObject.h
patching file Source/WebCore/rendering/RenderObjectChildList.cpp
patching file Source/WebCore/rendering/RenderRegion.cpp
patching file Source/WebCore/rendering/RenderRegion.h
patching file Source/WebCore/rendering/RenderView.cpp
patching file Source/WebCore/rendering/RenderView.h

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

Full output: http://queues.webkit.org/results/11039357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529491</commentid>
    <comment_count>4</comment_count>
      <attachid>121104</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2012-01-04 06:19:01 -0800</bug_when>
    <thetext>Created attachment 121104
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529503</commentid>
    <comment_count>5</comment_count>
      <attachid>121104</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-04 06:51:47 -0800</bug_when>
    <thetext>Comment on attachment 121104
Patch for landing

Clearing flags on attachment: 121104

Committed r104036: &lt;http://trac.webkit.org/changeset/104036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529504</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-04 06:51:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529600</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-04 10:27:25 -0800</bug_when>
    <thetext>This didn&apos;t seem to change the perf results, so the previous changes (removing the branch in RenderObject::style() and inlining initForRegionStyling()) seem to be sufficient.

I think the path forward is to first change callers of RenderObject::style() to cache the pointer, then try to reland the patch and watch for regressions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120179</attachid>
            <date>2011-12-21 07:28:45 -0800</date>
            <delta_ts>2012-01-04 06:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>75007.patch</filename>
            <type>text/plain</type>
            <size>31493</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MDk5OGQ3Li42YzBjYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTEtMTItMjEgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CisKKyAg
ICAgICAgW0NTU1JlZ2lvbnNdUm9sbG91dCBzdXBwb3J0IGZvciBiYWNrZ3JvdW5kLWNvbG9yIHJl
Z2lvbiBzdHlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgZnVuY3Rpb25hbGl0eSwgdGhlcmVmb3JlIG5vIG5ldyB0ZXN0cy4gU2luY2Ug
dGhpcyBpcyBhIHRlbXBvcmFyeSByb2xsb3V0LCAKKyAgICAgICAgdGhlIHRlc3RzIGZvciByZWdp
b24tc3R5bGUgd2l0aCBiYWNrZ3JvdW5kLWNvbG9yIGFyZSBub3QgcmVtb3ZlZCBpbiB0aGlzIHBh
dGNoLCBqdXN0IHNraXBwZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OmFkZE1hdGNoZWREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjptYXRjaFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBz
ZXVkb1N0eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6UnVsZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6UnVsZVNldCk6CisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnJlbW92ZUNoaWxkTm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisKIDIwMTEtMTItMjEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGFiYmVkUGFuZSBzaG91bGQg
dXNlIHRhYkVsZW1lbnQgd2lkdGggbWVhc3VyaW5nIHRvIGxheW91dCB0YWIgZWxlbWVudHMgd2hl
biB3aWR0aCBpcyB0b28gc21hbGwgdG8gZml0IHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDJjOGIyMDguLmJhMGEyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMTc4LDcgKzExNzgs
NiBAQCBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0
RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRF
YmIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKLV9fWk5LN1dlYkNvcmUx
MlJlbmRlck9iamVjdDEzc3R5bGVJblJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJXaWRn
ZXQxNHdpbmRvd0NsaXBSZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjExZ2V0U29t
ZURhdGFFUlBLY2oKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRkYXRhRXYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBjOTY5ZDBlLi45N2E1NDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04MCw3ICs4MCw2IEBACiAj
aW5jbHVkZSAiUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJRdW90
ZXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRo
ZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE2OCw3ICsxNjcs
NyBAQCBpZiAocHJpbWl0aXZlVmFsdWUpIFwKIAogY2xhc3MgUnVsZURhdGEgewogcHVibGljOgot
ICAgIFJ1bGVEYXRhKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9zaXRp
b24sIGJvb2wgcmVnaW9uU3R5bGVSdWxlID0gZmFsc2UpOworICAgIFJ1bGVEYXRhKENTU1N0eWxl
UnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9zaXRpb24pOwogCiAgICAgdW5zaWduZWQg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgQ1NTU3R5bGVSdWxl
KiBydWxlKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlOyB9CkBAIC0xODAsNyArMTc5LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3I7IH0KICAgICB1bnNp
Z25lZCBzcGVjaWZpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNpdHk7IH0KICAgICB1
bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9saW5rTWF0Y2hUeXBlOyB9
Ci0gICAgYm9vbCByZWdpb25TdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvblN0eWxl
UnVsZTsgfQogCiAgICAgLy8gVHJ5IHRvIGJhbGFuY2UgYmV0d2VlbiBtZW1vcnkgdXNhZ2UgKHRo
ZXJlIGNhbiBiZSBsb3RzIG9mIFJ1bGVEYXRhIG9iamVjdHMpIGFuZCBnb29kIGZpbHRlcmluZyBw
ZXJmb3JtYW5jZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUlkZW50aWZpZXJD
b3VudCA9IDQ7CkBAIC0xOTIsMTMgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
c3BlY2lmaWNpdHk7CiAgICAgLy8gVGhpcyBudW1iZXIgd2FzIHBpY2tlZCBmYWlybHkgYXJiaXRy
YXJpbHkuIFdlIGNhbiBwcm9iYWJseSBsb3dlciBpdCBpZiB3ZSBuZWVkIHRvLgogICAgIC8vIFNv
bWUgc2ltcGxlIHRlc3Rpbmcgc2hvd2VkIDwxMDAsMDAwIFJ1bGVEYXRhJ3Mgb24gbGFyZ2Ugc2l0
ZXMuCi0gICAgdW5zaWduZWQgbV9wb3NpdGlvbiA6IDI1OworICAgIHVuc2lnbmVkIG1fcG9zaXRp
b24gOiAyNjsKICAgICB1bnNpZ25lZCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvciA6IDE7CiAg
ICAgdW5zaWduZWQgbV9oYXNNdWx0aXBhcnRTZWxlY3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9o
YXNSaWdodG1vc3RTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaCA6IDE7CiAgICAg
dW5zaWduZWQgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1fbGlua01hdGNoVHlwZSA6IDI7IC8vICBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRj
aE1hc2sKLSAgICB1bnNpZ25lZCBtX3JlZ2lvblN0eWxlUnVsZSA6IDE7CiAgICAgLy8gVXNlIHBs
YWluIGFycmF5IGluc3RlYWQgb2YgYSBWZWN0b3IgdG8gbWluaW1pemUgbWVtb3J5IG92ZXJoZWFk
LgogICAgIHVuc2lnbmVkIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlc1ttYXhp
bXVtSWRlbnRpZmllckNvdW50XTsKIH07CkBAIC0yMTYsNyArMjEzLDcgQEAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKFJ1bGVEYXRhKSA9PSBzaXplb2YoU2FtZVNpemVBc1J1bGVEYXRhKSwgUnVsZURh
dGFfc2hvdWxkX3MKIGNsYXNzIFJ1bGVTZXQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1
bGVTZXQpOwogcHVibGljOgotICAgIFJ1bGVTZXQoYm9vbCByZWdpb25TdHlsZVJ1bGVzID0gZmFs
c2UpOworICAgIFJ1bGVTZXQoKTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgT3duUHRyPFZlY3RvcjxSdWxlRGF0YT4gPiA+IEF0b21SdWxlTWFwOwogCkBAIC0yNTEs
NyArMjQ4LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV9wYWdlUnVsZXM7CiAg
ICAgdW5zaWduZWQgbV9ydWxlQ291bnQ7CiAgICAgYm9vbCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJs
ZWQ7Ci0gICAgYm9vbCBtX3JlZ2lvblN0eWxlUnVsZXM7CiB9OwogCiBzdGF0aWMgUnVsZVNldCog
ZGVmYXVsdFN0eWxlOwpAQCAtMzM4LDcgKzMzNCw2IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0
eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBTdHlsZVNoZWV0TGlzdCogc3R5bGVTaGVl
CiAgICAgLCBtX3Jvb3RFbGVtZW50U3R5bGUoMCkKICAgICAsIG1fZWxlbWVudCgwKQogICAgICwg
bV9zdHlsZWRFbGVtZW50KDApCi0gICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcoMCkKICAgICAsIG1f
ZWxlbWVudExpbmtTdGF0ZShOb3RJbnNpZGVMaW5rKQogICAgICwgbV9wYXJlbnROb2RlKDApCiAg
ICAgLCBtX2xpbmVIZWlnaHRWYWx1ZSgwKQpAQCAtMzQ4LDcgKzM0Myw2IEBAIENTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBTdHlsZVNoZWV0TGlz
dCogc3R5bGVTaGVlCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihDU1NGb250U2VsZWN0b3I6OmNyZWF0
ZShkb2N1bWVudCkpCiAgICAgLCBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKQog
ICAgICwgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKQotICAgICwgbV9h
cHBseVByb3BlcnR5VG9SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1fYXBwbHlQcm9wZXJ0eShD
U1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpKQogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKICAgICAsIG1faGFzUGVuZGluZ1NoYWRlcnMoZmFsc2UpCkBA
IC02MDMsMTMgKzU5NywxMiBAQCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkU3R5bGVEZWNsYXJh
dGlvbjo6TWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24oKQogICAgIG1lbXNldCh0aGlzLCAwLCBzaXpl
b2YoKnRoaXMpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRNYXRjaGVkRGVjbGFy
YXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlRGVjbGFyYXRpb24sIHVuc2ln
bmVkIGxpbmtNYXRjaFR5cGUsIGJvb2wgcmVnaW9uU3R5bGVSdWxlKQordm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphZGRNYXRjaGVkRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IHN0eWxlRGVjbGFyYXRpb24sIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCiB7CiAgICAgbV9tYXRj
aGVkRGVjbHMuZ3JvdyhtX21hdGNoZWREZWNscy5zaXplKCkgKyAxKTsKICAgICBNYXRjaGVkU3R5
bGVEZWNsYXJhdGlvbiYgbmV3RGVjbGFyYXRpb24gPSBtX21hdGNoZWREZWNscy5sYXN0KCk7CiAg
ICAgbmV3RGVjbGFyYXRpb24uc3R5bGVEZWNsYXJhdGlvbiA9IHN0eWxlRGVjbGFyYXRpb247CiAg
ICAgbmV3RGVjbGFyYXRpb24ubGlua01hdGNoVHlwZSA9IGxpbmtNYXRjaFR5cGU7Ci0gICAgbmV3
RGVjbGFyYXRpb24ucmVnaW9uU3R5bGVSdWxlID0gcmVnaW9uU3R5bGVSdWxlOwogfQogCiB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKQEAg
LTY2NCw3ICs2NTcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMoUnVsZVNl
dCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdAogICAgICAgICB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlID0gbV9tYXRjaGVkUnVsZXNbaV0tPmxpbmtNYXRjaFR5cGUoKTsKICAg
ICAgICAgaWYgKHN3YXBWaXNpdGVkVW52aXNpdGVkICYmIGxpbmtNYXRjaFR5cGUgJiYgbGlua01h
dGNoVHlwZSAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsKQogICAgICAgICAgICAgbGlua01h
dGNoVHlwZSA9IChsaW5rTWF0Y2hUeXBlID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVk
KSA/IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rIDogU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZp
c2l0ZWQ7Ci0gICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX21hdGNoZWRSdWxlc1tpXS0+
cnVsZSgpLT5kZWNsYXJhdGlvbigpLCBsaW5rTWF0Y2hUeXBlLCBtX21hdGNoZWRSdWxlc1tpXS0+
cmVnaW9uU3R5bGVSdWxlKCkpOworICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24obV9tYXRj
aGVkUnVsZXNbaV0tPnJ1bGUoKS0+ZGVjbGFyYXRpb24oKSwgbGlua01hdGNoVHlwZSk7CiAgICAg
fQogfQogCkBAIC04MTEsOSArODA0LDYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFs
bFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2Vy
U3R5bGVzKQogICAgICAgICBtYXRjaFJ1bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5m
aXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5sYXN0QXV0aG9yUnVsZSwgZmFsc2UpOwogCi0gICAgaWYg
KG1fcmVnaW9uRm9yU3R5bGluZykKLSAgICAgICAgbWF0Y2hSdWxlcyhtX3JlZ2lvblJ1bGVzLmdl
dCgpLCByZXN1bHQuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQubGFzdEF1dGhvclJ1bGUsIGZhbHNl
KTsKLQogICAgIC8vIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KICAgICBp
ZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgbV9zdHlsZWRFbGVtZW50KSB7CiAgICAg
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVEZWNsID0gbV9zdHlsZWRFbGVt
ZW50LT5pbmxpbmVTdHlsZURlY2woKTsKQEAgLTg2NiwzNyArODU2LDYgQEAgaW5saW5lIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogcGFyZW4KICAgICBtX2ZvbnREaXJ0eSA9IGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yUmVnaW9uU3R5bGluZyhSZW5kZXJSZWdpb24qIHJlZ2lv
bikKLXsKLSAgICBzZXRSZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbik7Ci0KLSAgICBpZiAocmVnaW9u
KQotICAgICAgICBpbml0UmVnaW9uUnVsZXMocmVnaW9uKTsKLX0KLQotdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjppbml0UmVnaW9uUnVsZXMoUmVuZGVyUmVnaW9uKiByZWdpb24pCi17Ci0gICAgQVNT
RVJUKHJlZ2lvbik7Ci0gICAgLy8gTWFyayB0aGF0IHRoZSBzZXQgb2YgcnVsZXMgY29tZXMgZnJv
bSByZWdpb24gc3R5bGluZyBzaW5jZSB3ZSBuZWVkIHRvIGZpbHRlcgotICAgIC8vIHRoZSBwcm9w
ZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQuCi0gICAgbV9yZWdpb25SdWxlcyA9IGFkb3B0UHRy
KG5ldyBSdWxlU2V0KHRydWUpKTsKLQotICAgIC8vIEZyb20gYWxsIHRoZSByZWdpb24gc3R5bGUg
cnVsZXMsIHNlbGVjdCB0aG9zZSB0aGF0IGFwcGx5IHRvIHRoZSBzcGVjaWZpZWQgcmVnaW9uLgot
ICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxlPiA+OjppdGVyYXRvciBp
dCA9IG1fcmVnaW9uU3R5bGVSdWxlcy5iZWdpbigpOyBpdCAhPSBtX3JlZ2lvblN0eWxlUnVsZXMu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiByZWdpb25TZWxl
Y3Rvckxpc3QgPSAoKml0KS0+c2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgIGZvciAoQ1NTU2VsZWN0
b3IqIHMgPSByZWdpb25TZWxlY3Rvckxpc3QuZmlyc3QoKTsgczsgcyA9IHJlZ2lvblNlbGVjdG9y
TGlzdC5uZXh0KHMpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fY2hlY2tlci5jaGVja1NlbGVjdG9y
KHMsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZWdpb24tPm5vZGUoKSkpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ1NTUnVsZUxpc3QqIHJlZ2lvblN0eWxpbmdSdWxl
cyA9ICgqaXQpLT5jc3NSdWxlcygpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgcmVnaW9uU3R5bGluZ1J1bGVzLT5sZW5ndGgoKTsgKytpbmRleCkgewotICAg
ICAgICAgICAgICAgIENTU1J1bGUqIHJlZ2lvblN0eWxpbmdSdWxlID0gcmVnaW9uU3R5bGluZ1J1
bGVzLT5pdGVtKGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAocmVnaW9uU3R5bGluZ1J1bGUt
PmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVnaW9uUnVsZXMtPmFkZFN0
eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihyZWdpb25TdHlsaW5nUnVsZSkpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY1N0eWxlU2VhcmNoVGhyZXNob2xkID0gMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY1N0
eWxlU2VhcmNoTGV2ZWxUaHJlc2hvbGQgPSAxMDsKIApAQCAtMTI0Nyw3ICsxMjA2LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShFbGVtZW50KiBlbGVtZW50KQogLy8g
SWYgcmVzb2x2ZUZvclJvb3REZWZhdWx0IGlzIHRydWUsIHN0eWxlIGJhc2VkIG9uIHVzZXIgYWdl
bnQgc3R5bGUgc2hlZXQgb25seS4gVGhpcyBpcyB1c2VkIGluIG1lZGlhIHF1ZXJpZXMsIHdoZXJl
CiAvLyByZWxhdGl2ZSB1bml0cyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGRvY3VtZW50
IHJvb3QgZWxlbWVudCBzdHlsZSwgc3R5bGVkIG9ubHkgd2l0aCBVQSBzdHlsZXNoZWV0CiAKLVBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwgYm9vbCBhbGxvd1No
YXJpbmcsIGJvb2wgcmVzb2x2ZUZvclJvb3REZWZhdWx0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZv
clN0eWxpbmcpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHls
ZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQs
IGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCkKIHsKICAgICAv
LyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95
IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJlbmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYg
YSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJpbmcgbG9hZGluZy4KQEAgLTEyNjMsNyArMTIyMiw2
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxl
bWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kCiAKICAgICBpbml0RWxlbWVudChlbGVtZW50KTsK
ICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGVsZW1lbnQsIGRlZmF1bHRQYXJlbnQpOwotICAgIGlu
aXRGb3JSZWdpb25TdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcpOwogICAgIGlmIChhbGxvd1NoYXJp
bmcpIHsKICAgICAgICAgUmVuZGVyU3R5bGUqIHNoYXJlZFN0eWxlID0gbG9jYXRlU2hhcmVkU3R5
bGUoKTsKICAgICAgICAgaWYgKHNoYXJlZFN0eWxlKQpAQCAtMTQxOSw3ICsxMzc3LDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiBl
LCBjb25zdCBSZW5kZXJTdHlsZSoKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8s
IEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgUmVuZGVyUmVnaW9uKiByZWdp
b25Gb3JTdHlsaW5nKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6
cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0xNDI3LDcgKzEzODUsNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVj
dG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAogICAgIGluaXRFbGVt
ZW50KGUpOwogCiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBwYXJlbnRTdHlsZSwgcHNldWRv
KTsKLSAgICBpbml0Rm9yUmVnaW9uU3R5bGluZyhyZWdpb25Gb3JTdHlsaW5nKTsKICAgICBtX3N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogCiAgICAgaWYgKG1fcGFyZW50U3R5bGUpCkBA
IC0xODg0LDcgKzE4NDEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0
dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUnVsZURhdGE6OlJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbiwgYm9vbCByZWdpb25TdHlsZVJ1bGUp
CitSdWxlRGF0YTo6UnVsZURhdGEoQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IsIHVuc2lnbmVkIHBvc2l0aW9uKQogICAgIDogbV9ydWxlKHJ1bGUpCiAgICAgLCBtX3Nl
bGVjdG9yKHNlbGVjdG9yKQogICAgICwgbV9zcGVjaWZpY2l0eShzZWxlY3Rvci0+c3BlY2lmaWNp
dHkoKSkKQEAgLTE4OTQsMTUgKzE4NTEsMTMgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKENTU1N0eWxl
UnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbiwKICAg
ICAsIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goaXNT
ZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChzZWxlY3RvcikpCiAgICAgLCBtX2Nv
bnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcihXZWJDb3JlOjpjb250YWluc1VuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3Ioc2VsZWN0b3IpKQogICAgICwgbV9saW5rTWF0Y2hUeXBlKFNlbGVj
dG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShzZWxlY3RvcikpCi0gICAgLCBtX3Jl
Z2lvblN0eWxlUnVsZShyZWdpb25TdHlsZVJ1bGUpCiB7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpj
b2xsZWN0SWRlbnRpZmllckhhc2hlcyhtX3NlbGVjdG9yLCBtX2Rlc2NlbmRhbnRTZWxlY3Rvcklk
ZW50aWZpZXJIYXNoZXMsIG1heGltdW1JZGVudGlmaWVyQ291bnQpOwogfQogCi1SdWxlU2V0OjpS
dWxlU2V0KGJvb2wgcmVnaW9uU3R5bGVSdWxlcykKK1J1bGVTZXQ6OlJ1bGVTZXQoKQogICAgIDog
bV9ydWxlQ291bnQoMCkKICAgICAsIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCh0cnVlKQotICAg
ICwgbV9yZWdpb25TdHlsZVJ1bGVzKHJlZ2lvblN0eWxlUnVsZXMpCiB7CiB9CiAKQEAgLTE5MTMs
NyArMTg2OCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwq
IGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgQ1NTU3R5bGVSdWxlCiAgICAgT3duUHRyPFZlY3RvcjxS
dWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsK
ICAgICBpZiAoIXJ1bGVzKQogICAgICAgICBydWxlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UnVs
ZURhdGE+KTsKLSAgICBydWxlcy0+YXBwZW5kKFJ1bGVEYXRhKHJ1bGUsIHNlbGVjdG9yLCBtX3J1
bGVDb3VudCsrLCBtX3JlZ2lvblN0eWxlUnVsZXMpKTsKKyAgICBydWxlcy0+YXBwZW5kKFJ1bGVE
YXRhKHJ1bGUsIHNlbGVjdG9yLCBtX3J1bGVDb3VudCsrKSk7CiB9CiAKIHZvaWQgUnVsZVNldDo6
YWRkUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWwpCkBAIC0yMjE1LDEx
ICsyMTcwLDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyhib29s
IGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGUKICAgICAgICAgbV9hcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgZm9yIChpbnQgaSA9IHN0YXJ0SW5kZXg7IGkgPD0gZW5kSW5kZXg7ICsraSkgewotICAgICAg
ICBtX2FwcGx5UHJvcGVydHlUb1JlZ2lvblN0eWxlID0gbV9tYXRjaGVkRGVjbHNbaV0ucmVnaW9u
U3R5bGVSdWxlOworICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyAr
K2kpCiAgICAgICAgIGFwcGx5RGVjbGFyYXRpb248YXBwbHlGaXJzdD4obV9tYXRjaGVkRGVjbHNb
aV0uc3R5bGVEZWNsYXJhdGlvbiwgaXNJbXBvcnRhbnQsIGluaGVyaXRlZE9ubHkpOwotICAgICAg
ICBtX2FwcGx5UHJvcGVydHlUb1JlZ2lvblN0eWxlID0gZmFsc2U7Ci0gICAgfQogfQogCiB1bnNp
Z25lZCBDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRGVjbGFyYXRpb25IYXNoKE1hdGNoZWRTdHls
ZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbnMsIHVuc2lnbmVkIHNpemUpCkBAIC0yNDk5LDIwICsy
NDUxLDYgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaW50IGlkKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1y
ZWdpb25zLyN0aGUtYXQtcmVnaW9uLXN0eWxlLXJ1bGUKLS8vIEZJWE1FOiBhZGQgaW5jcmVtZW50
YWwgc3VwcG9ydCBmb3Igb3RoZXIgcmVnaW9uIHN0eWxpbmcgcHJvcGVydGllcy4KLWlubGluZSBi
b29sIGlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KGludCBpZCkKLXsKLSAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKSkgewotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3I6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogLy8gU1ZHIGhhbmRsZXMg
em9vbWluZyBpbiBhIGRpZmZlcmVudCB3YXkgY29tcGFyZWQgdG8gQ1NTLiBUaGUgd2hvbGUgZG9j
dW1lbnQgaXMgc2NhbGVkIGluc3RlYWQKIC8vIG9mIGVhY2ggaW5kaXZpZHVhbCBsZW5ndGggdmFs
dWUgaW4gdGhlIHJlbmRlciBzdHlsZSAvIHRyZWUuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRl
TGVuZ3RoKigpCiAvLyBtdWx0aXBsaWVzIGVhY2ggcmVzb2x2ZWQgbGVuZ3RoIHdpdGggdGhlIHpv
b20gbXVsdGlwbGllciAtIHNvIGZvciBTVkcgd2UgbmVlZCB0byBkaXNhYmxlIHRoYXQuCkBAIC0y
NTkzLDEwICsyNTMxLDYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
RmlsdGVyIHJlZ2lvbiBzdHlsZSBwcm9wZXJ0eQotICAgIGlmIChhcHBseVByb3BlcnR5VG9SZWdp
b25TdHlsZSgpICYmICFpc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShpZCkpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eUlEPihpZCk7CiAKICAgICBpZiAoaXNJbmhlcml0ICYmIG1fcGFyZW50U3R5bGUgJiYgIW1f
cGFyZW50U3R5bGUtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNTU1By
b3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCmluZGV4IDY4YjYzOGMuLjkyOGQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtNjMsNyArNjMsNiBAQCBjbGFzcyBLZXlmcmFtZUxpc3Q7
CiBjbGFzcyBLZXlmcmFtZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNz
IE5vZGU7Ci1jbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBSdWxlRGF0YTsKIGNsYXNzIFJ1bGVT
ZXQ7CiBjbGFzcyBTZXR0aW5nczsKQEAgLTEwNSwxMSArMTA0LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHB1c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KSB7IG1fY2hlY2tlci5wdXNoUGFyZW50KHBh
cmVudCk7IH0KICAgICB2b2lkIHBvcFBhcmVudChFbGVtZW50KiBwYXJlbnQpIHsgbV9jaGVja2Vy
LnBvcFBhcmVudChwYXJlbnQpOyB9CiAKLSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wg
YWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQgPSBmYWxzZSwg
UmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gMCk7CisgICAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVzb2x2ZUZvclJvb3REZWZh
dWx0ID0gZmFsc2UpOwogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVt
ZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIAotICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCwgRWxlbWVudCos
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5
bGluZyA9IDApOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxl
bWVudChQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDApOwog
CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgp
OwogCkBAIC0xMzEsOCArMTMwLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGluaXRG
b3JTdHlsZVJlc29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIFBz
ZXVkb0lkID0gTk9QU0VVRE8pOwogICAgIHZvaWQgaW5pdEVsZW1lbnQoRWxlbWVudCopOwotICAg
IHZvaWQgaW5pdEZvclJlZ2lvblN0eWxpbmcoUmVuZGVyUmVnaW9uKik7Ci0gICAgdm9pZCBpbml0
UmVnaW9uUnVsZXMoUmVuZGVyUmVnaW9uKik7CiAgICAgUmVuZGVyU3R5bGUqIGxvY2F0ZVNoYXJl
ZFN0eWxlKCk7CiAgICAgYm9vbCBtYXRjaGVzUnVsZVNldChSdWxlU2V0Kik7CiAgICAgTm9kZSog
bG9jYXRlQ291c2luTGlzdChFbGVtZW50KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUNv
dW50KSBjb25zdDsKQEAgLTE0MSw5ICsxMzgsNiBAQCBwcml2YXRlOgogCiAgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0
IFdlYktpdENTU0tleWZyYW1lUnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIAotICAgIHZvaWQgc2V0
UmVnaW9uRm9yU3R5bGluZyhSZW5kZXJSZWdpb24qIHJlZ2lvbikgeyBtX3JlZ2lvbkZvclN0eWxp
bmcgPSByZWdpb247IH0KLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcoKSBjb25z
dCB7IHJldHVybiBtX3JlZ2lvbkZvclN0eWxpbmc7IH0KLQogcHVibGljOgogICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBvZiBydWxlcyB0aGF0IG1hdGNoZWQgZm9y
IGEgZ2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxlbWVudCkuCiAgICAgZW51bSBDU1NSdWxl
RmlsdGVyIHsKQEAgLTI0Miw3ICsyMzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0UmVu
ZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlVG9BZGp1c3QsIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgRWxlbWVudCopOwogCiAgICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0
YSogcnVsZSkgeyBtX21hdGNoZWRSdWxlcy5hcHBlbmQocnVsZSk7IH0KLSAgICB2b2lkIGFkZE1h
dGNoZWREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIHVuc2lnbmVkIGxp
bmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBib29sIHJlZ2lvblN0eWxl
UnVsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZE1hdGNoZWREZWNsYXJhdGlvbihDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiosIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoQWxsKTsKIAogICAgIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgIE1hdGNo
UmVzdWx0KCkgOiBmaXJzdFVBUnVsZSgtMSksIGxhc3RVQVJ1bGUoLTEpLCBmaXJzdEF1dGhvclJ1
bGUoLTEpLCBsYXN0QXV0aG9yUnVsZSgtMSksIGZpcnN0VXNlclJ1bGUoLTEpLCBsYXN0VXNlclJ1
bGUoLTEpLCBpc0NhY2hlYWJsZSh0cnVlKSB7IH0KQEAgLTI3OCw3ICsyNzIsNiBAQCBwcml2YXRl
OgogCiAgICAgT3duUHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAgT3duUHRyPFJ1bGVT
ZXQ+IG1fdXNlclN0eWxlOwotICAgIE93blB0cjxSdWxlU2V0PiBtX3JlZ2lvblJ1bGVzOwogCiAg
ICAgRmVhdHVyZXMgbV9mZWF0dXJlczsKIApAQCAtMzAyLDcgKzI5NSw2IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9h
cHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAgICBib29sIGFwcGx5UHJvcGVydHlUb1Zp
c2l0ZWRMaW5rU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRM
aW5rU3R5bGU7IH0KLSAgICBib29sIGFwcGx5UHJvcGVydHlUb1JlZ2lvblN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9SZWdpb25TdHlsZTsgfQogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBSZW5kZXJTdHlsZSogc19zdHlsZU5vdFlldEF2YWlsYWJsZTsKQEAgLTM1MCw3ICsz
NDIsNiBAQCBwcml2YXRlOgogICAgICAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbigpOwogICAg
ICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbjsKICAgICAg
ICAgdW5zaWduZWQgbGlua01hdGNoVHlwZTsKLSAgICAgICAgYm9vbCByZWdpb25TdHlsZVJ1bGU7
CiAgICAgfTsKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZURlY2xhcmF0aW9uSGFzaChNYXRj
aGVkU3R5bGVEZWNsYXJhdGlvbiosIHVuc2lnbmVkIHNpemUpOwogICAgIHN0cnVjdCBNYXRjaGVk
U3R5bGVEZWNsYXJhdGlvbkNhY2hlSXRlbSB7CkBAIC0zOTEsNyArMzgyLDYgQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxlOwogICAgIEVsZW1lbnQqIG1fZWxl
bWVudDsKICAgICBTdHlsZWRFbGVtZW50KiBtX3N0eWxlZEVsZW1lbnQ7Ci0gICAgUmVuZGVyUmVn
aW9uKiBtX3JlZ2lvbkZvclN0eWxpbmc7CiAgICAgRUluc2lkZUxpbmsgbV9lbGVtZW50TGlua1N0
YXRlOwogICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50Tm9kZTsKICAgICBDU1NWYWx1ZSogbV9s
aW5lSGVpZ2h0VmFsdWU7CkBAIC00MDQsNyArMzk0LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7CiAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlU
b1Zpc2l0ZWRMaW5rU3R5bGU7Ci0gICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1JlZ2lvblN0eWxl
OwogICAgIGNvbnN0IENTU1N0eWxlQXBwbHlQcm9wZXJ0eSYgbV9hcHBseVByb3BlcnR5OwogICAg
IAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCAxYmMzOWI0Li43NzIwMzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC03NDUsMzIgKzc0NSw2
IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6bGFzdFJlZ2lvbigpIGNvbnN0CiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmpl
Y3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKLSAgICAgICAgY29uc3Qg
UmVuZGVyUmVnaW9uKiBvbGRTdGFydFJlZ2lvbiwgY29uc3QgUmVuZGVyUmVnaW9uKiBvbGRFbmRS
ZWdpb24sCi0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24sIGNvbnN0
IFJlbmRlclJlZ2lvbiogbmV3RW5kUmVnaW9uKQotewotICAgIC8vIENsZWFyIHRoZSBzdHlsZXMg
Zm9yIHRoZSBvYmplY3QgaW4gdGhlIHJlZ2lvbnMuCi0gICAgLy8gVGhlIHN0eWxlcyBhcmUgbm90
IGNsZWFyZWQgZm9yIHRoZSByZWdpb25zIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBib3RoIHJhbmdl
cy4KLSAgICBib29sIGluc2lkZU9sZFJlZ2lvblJhbmdlID0gZmFsc2U7Ci0gICAgYm9vbCBpbnNp
ZGVOZXdSZWdpb25SYW5nZSA9IGZhbHNlOwotICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRl
cmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5l
bmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0K
LSAgICAgICAgaWYgKG9sZFN0YXJ0UmVnaW9uID09IHJlZ2lvbikKLSAgICAgICAgICAgIGluc2lk
ZU9sZFJlZ2lvblJhbmdlID0gdHJ1ZTsKLSAgICAgICAgaWYgKG5ld1N0YXJ0UmVnaW9uID09IHJl
Z2lvbikKLSAgICAgICAgICAgIGluc2lkZU5ld1JlZ2lvblJhbmdlID0gdHJ1ZTsKLQotICAgICAg
ICBpZiAoIShpbnNpZGVPbGRSZWdpb25SYW5nZSAmJiBpbnNpZGVOZXdSZWdpb25SYW5nZSkpCi0g
ICAgICAgICAgICByZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOwotCi0g
ICAgICAgIGlmIChvbGRFbmRSZWdpb24gPT0gcmVnaW9uKQotICAgICAgICAgICAgaW5zaWRlT2xk
UmVnaW9uUmFuZ2UgPSBmYWxzZTsKLSAgICAgICAgaWYgKG5ld0VuZFJlZ2lvbiA9PSByZWdpb24p
Ci0gICAgICAgICAgICBpbnNpZGVOZXdSZWdpb25SYW5nZSA9IGZhbHNlOwotICAgIH0KLX0KLQog
dm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJC
b3gqIGJveCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKQogewog
ICAgIC8vIEZJWE1FOiBOb3QgcmlnaHQgZm9yIGRpZmZlcmluZyB3cml0aW5nLW1vZGVzLgpAQCAt
NzgyLDggKzc1Niw2IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JC
b3goY29uc3QgUmVuZGVyQm94KiBib3gsIExheW91dFVuaXQgb2ZmCiAgICAgICAgIGlmIChyYW5n
ZS0+c3RhcnRSZWdpb24oKSA9PSBzdGFydFJlZ2lvbiAmJiByYW5nZS0+ZW5kUmVnaW9uKCkgPT0g
ZW5kUmVnaW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlbmRlclJlZ2lvbiog
b2xkU3RhcnRSZWdpb24gPSByYW5nZS0+c3RhcnRSZWdpb24oKTsKLSAgICAgICAgUmVuZGVyUmVn
aW9uKiBvbGRFbmRSZWdpb24gPSByYW5nZS0+ZW5kUmVnaW9uKCk7CiAgICAgICAgIC8vIERlbGV0
ZSBhbnkgaW5mbyB0aGF0IHdlIGZpbmQgYmVmb3JlIG91ciBuZXcgc3RhcnRSZWdpb24gYW5kIGFm
dGVyIG91ciBuZXcgZW5kUmVnaW9uLgogICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0
ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3Qu
ZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRl
cjsKQEAgLTc5OSw3ICs3NzEsNiBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJh
bmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBMYXlvdXRVbml0IG9mZgogICAgICAgICB9
CiAKICAgICAgICAgcmFuZ2UtPnNldFJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAg
ICAgICBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGJveCwgb2xkU3RhcnRSZWdpb24sIG9s
ZEVuZFJlZ2lvbiwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgcmFuZ2UgPSBuZXcgUmVuZGVyUmVnaW9uUmFuZ2Uoc3RhcnRSZWdpb24sIGVuZFJl
Z2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRl
eCAwYmJiMTgxLi5kNTYzMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmgKQEAgLTEyMywxMCArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVn
aW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKTsKICAgICB2b2lkIGdldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0
IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBl
bmRSZWdpb24pIGNvbnN0OwogCi0gICAgdm9pZCBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlck9iamVjdCosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogb2xkU3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5kZXJS
ZWdpb24qIG9sZEVuZFJlZ2lvbiA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5k
ZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDApOwotCiAgICAgV2ViS2l0TmFtZWRGbG93KiBlbnN1
cmVOYW1lZEZsb3coKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDA4MWEyNjIuLjcwNTk5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjU5MiwyOCArMjU5Miw5IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBn
cmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBn
cmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLWNsYXNzIEN1cnJlbnRSZW5kZXJSZWdpb25N
YWludGFpbmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJyZW50UmVuZGVyUmVnaW9u
TWFpbnRhaW5lcik7Ci1wdWJsaWM6Ci0gICAgQ3VycmVudFJlbmRlclJlZ2lvbk1haW50YWluZXIo
UmVuZGVyVmlldyogdmlldywgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCi0gICAgOiBtX3Zp
ZXcodmlldykKLSAgICAsIG1fcmVuZGVyUmVnaW9uKHZpZXctPmN1cnJlbnRSZW5kZXJSZWdpb24o
KSkKLSAgICB7Ci0gICAgICAgIG1fdmlldy0+c2V0Q3VycmVudFJlbmRlclJlZ2lvbihyZW5kZXJS
ZWdpb24pOwotICAgIH0KLSAgICB+Q3VycmVudFJlbmRlclJlZ2lvbk1haW50YWluZXIoKQotICAg
IHsKLSAgICAgICAgbV92aWV3LT5zZXRDdXJyZW50UmVuZGVyUmVnaW9uKG1fcmVuZGVyUmVnaW9u
KTsKLSAgICB9Ci1wcml2YXRlOgotICAgIFJlbmRlclZpZXcqIG1fdmlldzsKLSAgICBSZW5kZXJS
ZWdpb24qIG1fcmVuZGVyUmVnaW9uOwotfTsKLQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBwLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCAqcGFpbnRpbmdSb290LAogICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKLSAgICBDdXJy
ZW50UmVuZGVyUmVnaW9uTWFpbnRhaW5lciByZW5kZXJSZWdpb25NYWludGFpbmVyKHJlbmRlcmVy
KCktPnZpZXcoKSwgcmVnaW9uKTsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRl
c3RSZXF1ZXN0czsKICAgICBwYWludExheWVyKHRoaXMsIHAsIGRhbWFnZVJlY3QsIHBhaW50QmVo
YXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCAmb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRG
bGFncyk7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFw
VGVzdFJlcXVlc3RzLmVuZCgpOwpAQCAtMzExNSw3ICszMDk2LDYgQEAgc3RhdGljIGlubGluZSBM
YXlvdXRSZWN0IGZyYW1lVmlzaWJsZVJlY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogYm9v
bCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KQogewotICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVy
IHJlbmRlclJlZ2lvbk1haW50YWluZXIocmVuZGVyZXIoKS0+dmlldygpLCByZXN1bHQucmVnaW9u
KCkpOwogICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIAog
ICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT52aWV3KCktPmRvY3VtZW50
UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAy
MjI3NjY4Li40YWFkYzc5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMTcwNywyMCArMTcwNyw2IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6
OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAg
cmV0dXJuIGRpZmY7CiB9CiAKLVJlbmRlclN0eWxlKiBSZW5kZXJPYmplY3Q6OnN0eWxlSW5SZWdp
b24oKSBjb25zdAotewotICAgIEFTU0VSVChpblJlbmRlckZsb3dUaHJlYWQoKSk7Ci0KLSAgICBp
ZiAoIWNhbkhhdmVSZWdpb25TdHlsZSgpCi0gICAgICAgIHx8ICEoKHZpZXcoKSAmJiB2aWV3KCkt
PmN1cnJlbnRSZW5kZXJSZWdpb24oKSAmJiB2aWV3KCktPmN1cnJlbnRSZW5kZXJSZWdpb24oKS0+
aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkpKQotICAgICAgICByZXR1cm4gbV9zdHlsZS5nZXQoKTsK
LQotICAgIFJlbmRlclN0eWxlKiByZWdpb25TdHlsZSA9IHZpZXcoKS0+Y3VycmVudFJlbmRlclJl
Z2lvbigpLT5yZW5kZXJPYmplY3RSZWdpb25TdHlsZSh0aGlzKTsKLSAgICBpZiAoIXJlZ2lvblN0
eWxlKQotICAgICAgICB2aWV3KCktPmN1cnJlbnRSZW5kZXJSZWdpb24oKS0+Y29tcHV0ZVN0eWxl
SW5SZWdpb24odGhpcyk7Ci0gICAgcmV0dXJuIHZpZXcoKS0+Y3VycmVudFJlbmRlclJlZ2lvbigp
LT5yZW5kZXJPYmplY3RSZWdpb25TdHlsZSh0aGlzKTsKLX0KLQogdm9pZCBSZW5kZXJPYmplY3Q6
OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIGlmIChtX3N0
eWxlID09IHN0eWxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5k
ZXggNzhkMmNlNS4uODM4ZDBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtMzQzLDggKzM0Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBjYW5I
YXZlUmVnaW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBpc1JlbmRlckJsb2NrKCkgJiYgIWlzQW5v
bnltb3VzKCkgJiYgIWlzUmVuZGVyRmxvd1RocmVhZCgpOyB9Ci0KICAgICBib29sIGlzUm9vdCgp
IGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IG1fbm9kZTsg
fQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0hSKCkgY29uc3Q7CkBAIC04
NzYsNyArODc0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5l
Qm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVy
Ki8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0gMCkg
Y29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyU3R5
bGUqIHN0eWxlSW5SZWdpb24oKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogZmlyc3RMaW5lU3R5
bGVTbG93Q2FzZSgpIGNvbnN0OwogICAgIFN0eWxlRGlmZmVyZW5jZSBhZGp1c3RTdHlsZURpZmZl
cmVuY2UoU3R5bGVEaWZmZXJlbmNlLCB1bnNpZ25lZCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHAKaW5kZXggMWYxNzZiNS4uY2U2MTFhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTExNCwxMSAr
MTE0LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnJlbW92ZUNoaWxk
Tm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXIKICAgICAgICAgaWYgKG9sZENoaWxkLT5p
c1JlbmRlclJlZ2lvbigpKQogICAgICAgICAgICAgdG9SZW5kZXJSZWdpb24ob2xkQ2hpbGQpLT5k
ZXRhY2hSZWdpb24oKTsKIAotICAgICAgICBpZiAob2xkQ2hpbGQtPmluUmVuZGVyRmxvd1RocmVh
ZCgpICYmIG9sZENoaWxkLT5pc0JveCgpKSB7CisgICAgICAgIGlmIChvbGRDaGlsZC0+aW5SZW5k
ZXJGbG93VGhyZWFkKCkgJiYgb2xkQ2hpbGQtPmlzQm94KCkpCiAgICAgICAgICAgICBvbGRDaGls
ZC0+ZW5jbG9zaW5nUmVuZGVyRmxvd1RocmVhZCgpLT5yZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZv
KHRvUmVuZGVyQm94KG9sZENoaWxkKSk7Ci0gICAgICAgICAgICBpZiAob2xkQ2hpbGQtPmNhbkhh
dmVSZWdpb25TdHlsZSgpKQotICAgICAgICAgICAgICAgIG9sZENoaWxkLT5lbmNsb3NpbmdSZW5k
ZXJGbG93VGhyZWFkKCktPmNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUob2xkQ2hpbGQpOwot
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5lckZsb3dU
aHJlYWQgPSByZW5kZXJGbG93VGhyZWFkQ29udGFpbmVyKG93bmVyKSkKICAgICAgICAgICAgIGNv
bnRhaW5lckZsb3dUaHJlYWQtPnJlbW92ZUZsb3dDaGlsZChvbGRDaGlsZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDg4NTIwZTcuLjM1ZDkwM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0yNDIsMzggKzI0
Miw0IEBAIExheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKCkgY29uc3QKICAgICByZXR1cm4gcmVnaW9uUmVjdCgpLngoKTsKIH0KIAotUmVuZGVy
U3R5bGUqIFJlbmRlclJlZ2lvbjo6cmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUoY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QpIGNvbnN0Ci17Ci0gICAgUmVuZGVyT2JqZWN0UmVnaW9uU3R5
bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5maW5k
KHJlbmRlck9iamVjdCk7Ci0gICAgcmV0dXJuIChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0
eWxlLmVuZCgpKSA/IGl0LT5zZWNvbmQuZ2V0KCkgOiAwOwotfQotCi12b2lkIFJlbmRlclJlZ2lv
bjo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17Ci0g
ICAgQVNTRVJUKG9iamVjdCk7Ci0gICAgQVNTRVJUKG9iamVjdC0+dmlldygpKTsKLSAgICBBU1NF
UlQob2JqZWN0LT52aWV3KCktPmRvY3VtZW50KCkpOwotICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fu
b255bW91cygpKTsKLSAgICBBU1NFUlQob2JqZWN0LT5ub2RlKCkgJiYgb2JqZWN0LT5ub2RlKCkt
PmlzRWxlbWVudE5vZGUoKSk7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG9i
amVjdC0+bm9kZSgpKTsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlbmRlck9iamVjdFN0eWxl
ID0gb2JqZWN0LT52aWV3KCktPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JF
bGVtZW50KGVsZW1lbnQsIDAsIGZhbHNlLCBmYWxzZSwgdGhpcyk7Ci0gICAgbV9yZW5kZXJPYmpl
Y3RSZWdpb25TdHlsZS5zZXQob2JqZWN0LCByZW5kZXJPYmplY3RTdHlsZSk7Ci0KLSAgICBpZiAo
IW9iamVjdC0+aGFzQm94RGVjb3JhdGlvbnMoKSkgewotICAgICAgICBSZW5kZXJCb3gqIGJveCA9
IGNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4odG9SZW5kZXJCb3gob2JqZWN0KSk7Ci0gICAgICAgIFJl
bmRlclN0eWxlKiBzdHlsZUluUmVnaW9uID0gcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUob2JqZWN0
KTsKLSAgICAgICAgQVNTRVJUKHN0eWxlSW5SZWdpb24pOwotCi0gICAgICAgIGJvb2wgaGFzQm94
RGVjb3JhdGlvbnMgPSBvYmplY3QtPmlzVGFibGVDZWxsKCkgfHwgc3R5bGVJblJlZ2lvbi0+aGFz
QmFja2dyb3VuZCgpIHx8IHN0eWxlSW5SZWdpb24tPmhhc0JvcmRlcigpIHx8IHN0eWxlSW5SZWdp
b24tPmhhc0FwcGVhcmFuY2UoKSB8fCBzdHlsZUluUmVnaW9uLT5ib3hTaGFkb3coKTsKLSAgICAg
ICAgYm94LT5zZXRIYXNCb3hEZWNvcmF0aW9ucyhoYXNCb3hEZWNvcmF0aW9ucyk7Ci0gICAgfQot
fQotCi12b2lkIFJlbmRlclJlZ2lvbjo6Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0KQotewotICAgIEFTU0VSVChvYmplY3QpOwotICAgIG1fcmVuZGVy
T2JqZWN0UmVnaW9uU3R5bGUucmVtb3ZlKG9iamVjdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCA1NzY2YmY4
Li4yNDhkMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC04
MSw5ICs4MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRmlyc3RSZWdpb24oKSBjb25zdDsKICAg
ICBib29sIGlzTGFzdFJlZ2lvbigpIGNvbnN0OwogCi0gICAgUmVuZGVyU3R5bGUqIHJlbmRlck9i
amVjdFJlZ2lvblN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIHZvaWQgY29t
cHV0ZVN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBjbGVhck9i
amVjdFN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0Kik7CiBwcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSZWdp
b24iOyB9CiAKQEAgLTEwMSwxMSArOTgsNiBAQCBwcml2YXRlOgogICAgIC8vIGl0IHdpbGwgYWxz
byBob2xkIGEgY3VzdG9tIHN0eWxlIGZvciBhbnkgYm94IChmb3IgcmVnaW9uIHN0eWxpbmcpLgog
ICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgUmVuZGVyQm94UmVnaW9uSW5mbyo+IG1fcmVu
ZGVyQm94UmVnaW9uSW5mbzsKIAotICAgIC8vIFRoaXMgbWFwIGhvbGRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSByZWdpb24gc3R5bGUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZW5kZXIgb2JqZWN0cyB0
aGF0Ci0gICAgLy8gYXJlIGRpc3BsYXllZCBpbnRvIHRoaXMgcmVnaW9uLgotICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8UmVuZGVyU3R5bGU+ID4gUmVuZGVy
T2JqZWN0UmVnaW9uU3R5bGVNYXA7Ci0gICAgUmVuZGVyT2JqZWN0UmVnaW9uU3R5bGVNYXAgbV9y
ZW5kZXJPYmplY3RSZWdpb25TdHlsZTsKLQogICAgIGJvb2wgbV9pc1ZhbGlkOwogICAgIGJvb2wg
bV9oYXNDdXN0b21SZWdpb25TdHlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKaW5kZXggYzg4NThjNi4uZTYxOTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcApAQCAtNTgsNyArNTgsNiBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3
KE5vZGUqIG5vZGUsIEZyYW1lVmlldyogdmlldykKICAgICAsIG1fbGF5b3V0U3RhdGUoMCkKICAg
ICAsIG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQoMCkKICAgICAsIG1fY3VycmVudFJlbmRlckZs
b3dUaHJlYWQoMCkKLSAgICAsIG1fY3VycmVudFJlbmRlclJlZ2lvbigwKQogewogICAgIC8vIENs
ZWFyIG91ciBhbm9ueW1vdXMgYml0LCBzZXQgYmVjYXVzZSBSZW5kZXJPYmplY3QgYXNzdW1lcwog
ICAgIC8vIGFueSByZW5kZXJlciB3aXRoIGRvY3VtZW50IGFzIHRoZSBub2RlIGlzIGFub255bW91
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDcyOGRkOGIuLmY0YzJj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMzIsNyArMzIsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwotY2xhc3Mg
UmVuZGVyUmVnaW9uOwogY2xhc3MgUmVuZGVyV2lkZ2V0OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpAQCAtMTg4LDkgKzE4Nyw2IEBAIHB1YmxpYzoKICAgICBSZW5kZXJGbG93
VGhyZWFkKiBjdXJyZW50UmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFJlbmRlckZsb3dUaHJlYWQ7IH0KICAgICB2b2lkIHNldEN1cnJlbnRSZW5kZXJGbG93VGhyZWFk
KFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIHsgbV9jdXJyZW50UmVuZGVyRmxvd1RocmVh
ZCA9IGZsb3dUaHJlYWQ7IH0KIAotICAgIFJlbmRlclJlZ2lvbiogY3VycmVudFJlbmRlclJlZ2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlbmRlclJlZ2lvbjsgfQotICAgIHZvaWQgc2V0
Q3VycmVudFJlbmRlclJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbikgeyBtX2N1cnJlbnRSZW5k
ZXJSZWdpb24gPSByZWdpb247IH0KLQogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCiAgICAgSW50ZXJ2YWxBcmVu
YSogaW50ZXJ2YWxBcmVuYSgpOwpAQCAtMjgwLDcgKzI3Niw2IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICBPd25QdHI8UmVuZGVyRmxvd1RocmVhZExpc3Q+IG1fcmVuZGVyRmxvd1RocmVhZExpc3Q7
CiAgICAgUmVuZGVyRmxvd1RocmVhZCogbV9jdXJyZW50UmVuZGVyRmxvd1RocmVhZDsKLSAgICBS
ZW5kZXJSZWdpb24qIG1fY3VycmVudFJlbmRlclJlZ2lvbjsKICAgICBSZWZQdHI8SW50ZXJ2YWxB
cmVuYT4gbV9pbnRlcnZhbEFyZW5hOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121104</attachid>
            <date>2012-01-04 06:19:01 -0800</date>
            <delta_ts>2012-01-04 06:51:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75007-20120104161858.patch</filename>
            <type>text/plain</type>
            <size>32406</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcwYjU5ZTlhMzI4NThl
ZDc1MTY1M2FhZDQxNGExYjcwMGU3NGVmMi4uZjNiODcxZGI2MmZhYzRkMWE1ZDIxMjY2ZjM3ODgz
NmM0MjExODc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAxLTA0ICBNaWhu
ZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXVJv
bGxvdXQgc3VwcG9ydCBmb3IgYmFja2dyb3VuZC1jb2xvciByZWdpb24gc3R5bGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwMDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFJlbW92ZWQgZnVuY3Rpb25hbGl0
eSwgdGhlcmVmb3JlIG5vIG5ldyB0ZXN0cy4gU2luY2UgdGhpcyBpcyBhIHRlbXBvcmFyeSByb2xs
b3V0LAorICAgICAgICB0aGUgdGVzdHMgZm9yIHJlZ2lvbi1zdHlsZSB3aXRoIGJhY2tncm91bmQt
Y29sb3IgYXJlIG5vdCByZW1vdmVkIGluIHRoaXMgcGF0Y2gsIGp1c3Qgc2tpcHBlZC4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZERlY2xhcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjpSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OnNldFJlZ2lvblJhbmdlRm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmhpdFRlc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENo
aWxkTGlzdDo6cmVtb3ZlQ2hpbGROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
UmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxMi0w
MS0wMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2ggc2hvdWxkbid0IHJldHVybiBhIHZhbHVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDJmMzM1YmYzNGViZGJjNzQzMDM5ZGM0MTQxMTkxODMwOWNhZGVmNzEuLmEy
YTA1NjQxNWY2N2Q2MTZiZTg3MmE5ZjQyOGY2MjkxMjRlN2Y0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xMTc2LDcgKzExNzYsNiBAQCBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRT
dHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEySWNv
bkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRz
aG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlz
RW5hYmxlZEV2Ci1fX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxM3N0eWxlSW5SZWdpb25Fdgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEViYgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMjkwZDIyZWYxM2NhYWQx
NDZjNDU1YzhkMDViY2Q0NWI2YjU1ZjlhMC4uY2E0MjU4YzFjM2VkY2U0ZmM4MzkyYzc5MGM1ZmNj
ZWI5Yzg4MWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAt
ODEsNyArODEsNiBAQAogI2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgogI2luY2x1ZGUgIlJlY3QuaCIKLSNpbmNsdWRlICJS
ZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CkBAIC0xNjksNyArMTY4LDcgQEAgaWYgKHByaW1pdGl2ZVZhbHVlKSBcCiAKIGNsYXNzIFJ1bGVE
YXRhIHsKIHB1YmxpYzoKLSAgICBSdWxlRGF0YShDU1NTdHlsZVJ1bGUqLCBDU1NTZWxlY3Rvcios
IHVuc2lnbmVkIHBvc2l0aW9uLCBib29sIHJlZ2lvblN0eWxlUnVsZSA9IGZhbHNlKTsKKyAgICBS
dWxlRGF0YShDU1NTdHlsZVJ1bGUqLCBDU1NTZWxlY3RvciosIHVuc2lnbmVkIHBvc2l0aW9uKTsK
IAogICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQog
ICAgIENTU1N0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZTsgfQpAQCAtMTgx
LDcgKzE4MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVT
ZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yOyB9CiAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NwZWNp
ZmljaXR5OyB9CiAgICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGlua01hdGNoVHlwZTsgfQotICAgIGJvb2wgcmVnaW9uU3R5bGVSdWxlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdpb25TdHlsZVJ1bGU7IH0KIAogICAgIC8vIFRyeSB0byBiYWxhbmNlIGJldHdlZW4g
bWVtb3J5IHVzYWdlICh0aGVyZSBjYW4gYmUgbG90cyBvZiBSdWxlRGF0YSBvYmplY3RzKSBhbmQg
Z29vZCBmaWx0ZXJpbmcgcGVyZm9ybWFuY2UuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1h
eGltdW1JZGVudGlmaWVyQ291bnQgPSA0OwpAQCAtMTkzLDEzICsxOTEsMTIgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3NwZWNpZmljaXR5OwogICAgIC8vIFRoaXMgbnVtYmVyIHdhcyBwaWNr
ZWQgZmFpcmx5IGFyYml0cmFyaWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIgaXQgaWYgd2UgbmVl
ZCB0by4KICAgICAvLyBTb21lIHNpbXBsZSB0ZXN0aW5nIHNob3dlZCA8MTAwLDAwMCBSdWxlRGF0
YSdzIG9uIGxhcmdlIHNpdGVzLgotICAgIHVuc2lnbmVkIG1fcG9zaXRpb24gOiAyNTsKKyAgICB1
bnNpZ25lZCBtX3Bvc2l0aW9uIDogMjY7CiAgICAgdW5zaWduZWQgbV9oYXNGYXN0Q2hlY2thYmxl
U2VsZWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3IgOiAxOwog
ICAgIHVuc2lnbmVkIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVs
ZUhhc2ggOiAxOwogICAgIHVuc2lnbmVkIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2xpbmtNYXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JD
aGVja2VyOjpMaW5rTWF0Y2hNYXNrCi0gICAgdW5zaWduZWQgbV9yZWdpb25TdHlsZVJ1bGUgOiAx
OwogICAgIC8vIFVzZSBwbGFpbiBhcnJheSBpbnN0ZWFkIG9mIGEgVmVjdG9yIHRvIG1pbmltaXpl
IG1lbW9yeSBvdmVyaGVhZC4KICAgICB1bnNpZ25lZCBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50
aWZpZXJIYXNoZXNbbWF4aW11bUlkZW50aWZpZXJDb3VudF07CiB9OwpAQCAtMjE3LDcgKzIxNCw3
IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihSdWxlRGF0YSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNS
dWxlRGF0YSksIFJ1bGVEYXRhX3Nob3VsZF9zCiBjbGFzcyBSdWxlU2V0IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSdWxlU2V0KTsKIHB1YmxpYzoKLSAgICBSdWxlU2V0KGJvb2wgcmVnaW9u
U3R5bGVSdWxlcyA9IGZhbHNlKTsKKyAgICBSdWxlU2V0KCk7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4gPiBBdG9tUnVs
ZU1hcDsKIApAQCAtMjUyLDcgKzI0OSw2IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UnVsZURhdGE+
IG1fcGFnZVJ1bGVzOwogICAgIHVuc2lnbmVkIG1fcnVsZUNvdW50OwogICAgIGJvb2wgbV9hdXRv
U2hyaW5rVG9GaXRFbmFibGVkOwotICAgIGJvb2wgbV9yZWdpb25TdHlsZVJ1bGVzOwogfTsKIAog
c3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRTdHlsZTsKQEAgLTMzOSw3ICszMzUsNiBAQCBDU1NTdHls
ZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgU3R5bGVTaGVl
dExpc3QqIHN0eWxlU2hlZQogICAgICwgbV9yb290RWxlbWVudFN0eWxlKDApCiAgICAgLCBtX2Vs
ZW1lbnQoMCkKICAgICAsIG1fc3R5bGVkRWxlbWVudCgwKQotICAgICwgbV9yZWdpb25Gb3JTdHls
aW5nKDApCiAgICAgLCBtX2VsZW1lbnRMaW5rU3RhdGUoTm90SW5zaWRlTGluaykKICAgICAsIG1f
cGFyZW50Tm9kZSgwKQogICAgICwgbV9saW5lSGVpZ2h0VmFsdWUoMCkKQEAgLTM0OSw3ICszNDQs
NiBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2N1bWVu
dCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9u
dFNlbGVjdG9yOjpjcmVhdGUoZG9jdW1lbnQpKQogICAgICwgbV9hcHBseVByb3BlcnR5VG9SZWd1
bGFyU3R5bGUodHJ1ZSkKICAgICAsIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShm
YWxzZSkKLSAgICAsIG1fYXBwbHlQcm9wZXJ0eVRvUmVnaW9uU3R5bGUoZmFsc2UpCiAgICAgLCBt
X2FwcGx5UHJvcGVydHkoQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpzaGFyZWRDU1NTdHlsZUFwcGx5
UHJvcGVydHkoKSkKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgLCBtX2hhc1BlbmRpbmdT
aGFkZXJzKGZhbHNlKQpAQCAtNjA0LDEzICs1OTgsMTIgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb246Ok1hdGNoZWRTdHlsZURlY2xhcmF0aW9uKCkKICAgICBtZW1z
ZXQodGhpcywgMCwgc2l6ZW9mKCp0aGlzKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YWRkTWF0Y2hlZERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURl
Y2xhcmF0aW9uLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBib29sIHJlZ2lvblN0eWxlUnVsZSkK
K3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZERlY2xhcmF0aW9uKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBl
KQogewogICAgIG1fbWF0Y2hlZERlY2xzLmdyb3cobV9tYXRjaGVkRGVjbHMuc2l6ZSgpICsgMSk7
CiAgICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mIG5ld0RlY2xhcmF0aW9uID0gbV9tYXRjaGVk
RGVjbHMubGFzdCgpOwogICAgIG5ld0RlY2xhcmF0aW9uLnN0eWxlRGVjbGFyYXRpb24gPSBzdHls
ZURlY2xhcmF0aW9uOwogICAgIG5ld0RlY2xhcmF0aW9uLmxpbmtNYXRjaFR5cGUgPSBsaW5rTWF0
Y2hUeXBlOwotICAgIG5ld0RlY2xhcmF0aW9uLnJlZ2lvblN0eWxlUnVsZSA9IHJlZ2lvblN0eWxl
UnVsZTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKFJ1bGVTZXQqIHJ1
bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMpCkBAIC02NjUsNyArNjU4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXRjaFJ1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3QK
ICAgICAgICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IG1fbWF0Y2hlZFJ1bGVzW2ldLT5saW5r
TWF0Y2hUeXBlKCk7CiAgICAgICAgIGlmIChzd2FwVmlzaXRlZFVudmlzaXRlZCAmJiBsaW5rTWF0
Y2hUeXBlICYmIGxpbmtNYXRjaFR5cGUgIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkKICAg
ICAgICAgICAgIGxpbmtNYXRjaFR5cGUgPSAobGlua01hdGNoVHlwZSA9PSBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoVmlzaXRlZCkgPyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluayA6IFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hWaXNpdGVkOwotICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24obV9t
YXRjaGVkUnVsZXNbaV0tPnJ1bGUoKS0+ZGVjbGFyYXRpb24oKSwgbGlua01hdGNoVHlwZSwgbV9t
YXRjaGVkUnVsZXNbaV0tPnJlZ2lvblN0eWxlUnVsZSgpKTsKKyAgICAgICAgYWRkTWF0Y2hlZERl
Y2xhcmF0aW9uKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmRlY2xhcmF0aW9uKCksIGxpbmtN
YXRjaFR5cGUpOwogICAgIH0KIH0KIApAQCAtODI1LDkgKzgxOCw2IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgIGlmIChtX21h
dGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICAgICAgICAgbWF0Y2hSdWxlcyhtX2F1dGhvclN0eWxl
LmdldCgpLCByZXN1bHQuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQubGFzdEF1dGhvclJ1bGUsIGZh
bHNlKTsKIAotICAgIGlmIChtX3JlZ2lvbkZvclN0eWxpbmcpCi0gICAgICAgIG1hdGNoUnVsZXMo
bV9yZWdpb25SdWxlcy5nZXQoKSwgcmVzdWx0LmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0Lmxhc3RB
dXRob3JSdWxlLCBmYWxzZSk7Ci0KICAgICAvLyBOb3cgY2hlY2sgb3VyIGlubGluZSBzdHlsZSBh
dHRyaWJ1dGUuCiAgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzICYmIG1fc3R5bGVk
RWxlbWVudCkgewogICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lRGVj
bCA9IG1fc3R5bGVkRWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CkBAIC04ODAsMzcgKzg3MCw2
IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxl
bWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVuCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKIH0K
IAotaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclJlZ2lvblN0eWxpbmcoUmVu
ZGVyUmVnaW9uKiByZWdpb24pCi17Ci0gICAgc2V0UmVnaW9uRm9yU3R5bGluZyhyZWdpb24pOwot
Ci0gICAgaWYgKHJlZ2lvbikKLSAgICAgICAgaW5pdFJlZ2lvblJ1bGVzKHJlZ2lvbik7Ci19Ci0K
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdFJlZ2lvblJ1bGVzKFJlbmRlclJlZ2lvbiogcmVn
aW9uKQotewotICAgIEFTU0VSVChyZWdpb24pOwotICAgIC8vIE1hcmsgdGhhdCB0aGUgc2V0IG9m
IHJ1bGVzIGNvbWVzIGZyb20gcmVnaW9uIHN0eWxpbmcgc2luY2Ugd2UgbmVlZCB0byBmaWx0ZXIK
LSAgICAvLyB0aGUgcHJvcGVydGllcyB0aGF0IGNhbiBiZSBhcHBsaWVkLgotICAgIG1fcmVnaW9u
UnVsZXMgPSBhZG9wdFB0cihuZXcgUnVsZVNldCh0cnVlKSk7Ci0KLSAgICAvLyBGcm9tIGFsbCB0
aGUgcmVnaW9uIHN0eWxlIHJ1bGVzLCBzZWxlY3QgdGhvc2UgdGhhdCBhcHBseSB0byB0aGUgc3Bl
Y2lmaWVkIHJlZ2lvbi4KLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0Q1NTUmVnaW9uUnVs
ZT4gPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lvblN0eWxlUnVsZXMuYmVnaW4oKTsgaXQgIT0gbV9y
ZWdpb25TdHlsZVJ1bGVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYgcmVnaW9uU2VsZWN0b3JMaXN0ID0gKCppdCktPnNlbGVjdG9yTGlzdCgpOwotICAgICAg
ICBmb3IgKENTU1NlbGVjdG9yKiBzID0gcmVnaW9uU2VsZWN0b3JMaXN0LmZpcnN0KCk7IHM7IHMg
PSByZWdpb25TZWxlY3Rvckxpc3QubmV4dChzKSkgewotICAgICAgICAgICAgaWYgKCFtX2NoZWNr
ZXIuY2hlY2tTZWxlY3RvcihzLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVnaW9uLT5ub2RlKCkp
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1J1bGVMaXN0KiBy
ZWdpb25TdHlsaW5nUnVsZXMgPSAoKml0KS0+Y3NzUnVsZXMoKTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlZ2lvblN0eWxpbmdSdWxlcy0+bGVuZ3RoKCk7
ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICBDU1NSdWxlKiByZWdpb25TdHlsaW5nUnVsZSA9
IHJlZ2lvblN0eWxpbmdSdWxlcy0+aXRlbShpbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJl
Z2lvblN0eWxpbmdSdWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgICAgICAgICBtX3Jl
Z2lvblJ1bGVzLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9u
U3R5bGluZ1J1bGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNTdHlsZVNlYXJjaFRocmVzaG9sZCA9IDEwOwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNTdHlsZVNlYXJjaExldmVsVGhyZXNob2xkID0gMTA7CiAKQEAgLTEyNjEs
NyArMTIyMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoRWxlbWVu
dCogZWxlbWVudCkKIC8vIElmIHJlc29sdmVGb3JSb290RGVmYXVsdCBpcyB0cnVlLCBzdHlsZSBi
YXNlZCBvbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IG9ubHkuIFRoaXMgaXMgdXNlZCBpbiBtZWRp
YSBxdWVyaWVzLCB3aGVyZQogLy8gcmVsYXRpdmUgdW5pdHMgYXJlIGludGVycHJldGVkIGFjY29y
ZGluZyB0byBkb2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUsIHN0eWxlZCBvbmx5IHdpdGggVUEg
c3R5bGVzaGVldAogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJl
bnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCwgUmVuZGVy
UmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5
bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWxl
KiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywgYm9vbCByZXNvbHZlRm9yUm9vdERl
ZmF1bHQpCiB7CiAgICAgLy8gT25jZSBhbiBlbGVtZW50IGhhcyBhIHJlbmRlcmVyLCB3ZSBkb24n
dCB0cnkgdG8gZGVzdHJveSBpdCwgc2luY2Ugb3RoZXJ3aXNlIHRoZSByZW5kZXJlcgogICAgIC8v
IHdpbGwgdmFuaXNoIGlmIGEgc3R5bGUgcmVjYWxjIGhhcHBlbnMgZHVyaW5nIGxvYWRpbmcuCkBA
IC0xMjc3LDcgKzEyMzYsNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUmVuZAogCiAgICAgaW5pdEVs
ZW1lbnQoZWxlbWVudCk7CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlbGVtZW50LCBkZWZhdWx0
UGFyZW50KTsKLSAgICBpbml0Rm9yUmVnaW9uU3R5bGluZyhyZWdpb25Gb3JTdHlsaW5nKTsKICAg
ICBpZiAoYWxsb3dTaGFyaW5nKSB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzaGFyZWRTdHlsZSA9
IGxvY2F0ZVNoYXJlZFN0eWxlKCk7CiAgICAgICAgIGlmIChzaGFyZWRTdHlsZSkKQEAgLTE0MzQs
NyArMTM5Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmlt
YXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgfQogfQogCi1QYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQo
UHNldWRvSWQgcHNldWRvLCBFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFJl
bmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZykKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENT
U1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sIEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBpZiAoIWUpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTQ0Miw3ICsxNDAwLDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVk
bywKICAgICBpbml0RWxlbWVudChlKTsKIAogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgcGFy
ZW50U3R5bGUsIHBzZXVkbyk7Ci0gICAgaW5pdEZvclJlZ2lvblN0eWxpbmcocmVnaW9uRm9yU3R5
bGluZyk7CiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIAogICAgIGlmICht
X3BhcmVudFN0eWxlKQpAQCAtMTg5OSw3ICsxODU2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNv
bnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShDU1NTdHlsZVJ1
bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQgcG9zaXRpb24sIGJvb2wg
cmVnaW9uU3R5bGVSdWxlKQorUnVsZURhdGE6OlJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbikKICAgICA6IG1fcnVsZShy
dWxlKQogICAgICwgbV9zZWxlY3RvcihzZWxlY3RvcikKICAgICAsIG1fc3BlY2lmaWNpdHkoc2Vs
ZWN0b3ItPnNwZWNpZmljaXR5KCkpCkBAIC0xOTA5LDE1ICsxODY2LDEzIEBAIFJ1bGVEYXRhOjpS
dWxlRGF0YShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWdu
ZWQgcG9zaXRpb24sCiAgICAgLCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFz
ZWRPblJ1bGVIYXNoKGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0
b3IpKQogICAgICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2ViQ29yZTo6
Y29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAsIG1fbGlu
a01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoc2VsZWN0
b3IpKQotICAgICwgbV9yZWdpb25TdHlsZVJ1bGUocmVnaW9uU3R5bGVSdWxlKQogewogICAgIFNl
bGVjdG9yQ2hlY2tlcjo6Y29sbGVjdElkZW50aWZpZXJIYXNoZXMobV9zZWxlY3RvciwgbV9kZXNj
ZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzLCBtYXhpbXVtSWRlbnRpZmllckNvdW50KTsK
IH0KIAotUnVsZVNldDo6UnVsZVNldChib29sIHJlZ2lvblN0eWxlUnVsZXMpCitSdWxlU2V0OjpS
dWxlU2V0KCkKICAgICA6IG1fcnVsZUNvdW50KDApCiAgICAgLCBtX2F1dG9TaHJpbmtUb0ZpdEVu
YWJsZWQodHJ1ZSkKLSAgICAsIG1fcmVnaW9uU3R5bGVSdWxlcyhyZWdpb25TdHlsZVJ1bGVzKQog
ewogfQogCkBAIC0xOTI4LDcgKzE4ODMsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChB
dG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAsIENTU1N0eWxlUnVsZQogICAg
IE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcnVsZXMgPSBhZG9wdFB0
cihuZXcgVmVjdG9yPFJ1bGVEYXRhPik7Ci0gICAgcnVsZXMtPmFwcGVuZChSdWxlRGF0YShydWxl
LCBzZWxlY3RvciwgbV9ydWxlQ291bnQrKywgbV9yZWdpb25TdHlsZVJ1bGVzKSk7CisgICAgcnVs
ZXMtPmFwcGVuZChSdWxlRGF0YShydWxlLCBzZWxlY3RvciwgbV9ydWxlQ291bnQrKykpOwogfQog
CiB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciog
c2VsKQpAQCAtMjIzMiwxMSArMjE4Nyw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlE
ZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlCiAgICAg
ICAgIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4
OyArK2kpIHsKLSAgICAgICAgbV9hcHBseVByb3BlcnR5VG9SZWdpb25TdHlsZSA9IG1fbWF0Y2hl
ZERlY2xzW2ldLnJlZ2lvblN0eWxlUnVsZTsKKyAgICBmb3IgKGludCBpID0gc3RhcnRJbmRleDsg
aSA8PSBlbmRJbmRleDsgKytpKQogICAgICAgICBhcHBseURlY2xhcmF0aW9uPGFwcGx5Rmlyc3Q+
KG1fbWF0Y2hlZERlY2xzW2ldLnN0eWxlRGVjbGFyYXRpb24sIGlzSW1wb3J0YW50LCBpbmhlcml0
ZWRPbmx5KTsKLSAgICAgICAgbV9hcHBseVByb3BlcnR5VG9SZWdpb25TdHlsZSA9IGZhbHNlOwot
ICAgIH0KIH0KIAogdW5zaWduZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZURlY2xhcmF0aW9u
SGFzaChNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb25zLCB1bnNpZ25lZCBzaXpl
KQpAQCAtMjUxNiwyMCArMjQ2OCw2IEBAIGlubGluZSBib29sIGlzVmFsaWRWaXNpdGVkTGlua1By
b3BlcnR5KGludCBpZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jdGhlLWF0LXJlZ2lvbi1zdHlsZS1ydWxlCi0vLyBGSVhN
RTogYWRkIGluY3JlbWVudGFsIHN1cHBvcnQgZm9yIG90aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3Bl
cnRpZXMuCi1pbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShpbnQgaWQpCi17
Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCkpIHsKLSAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IC8vIFNWRyBoYW5kbGVzIHpvb21pbmcgaW4gYSBkaWZmZXJlbnQgd2F5IGNvbXBhcmVkIHRvIENT
Uy4gVGhlIHdob2xlIGRvY3VtZW50IGlzIHNjYWxlZCBpbnN0ZWFkCiAvLyBvZiBlYWNoIGluZGl2
aWR1YWwgbGVuZ3RoIHZhbHVlIGluIHRoZSByZW5kZXIgc3R5bGUgLyB0cmVlLiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCooKQogLy8gbXVsdGlwbGllcyBlYWNoIHJlc29sdmVkIGxl
bmd0aCB3aXRoIHRoZSB6b29tIG11bHRpcGxpZXIgLSBzbyBmb3IgU1ZHIHdlIG5lZWQgdG8gZGlz
YWJsZSB0aGF0LgpAQCAtMjYxMCwxMCArMjU0OCw2IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIC8vIEZpbHRlciByZWdpb24gc3R5bGUgcHJvcGVydHkKLSAgICBpZiAoYXBw
bHlQcm9wZXJ0eVRvUmVnaW9uU3R5bGUoKSAmJiAhaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHko
aWQpKQotICAgICAgICByZXR1cm47Ci0KICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwogCiAgICAgaWYgKGlzSW5oZXJpdCAmJiBtX3Bh
cmVudFN0eWxlICYmICFtX3BhcmVudFN0eWxlLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVy
dGllcygpICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCA2OGI2MzhjYmQwOTI3N2YzN2M2
MjdkNGM5NzNkMjFkMDU0M2QzYWJkLi45MjhkODVjOTgyNjY3MDhlMWUzMjhmMzE0YzE5NzM1ODg4
YzFiNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTYzLDcgKzYz
LDYgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1ZTsKIGNsYXNzIE1l
ZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2V0dGluZ3M7CkBAIC0xMDUsMTEg
KzEwNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoUGFyZW50KEVsZW1lbnQqIHBhcmVudCkg
eyBtX2NoZWNrZXIucHVzaFBhcmVudChwYXJlbnQpOyB9CiAgICAgdm9pZCBwb3BQYXJlbnQoRWxl
bWVudCogcGFyZW50KSB7IG1fY2hlY2tlci5wb3BQYXJlbnQocGFyZW50KTsgfQogCi0gICAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVzb2x2
ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UsIFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZyA9
IDApOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50
KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBhbGxvd1NoYXJpbmcgPSB0cnVl
LCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlKTsKIAogICAgIHZvaWQga2V5ZnJh
bWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgS2V5ZnJh
bWVMaXN0Jik7CiAKLSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVs
ZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcgPSAwKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwKTsKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KTsKIApAQCAtMTMxLDggKzEzMCw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICB2b2lkIGlu
aXRFbGVtZW50KEVsZW1lbnQqKTsKLSAgICB2b2lkIGluaXRGb3JSZWdpb25TdHlsaW5nKFJlbmRl
clJlZ2lvbiopOwotICAgIHZvaWQgaW5pdFJlZ2lvblJ1bGVzKFJlbmRlclJlZ2lvbiopOwogICAg
IFJlbmRlclN0eWxlKiBsb2NhdGVTaGFyZWRTdHlsZSgpOwogICAgIGJvb2wgbWF0Y2hlc1J1bGVT
ZXQoUnVsZVNldCopOwogICAgIE5vZGUqIGxvY2F0ZUNvdXNpbkxpc3QoRWxlbWVudCogcGFyZW50
LCB1bnNpZ25lZCYgdmlzaXRlZE5vZGVDb3VudCkgY29uc3Q7CkBAIC0xNDEsOSArMTM4LDYgQEAg
cHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUo
Y29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqLCBLZXlmcmFt
ZVZhbHVlJik7CiAKLSAgICB2b2lkIHNldFJlZ2lvbkZvclN0eWxpbmcoUmVuZGVyUmVnaW9uKiBy
ZWdpb24pIHsgbV9yZWdpb25Gb3JTdHlsaW5nID0gcmVnaW9uOyB9Ci0gICAgUmVuZGVyUmVnaW9u
KiByZWdpb25Gb3JTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25Gb3JTdHlsaW5nOyB9
Ci0KIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQg
b2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZvciBhIGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVs
ZW1lbnQpLgogICAgIGVudW0gQ1NTUnVsZUZpbHRlciB7CkBAIC0yNDIsNyArMjM2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZVRvQWRq
dXN0LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVsZW1lbnQqKTsKIAogICAgIHZvaWQgYWRk
TWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEqIHJ1bGUpIHsgbV9tYXRjaGVkUnVsZXMuYXBwZW5k
KHJ1bGUpOyB9Ci0gICAgdm9pZCBhZGRNYXRjaGVkRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpN
YXRjaEFsbCwgYm9vbCByZWdpb25TdHlsZVJ1bGUgPSBmYWxzZSk7CisgICAgdm9pZCBhZGRNYXRj
aGVkRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCB1bnNpZ25lZCBsaW5r
TWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCk7CiAKICAgICBzdHJ1Y3QgTWF0
Y2hSZXN1bHQgewogICAgICAgICBNYXRjaFJlc3VsdCgpIDogZmlyc3RVQVJ1bGUoLTEpLCBsYXN0
VUFSdWxlKC0xKSwgZmlyc3RBdXRob3JSdWxlKC0xKSwgbGFzdEF1dGhvclJ1bGUoLTEpLCBmaXJz
dFVzZXJSdWxlKC0xKSwgbGFzdFVzZXJSdWxlKC0xKSwgaXNDYWNoZWFibGUodHJ1ZSkgeyB9CkBA
IC0yNzgsNyArMjcyLDYgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhv
clN0eWxlOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKLSAgICBPd25QdHI8UnVs
ZVNldD4gbV9yZWdpb25SdWxlczsKIAogICAgIEZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKQEAgLTMw
Miw3ICsyOTUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlOyB9CiAg
ICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9Ci0gICAgYm9vbCBhcHBseVByb3Bl
cnR5VG9SZWdpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvUmVnaW9u
U3R5bGU7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZ
ZXRBdmFpbGFibGU7CkBAIC0zNTAsNyArMzQyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgTWF0Y2hl
ZFN0eWxlRGVjbGFyYXRpb24oKTsKICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IHN0eWxlRGVjbGFyYXRpb247CiAgICAgICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGU7Ci0gICAg
ICAgIGJvb2wgcmVnaW9uU3R5bGVSdWxlOwogICAgIH07CiAgICAgc3RhdGljIHVuc2lnbmVkIGNv
bXB1dGVEZWNsYXJhdGlvbkhhc2goTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24qLCB1bnNpZ25lZCBz
aXplKTsKICAgICBzdHJ1Y3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZUl0ZW0gewpAQCAt
MzkxLDcgKzM4Miw2IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRT
dHlsZTsKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICAgU3R5bGVkRWxlbWVudCogbV9zdHls
ZWRFbGVtZW50OwotICAgIFJlbmRlclJlZ2lvbiogbV9yZWdpb25Gb3JTdHlsaW5nOwogICAgIEVJ
bnNpZGVMaW5rIG1fZWxlbWVudExpbmtTdGF0ZTsKICAgICBDb250YWluZXJOb2RlKiBtX3BhcmVu
dE5vZGU7CiAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwpAQCAtNDA0LDcgKzM5NCw2
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlOwog
ICAgIGJvb2wgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOwotICAgIGJvb2wgbV9h
cHBseVByb3BlcnR5VG9SZWdpb25TdHlsZTsKICAgICBjb25zdCBDU1NTdHlsZUFwcGx5UHJvcGVy
dHkmIG1fYXBwbHlQcm9wZXJ0eTsKICAgICAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggMWJjMzli
NGZmNzdiZmQzYjZlYWRiNDRiZWRhZTAwOTZhZWUyN2I1My4uNzcyMDM4OGQ4YmE3ZTQwNGUyMDEx
NTI0NDY4MWVmMDQ1N2ZmOTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcApAQCAtNzQ1LDMyICs3NDUsNiBAQCBSZW5kZXJSZWdpb24qIFJlbmRl
ckZsb3dUaHJlYWQ6Omxhc3RSZWdpb24oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QsCi0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogb2xkU3RhcnRS
ZWdpb24sIGNvbnN0IFJlbmRlclJlZ2lvbiogb2xkRW5kUmVnaW9uLAotICAgICAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJl
Z2lvbikKLXsKLSAgICAvLyBDbGVhciB0aGUgc3R5bGVzIGZvciB0aGUgb2JqZWN0IGluIHRoZSBy
ZWdpb25zLgotICAgIC8vIFRoZSBzdHlsZXMgYXJlIG5vdCBjbGVhcmVkIGZvciB0aGUgcmVnaW9u
cyB0aGF0IGFyZSBjb250YWluZWQgaW4gYm90aCByYW5nZXMuCi0gICAgYm9vbCBpbnNpZGVPbGRS
ZWdpb25SYW5nZSA9IGZhbHNlOwotICAgIGJvb2wgaW5zaWRlTmV3UmVnaW9uUmFuZ2UgPSBmYWxz
ZTsKLSAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxp
c3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewotICAgICAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwotCi0gICAgICAgIGlmIChvbGRTdGFydFJl
Z2lvbiA9PSByZWdpb24pCi0gICAgICAgICAgICBpbnNpZGVPbGRSZWdpb25SYW5nZSA9IHRydWU7
Ci0gICAgICAgIGlmIChuZXdTdGFydFJlZ2lvbiA9PSByZWdpb24pCi0gICAgICAgICAgICBpbnNp
ZGVOZXdSZWdpb25SYW5nZSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKCEoaW5zaWRlT2xkUmVnaW9u
UmFuZ2UgJiYgaW5zaWRlTmV3UmVnaW9uUmFuZ2UpKQotICAgICAgICAgICAgcmVnaW9uLT5jbGVh
ck9iamVjdFN0eWxlSW5SZWdpb24ob2JqZWN0KTsKLQotICAgICAgICBpZiAob2xkRW5kUmVnaW9u
ID09IHJlZ2lvbikKLSAgICAgICAgICAgIGluc2lkZU9sZFJlZ2lvblJhbmdlID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChuZXdFbmRSZWdpb24gPT0gcmVnaW9uKQotICAgICAgICAgICAgaW5zaWRlTmV3
UmVnaW9uUmFuZ2UgPSBmYWxzZTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6
c2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHJpZ2h0
IGZvciBkaWZmZXJpbmcgd3JpdGluZy1tb2Rlcy4KQEAgLTc4Miw4ICs3NTYsNiBAQCB2b2lkIFJl
bmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94
LCBMYXlvdXRVbml0IG9mZgogICAgICAgICBpZiAocmFuZ2UtPnN0YXJ0UmVnaW9uKCkgPT0gc3Rh
cnRSZWdpb24gJiYgcmFuZ2UtPmVuZFJlZ2lvbigpID09IGVuZFJlZ2lvbikKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBSZW5kZXJSZWdpb24qIG9sZFN0YXJ0UmVnaW9uID0gcmFuZ2Ut
PnN0YXJ0UmVnaW9uKCk7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogb2xkRW5kUmVnaW9uID0gcmFu
Z2UtPmVuZFJlZ2lvbigpOwogICAgICAgICAvLyBEZWxldGUgYW55IGluZm8gdGhhdCB3ZSBmaW5k
IGJlZm9yZSBvdXIgbmV3IHN0YXJ0UmVnaW9uIGFuZCBhZnRlciBvdXIgbmV3IGVuZFJlZ2lvbi4K
ICAgICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC03OTksNyArNzcxLDYgQEAg
dm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJC
b3gqIGJveCwgTGF5b3V0VW5pdCBvZmYKICAgICAgICAgfQogCiAgICAgICAgIHJhbmdlLT5zZXRS
YW5nZShzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLSAgICAgICAgY2xlYXJSZW5kZXJPYmplY3RD
dXN0b21TdHlsZShib3gsIG9sZFN0YXJ0UmVnaW9uLCBvbGRFbmRSZWdpb24sIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJhbmdlID0gbmV3IFJl
bmRlclJlZ2lvblJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggMGJiYjE4MWUzYTAzY2YyNTI3YmQ5
ZjllOGE2ZGI3YjYzNzdkNmM5Ny4uZDU2MzEyYzc4YmFhZjhkYjM0MDY5YWNmNWFhYTVmYTAzZmI5
Y2RlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBA
IC0xMjMsMTAgKzEyMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94
KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSk7CiAgICAgdm9pZCBnZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBS
ZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25z
dDsKIAotICAgIHZvaWQgY2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJP
YmplY3QqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5k
ZXJSZWdpb24qIG9sZFN0YXJ0UmVnaW9uID0gMCwgY29uc3QgUmVuZGVyUmVnaW9uKiBvbGRFbmRS
ZWdpb24gPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0gMCwgY29uc3QgUmVuZGVyUmVnaW9uKiBuZXdF
bmRSZWdpb24gPSAwKTsKLQogICAgIFdlYktpdE5hbWVkRmxvdyogZW5zdXJlTmFtZWRGbG93KCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA5MGNkMmU2ZjZlNDZlMTVlM2Q0YWM5MzAzOTk5MTc5ZTJhZmRhZjJlLi41ODdlMjM3MWMxYjEx
NjM4NDEwMjE1NjU1NTM0MzVmZWI4YmI4OGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTI1ODgsMjggKzI1ODgsOSBAQCBib29sIFJlbmRlckxheWVyOjpz
Y3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHksIG11bHRpcGxpZXIpOwogfQogCi1jbGFzcyBDdXJyZW50UmVuZGVyUmVnaW9uTWFpbnRh
aW5lciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFJlbmRlclJlZ2lvbk1haW50
YWluZXIpOwotcHVibGljOgotICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVyKFJlbmRl
clZpZXcqIHZpZXcsIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQotICAgIDogbV92aWV3KHZp
ZXcpCi0gICAgLCBtX3JlbmRlclJlZ2lvbih2aWV3LT5jdXJyZW50UmVuZGVyUmVnaW9uKCkpCi0g
ICAgewotICAgICAgICBtX3ZpZXctPnNldEN1cnJlbnRSZW5kZXJSZWdpb24ocmVuZGVyUmVnaW9u
KTsKLSAgICB9Ci0gICAgfkN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVyKCkKLSAgICB7Ci0g
ICAgICAgIG1fdmlldy0+c2V0Q3VycmVudFJlbmRlclJlZ2lvbihtX3JlbmRlclJlZ2lvbik7Ci0g
ICAgfQotcHJpdmF0ZToKLSAgICBSZW5kZXJWaWV3KiBtX3ZpZXc7Ci0gICAgUmVuZGVyUmVnaW9u
KiBtX3JlbmRlclJlZ2lvbjsKLX07Ci0KIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogcCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciBw
YWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QgKnBhaW50aW5nUm9vdCwKICAgICBSZW5kZXJSZWdp
b24qIHJlZ2lvbiwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7Ci0gICAgQ3VycmVudFJl
bmRlclJlZ2lvbk1haW50YWluZXIgcmVuZGVyUmVnaW9uTWFpbnRhaW5lcihyZW5kZXJlcigpLT52
aWV3KCksIHJlZ2lvbik7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVx
dWVzdHM7CiAgICAgcGFpbnRMYXllcih0aGlzLCBwLCBkYW1hZ2VSZWN0LCBwYWludEJlaGF2aW9y
LCBwYWludGluZ1Jvb3QsIHJlZ2lvbiwgJm92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50RmxhZ3Mp
OwogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0b3IgZW5kID0gb3ZlcmxhcFRlc3RS
ZXF1ZXN0cy5lbmQoKTsKQEAgLTMxMjcsNyArMzEwOCw2IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0
UmVjdCBmcmFtZVZpc2libGVSZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKIGJvb2wgUmVu
ZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBDdXJyZW50UmVuZGVyUmVnaW9uTWFpbnRhaW5lciByZW5k
ZXJSZWdpb25NYWludGFpbmVyKHJlbmRlcmVyKCktPnZpZXcoKSwgcmVzdWx0LnJlZ2lvbigpKTsK
ICAgICByZW5kZXJlcigpLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICAKICAgICBM
YXlvdXRSZWN0IGhpdFRlc3RBcmVhID0gcmVuZGVyZXIoKS0+dmlldygpLT5kb2N1bWVudFJlY3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzIxNjM4
NTY3OGZlODhjOTExYTk2Y2RmNGI1NmQzMDE4MTAzMTQwZi4uNGM1ZmQ4ZTBmZTc1OWQwNjRhMDA2
ZTFkYTU1NjUyODNlZmE1NTM4MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTE3MDgsMjAgKzE3MDgsNiBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2Jq
ZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgog
ICAgIHJldHVybiBkaWZmOwogfQogCi1SZW5kZXJTdHlsZSogUmVuZGVyT2JqZWN0OjpzdHlsZUlu
UmVnaW9uKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaW5SZW5kZXJGbG93VGhyZWFkKCkpOwotCi0g
ICAgaWYgKCFjYW5IYXZlUmVnaW9uU3R5bGUoKQotICAgICAgICB8fCAhKCh2aWV3KCkgJiYgdmll
dygpLT5jdXJyZW50UmVuZGVyUmVnaW9uKCkgJiYgdmlldygpLT5jdXJyZW50UmVuZGVyUmVnaW9u
KCktPmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpKSkKLSAgICAgICAgcmV0dXJuIG1fc3R5bGUuZ2V0
KCk7Ci0KLSAgICBSZW5kZXJTdHlsZSogcmVnaW9uU3R5bGUgPSB2aWV3KCktPmN1cnJlbnRSZW5k
ZXJSZWdpb24oKS0+cmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUodGhpcyk7Ci0gICAgaWYgKCFyZWdp
b25TdHlsZSkKLSAgICAgICAgdmlldygpLT5jdXJyZW50UmVuZGVyUmVnaW9uKCktPmNvbXB1dGVT
dHlsZUluUmVnaW9uKHRoaXMpOwotICAgIHJldHVybiB2aWV3KCktPmN1cnJlbnRSZW5kZXJSZWdp
b24oKS0+cmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUodGhpcyk7Ci19Ci0KIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBpZiAo
bV9zdHlsZSA9PSBzdHlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDc1YWFiNTdhOGZlOTkzOWY3OTJkNTY2M2U5ZTU1MWI2YWZlOGYxNjkuLjNmZTE4NWY2
YWMyNjRiMzA2NjM3NGZmMGJkOThjNDBhZjQ2MzNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM0NCw4ICszNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIGJvb2wgY2FuSGF2ZVJlZ2lvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gaXNSZW5kZXJCbG9j
aygpICYmICFpc0Fub255bW91cygpICYmICFpc1JlbmRlckZsb3dUaHJlYWQoKTsgfQotCiAgICAg
Ym9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSA9PSBtX25vZGU7IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0OwogICAgIGJvb2wgaXNIUigp
IGNvbnN0OwpAQCAtODc3LDcgKzg3NSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIExheW91
dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVw
YWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250
YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiBwcml2YXRlOgot
ICAgIFJlbmRlclN0eWxlKiBzdHlsZUluUmVnaW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUq
IGZpcnN0TGluZVN0eWxlU2xvd0Nhc2UoKSBjb25zdDsKICAgICBTdHlsZURpZmZlcmVuY2UgYWRq
dXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSwgdW5zaWduZWQgY29udGV4dFNlbnNp
dGl2ZVByb3BlcnRpZXMpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDFmMTc2YjU4NDUyNjhmNGY1YjcxZWEy
ZmRiYmZjZWY3MDNiZDA1ZWYuLmNlNjExYTc2NmJmZDE2MGYxNDRmMjE0ZmFiYTUyYTE2MjRlZDU5
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGls
ZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGls
ZExpc3QuY3BwCkBAIC0xMTQsMTEgKzExNCw4IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyCiAg
ICAgICAgIGlmIChvbGRDaGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKICAgICAgICAgICAgIHRvUmVu
ZGVyUmVnaW9uKG9sZENoaWxkKS0+ZGV0YWNoUmVnaW9uKCk7CiAKLSAgICAgICAgaWYgKG9sZENo
aWxkLT5pblJlbmRlckZsb3dUaHJlYWQoKSAmJiBvbGRDaGlsZC0+aXNCb3goKSkgeworICAgICAg
ICBpZiAob2xkQ2hpbGQtPmluUmVuZGVyRmxvd1RocmVhZCgpICYmIG9sZENoaWxkLT5pc0JveCgp
KQogICAgICAgICAgICAgb2xkQ2hpbGQtPmVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+cmVt
b3ZlUmVuZGVyQm94UmVnaW9uSW5mbyh0b1JlbmRlckJveChvbGRDaGlsZCkpOwotICAgICAgICAg
ICAgaWYgKG9sZENoaWxkLT5jYW5IYXZlUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgICAgICAgICBv
bGRDaGlsZC0+ZW5jbG9zaW5nUmVuZGVyRmxvd1RocmVhZCgpLT5jbGVhclJlbmRlck9iamVjdEN1
c3RvbVN0eWxlKG9sZENoaWxkKTsKLSAgICAgICAgfQogCiAgICAgICAgIGlmIChSZW5kZXJGbG93
VGhyZWFkKiBjb250YWluZXJGbG93VGhyZWFkID0gcmVuZGVyRmxvd1RocmVhZENvbnRhaW5lcihv
d25lcikpCiAgICAgICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93Q2hpbGQo
b2xkQ2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRl
eCA4ODUyMGU3NmQxMDhhZTU4YzQwNGY3YTJhYjlmMzgyOTJhMjIxMzE1Li4zNWQ5MDNjYzE5Y2Iy
NWZhMzI2ZGQ0N2M0OTUwYzcxNjUxYmFmMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcApAQCAtMjQyLDM4ICsyNDIsNCBAQCBMYXlvdXRVbml0IFJlbmRlclJl
Z2lvbjo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHJlZ2lvblJlY3QoKS54KCk7CiB9CiAKLVJlbmRlclN0eWxlKiBSZW5kZXJSZWdpb246OnJlbmRl
ck9iamVjdFJlZ2lvblN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KSBjb25z
dAotewotICAgIFJlbmRlck9iamVjdFJlZ2lvblN0eWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuZmluZChyZW5kZXJPYmplY3QpOwotICAgIHJldHVy
biAoaXQgIT0gbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5lbmQoKSkgPyBpdC0+c2Vjb25kLmdl
dCgpIDogMDsKLX0KLQotdm9pZCBSZW5kZXJSZWdpb246OmNvbXB1dGVTdHlsZUluUmVnaW9uKGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQotewotICAgIEFTU0VSVChvYmplY3QpOwotICAgIEFT
U0VSVChvYmplY3QtPnZpZXcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdC0+dmlldygpLT5kb2N1bWVu
dCgpKTsKLSAgICBBU1NFUlQoIW9iamVjdC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAgQVNTRVJUKG9i
amVjdC0+bm9kZSgpICYmIG9iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpOwotCi0gICAg
RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChvYmplY3QtPm5vZGUoKSk7Ci0gICAgUmVmUHRy
PFJlbmRlclN0eWxlPiByZW5kZXJPYmplY3RTdHlsZSA9IG9iamVjdC0+dmlldygpLT5kb2N1bWVu
dCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAwLCBmYWxzZSwg
ZmFsc2UsIHRoaXMpOwotICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuc2V0KG9iamVjdCwg
cmVuZGVyT2JqZWN0U3R5bGUpOwotCi0gICAgaWYgKCFvYmplY3QtPmhhc0JveERlY29yYXRpb25z
KCkpIHsKLSAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjb25zdF9jYXN0PFJlbmRlckJveCo+KHRv
UmVuZGVyQm94KG9iamVjdCkpOwotICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGVJblJlZ2lvbiA9
IHJlbmRlck9iamVjdFJlZ2lvblN0eWxlKG9iamVjdCk7Ci0gICAgICAgIEFTU0VSVChzdHlsZUlu
UmVnaW9uKTsKLQotICAgICAgICBib29sIGhhc0JveERlY29yYXRpb25zID0gb2JqZWN0LT5pc1Rh
YmxlQ2VsbCgpIHx8IHN0eWxlSW5SZWdpb24tPmhhc0JhY2tncm91bmQoKSB8fCBzdHlsZUluUmVn
aW9uLT5oYXNCb3JkZXIoKSB8fCBzdHlsZUluUmVnaW9uLT5oYXNBcHBlYXJhbmNlKCkgfHwgc3R5
bGVJblJlZ2lvbi0+Ym94U2hhZG93KCk7Ci0gICAgICAgIGJveC0+c2V0SGFzQm94RGVjb3JhdGlv
bnMoaGFzQm94RGVjb3JhdGlvbnMpOwotICAgIH0KLX0KLQotdm9pZCBSZW5kZXJSZWdpb246OmNs
ZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsKLSAg
ICBBU1NFUlQob2JqZWN0KTsKLSAgICBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLnJlbW92ZShv
YmplY3QpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggNTc2NmJmOGE5MmYzZTNiOWY1YmMyODdlNDdkYTg3YWY0
MmE1YTMwYi4uMjQ4ZDE0ODQ3MzlhOGQ5MmUxYjk2ZjE2ZjA2YmEwYTIzZmQwNjIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtODEsOSArODEsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0ZpcnN0UmVnaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhc3RSZWdp
b24oKSBjb25zdDsKIAotICAgIFJlbmRlclN0eWxlKiByZW5kZXJPYmplY3RSZWdpb25TdHlsZShj
b25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVTdHlsZUluUmVnaW9u
KGNvbnN0IFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdHlsZUluUmVnaW9u
KGNvbnN0IFJlbmRlck9iamVjdCopOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCkBAIC0xMDEs
MTEgKzk4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBpdCB3aWxsIGFsc28gaG9sZCBhIGN1c3RvbSBz
dHlsZSBmb3IgYW55IGJveCAoZm9yIHJlZ2lvbiBzdHlsaW5nKS4KICAgICBIYXNoTWFwPGNvbnN0
IFJlbmRlckJveCosIFJlbmRlckJveFJlZ2lvbkluZm8qPiBtX3JlbmRlckJveFJlZ2lvbkluZm87
CiAKLSAgICAvLyBUaGlzIG1hcCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVnaW9uIHN0
eWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVuZGVyIG9iamVjdHMgdGhhdAotICAgIC8vIGFyZSBk
aXNwbGF5ZWQgaW50byB0aGlzIHJlZ2lvbi4KLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVu
ZGVyT2JqZWN0KiwgUmVmUHRyPFJlbmRlclN0eWxlPiA+IFJlbmRlck9iamVjdFJlZ2lvblN0eWxl
TWFwOwotICAgIFJlbmRlck9iamVjdFJlZ2lvblN0eWxlTWFwIG1fcmVuZGVyT2JqZWN0UmVnaW9u
U3R5bGU7Ci0KICAgICBib29sIG1faXNWYWxpZDsKICAgICBib29sIG1faGFzQ3VzdG9tUmVnaW9u
U3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGM4
ODU4YzY1YWZiMGVkMTNmNjMyYmI1ODBlNzFiZWIwMWZlOGNlOTMuLmU2MTkwZmYxNTQyYzQ0ZDZm
YjVjOTFhMGYxZDg1OWI2MTA1MjliNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKQEAgLTU4LDcgKzU4LDYgQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBu
b2RlLCBGcmFtZVZpZXcqIHZpZXcpCiAgICAgLCBtX2xheW91dFN0YXRlKDApCiAgICAgLCBtX2xh
eW91dFN0YXRlRGlzYWJsZUNvdW50KDApCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJGbG93VGhyZWFk
KDApCi0gICAgLCBtX2N1cnJlbnRSZW5kZXJSZWdpb24oMCkKIHsKICAgICAvLyBDbGVhciBvdXIg
YW5vbnltb3VzIGJpdCwgc2V0IGJlY2F1c2UgUmVuZGVyT2JqZWN0IGFzc3VtZXMKICAgICAvLyBh
bnkgcmVuZGVyZXIgd2l0aCBkb2N1bWVudCBhcyB0aGUgbm9kZSBpcyBhbm9ueW1vdXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA3MjhkZDhiY2FjMjQxNmNiZDg4ZDcx
YmIzNDY1ZWRkZmY5NTFjNThlLi5mNGMyYzhhMjVhYzBkMGI0YTBiYjY0YzFmM2IxYzVhNzU4ZGJj
OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTMyLDcgKzMyLDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKLWNsYXNz
IFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJlbmRlcldpZGdldDsKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTE4OCw5ICsxODcsNiBAQCBwdWJsaWM6CiAgICAgUmVuZGVyRmxv
d1RocmVhZCogY3VycmVudFJlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRSZW5kZXJGbG93VGhyZWFkOyB9CiAgICAgdm9pZCBzZXRDdXJyZW50UmVuZGVyRmxvd1RocmVh
ZChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKSB7IG1fY3VycmVudFJlbmRlckZsb3dUaHJl
YWQgPSBmbG93VGhyZWFkOyB9CiAKLSAgICBSZW5kZXJSZWdpb24qIGN1cnJlbnRSZW5kZXJSZWdp
b24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZW5kZXJSZWdpb247IH0KLSAgICB2b2lkIHNl
dEN1cnJlbnRSZW5kZXJSZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24pIHsgbV9jdXJyZW50UmVu
ZGVyUmVnaW9uID0gcmVnaW9uOyB9Ci0KICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogICAgIEludGVydmFsQXJl
bmEqIGludGVydmFsQXJlbmEoKTsKQEAgLTI4MCw3ICsyNzYsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgT3duUHRyPFJlbmRlckZsb3dUaHJlYWRMaXN0PiBtX3JlbmRlckZsb3dUaHJlYWRMaXN0
OwogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fY3VycmVudFJlbmRlckZsb3dUaHJlYWQ7Ci0gICAg
UmVuZGVyUmVnaW9uKiBtX2N1cnJlbnRSZW5kZXJSZWdpb247CiAgICAgUmVmUHRyPEludGVydmFs
QXJlbmE+IG1faW50ZXJ2YWxBcmVuYTsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>