<?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>134177</bug_id>
          
          <creation_ts>2014-06-22 14:03:09 -0700</creation_ts>
          <short_desc>Thread some references through the remote layer tree code</short_desc>
          <delta_ts>2014-06-22 17:52:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1017433</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-22 14:03:09 -0700</bug_when>
    <thetext>I pulled on a loose thread and it started unraveling (and then I kept going).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017434</commentid>
    <comment_count>1</comment_count>
      <attachid>233574</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-22 14:03:54 -0700</bug_when>
    <thetext>Created attachment 233574
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017451</commentid>
    <comment_count>2</comment_count>
      <attachid>233574</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-22 16:55:31 -0700</bug_when>
    <thetext>Comment on attachment 233574
patch

Though it helps when the patch applies. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017457</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-22 17:52:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170274</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233574</attachid>
            <date>2014-06-22 14:03:54 -0700</date>
            <delta_ts>2014-06-22 16:55:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>references.diff</filename>
            <type>text/plain</type>
            <size>59861</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYTc3ZDNhLi5iNGNiN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTQtMDYtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGhyZWFkIHNvbWUgcmVmZXJlbmNlcyB0aHJvdWdoIHRoZSByZW1vdGUgbGF5ZXIg
dHJlZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBIGZpcnN0IHBhc3MgYXQgcmVmZXJlbmNlcyBmb3IgbmV2ZXItbnVsbCB0aGluZ3MgKGZpcnN0
IHBhc3MgYmVjYXVzZSBJIGRpZG4ndCB0b3VjaCB0aGUgY29sbGVjdGlvbnMpLgorICAgICAgICBU
aGluZ3MgdGhhdCBhcmVuJ3Qgc3RyYWlnaHRmb3J3YXJkIHJlZmVyZW5jZS10aHJlYWRpbmc6CisK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
OgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9u
Lm1tOgorICAgICAgICBSZW1vdmUgdGhlIHVuaW1wbGVtZW50ZWQvbm9uZXhpc3RhbnQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpjcmVhdGUuCisgICAgICAgIE1ha2UgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uIGNvbnN0cnVjdG9yIG5vdCB0YWtlIGEgY29udGV4
dCwgYmVjYXVzZSBtX2NvbnRleHQgaXMgbmV2ZXIgdXNlZC4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbToKKyAgICAgICAgRmFj
dG9yIG91dCBncmFiYmluZyB0aGUgUGxhdGZvcm1MYXllcklEIGluIGEgZmV3IHBsYWNlcy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICBVc2UgV2ViUGFnZTo6
bWFpbkZyYW1lVmlldygpIGluc3RlYWQgb2YgV2ViUGFnZTo6Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkudmlldygpLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOm9tKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICBSZWZlcmVuY2VzLgorICAgICAgICAKIDIwMTQt
MDYtMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEZpeGluZyB0aGUgR1RLKyBidWlsZCBhZnRlciByMTcwMjUzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5k
ZXggODFmNmYzOS4uYTMxNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC02Myw3ICs2Myw3IEBAIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZShQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUqIGxheWVyKQogICAgIGlmICghbV9sYXllcikKICAgICAgICAgcmV0dXJuOwogICAgIGlm
IChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQot
ICAgICAgICBjb250ZXh0LT5iYWNraW5nU3RvcmVXYXNDcmVhdGVkKHRoaXMpOworICAgICAgICBj
b250ZXh0LT5iYWNraW5nU3RvcmVXYXNDcmVhdGVkKCp0aGlzKTsKIH0KIAogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6On5SZW1vdGVMYXllckJhY2tpbmdTdG9yZSgpCkBAIC03Myw3ICs3Myw3IEBA
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp+UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQogICAg
IGlmICghbV9sYXllcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChSZW1vdGVMYXllclRyZWVD
b250ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQotICAgICAgICBjb250ZXh0LT5i
YWNraW5nU3RvcmVXaWxsQmVEZXN0cm95ZWQodGhpcyk7CisgICAgICAgIGNvbnRleHQtPmJhY2tp
bmdTdG9yZVdpbGxCZURlc3Ryb3llZCgqdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShGbG9hdFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUs
IGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nLCBib29sIGlzT3BhcXVlKQpAQCAtMjA0LDcgKzIwNCw3
IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIG1fbGFzdERp
c3BsYXlUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKICAgICBpZiAo
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKLSAg
ICAgICAgY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKHRoaXMpOworICAgICAg
ICBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCiAgICAgLy8g
TWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhh
dCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAg
ICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLmgKaW5kZXggODFkMmIxMC4uZDIyM2NiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oCkBAIC00MCwxNCArNDAsMTMgQEAgY2xhc3MgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24pOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVD
b2xsZWN0aW9uPiBjcmVhdGUoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCopOwotICAgIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0Kik7CisgICAg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7CiAKLSAgICB2b2lkIGJhY2tpbmdT
dG9yZVdhc0NyZWF0ZWQoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqKTsKLSAgICB2b2lkIGJhY2tp
bmdTdG9yZVdpbGxCZURlc3Ryb3llZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSopOworICAgIHZv
aWQgYmFja2luZ1N0b3JlV2FzQ3JlYXRlZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOworICAg
IHZvaWQgYmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVkKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Jik7CiAKLSAgICB2b2lkIGJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZChSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZSopOwotICAgIHZvaWQgYmFja2luZ1N0b3JlQmVjYW1lVW5yZWFjaGFibGUoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUqKTsKKyAgICB2b2lkIGJhY2tpbmdTdG9yZVdpbGxCZURpc3Bs
YXllZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOworICAgIHZvaWQgYmFja2luZ1N0b3JlQmVj
YW1lVW5yZWFjaGFibGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKIAogICAgIHZvaWQgd2ls
bEZsdXNoTGF5ZXJzKCk7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uJik7CkBAIC02NSw3ICs2NCw2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNl
dDxSZW1vdGVMYXllckJhY2tpbmdTdG9yZSo+IG1fdW5wYXJlbnRlZEJhY2tpbmdTdG9yZTsKICAg
ICBIYXNoU2V0PFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKj4gbV9yZWFjaGFibGVCYWNraW5nU3Rv
cmVJbkxhdGVzdEZsdXNoOwogCi0gICAgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogbV9jb250ZXh0
OwogICAgIFdlYkNvcmU6OlRpbWVyPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbj4g
bV92b2xhdGlsaXR5VGltZXI7CiAKICAgICBib29sIG1faW5MYXllckZsdXNoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbi5tbQppbmRleCBkMWQ5NTgzLi4zZTY2NDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5tbQpAQCAtMzYsOSArMzYsOCBAQCBjb25zdCBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzIHZvbGF0aWxpdHlUaW1lckludGVydmFsID0gMjAwX21zOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCkKLSAg
ICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV92b2xhdGlsaXR5VGltZXIodGhpcywgJlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6dm9sYXRpbGl0eVRpbWVyRmlyZWQpCitS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbigpCisgICAgOiBtX3ZvbGF0aWxpdHlUaW1lcih0aGlzLCAmUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uOjp2b2xhdGlsaXR5VGltZXJGaXJlZCkKICAgICAsIG1faW5M
YXllckZsdXNoKGZhbHNlKQogewogfQpAQCAtNzIsMzIgKzcxLDMyIEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpkaWRGbHVzaExheWVycygpCiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBiYWNraW5nU3RvcmUgOiBuZXdseVVucmVhY2hhYmxlQmFja2luZ1N0b3JlKQot
ICAgICAgICBiYWNraW5nU3RvcmVCZWNhbWVVbnJlYWNoYWJsZShiYWNraW5nU3RvcmUpOworICAg
ICAgICBiYWNraW5nU3RvcmVCZWNhbWVVbnJlYWNoYWJsZSgqYmFja2luZ1N0b3JlKTsKIAogICAg
IGlmICghbmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZS5pc0VtcHR5KCkpCiAgICAgICAgIHNj
aGVkdWxlVm9sYXRpbGl0eVRpbWVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uOjpiYWNraW5nU3RvcmVXYXNDcmVhdGVkKFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bjo6YmFja2luZ1N0b3JlV2FzQ3JlYXRlZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2lu
Z1N0b3JlKQogewotICAgIG1fbGl2ZUJhY2tpbmdTdG9yZS5hZGQoYmFja2luZ1N0b3JlKTsKKyAg
ICBtX2xpdmVCYWNraW5nU3RvcmUuYWRkKCZiYWNraW5nU3RvcmUpOwogfQogCi12b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVk
KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUpCit2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVkKFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCiB7Ci0gICAgbV9saXZlQmFja2luZ1N0
b3JlLnJlbW92ZShiYWNraW5nU3RvcmUpOwotICAgIG1fdW5wYXJlbnRlZEJhY2tpbmdTdG9yZS5y
ZW1vdmUoYmFja2luZ1N0b3JlKTsKKyAgICBtX2xpdmVCYWNraW5nU3RvcmUucmVtb3ZlKCZiYWNr
aW5nU3RvcmUpOworICAgIG1fdW5wYXJlbnRlZEJhY2tpbmdTdG9yZS5yZW1vdmUoJmJhY2tpbmdT
dG9yZSk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpiYWNr
aW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdT
dG9yZSkKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpiYWNraW5nU3Rv
cmVXaWxsQmVEaXNwbGF5ZWQoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkK
IHsKICAgICBBU1NFUlQobV9pbkxheWVyRmx1c2gpOwotICAgIG1fcmVhY2hhYmxlQmFja2luZ1N0
b3JlSW5MYXRlc3RGbHVzaC5hZGQoYmFja2luZ1N0b3JlKTsKKyAgICBtX3JlYWNoYWJsZUJhY2tp
bmdTdG9yZUluTGF0ZXN0Rmx1c2guYWRkKCZiYWNraW5nU3RvcmUpOwogCi0gICAgYXV0byBiYWNr
aW5nU3RvcmVJdGVyID0gbV91bnBhcmVudGVkQmFja2luZ1N0b3JlLmZpbmQoYmFja2luZ1N0b3Jl
KTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZUl0ZXIgPSBtX3VucGFyZW50ZWRCYWNraW5nU3RvcmUu
ZmluZCgmYmFja2luZ1N0b3JlKTsKICAgICBpZiAoYmFja2luZ1N0b3JlSXRlciA9PSBtX3VucGFy
ZW50ZWRCYWNraW5nU3RvcmUuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xpdmVCYWNr
aW5nU3RvcmUuYWRkKGJhY2tpbmdTdG9yZSk7CisgICAgbV9saXZlQmFja2luZ1N0b3JlLmFkZCgm
YmFja2luZ1N0b3JlKTsKICAgICBtX3VucGFyZW50ZWRCYWNraW5nU3RvcmUucmVtb3ZlKGJhY2tp
bmdTdG9yZUl0ZXIpOwogfQogCkBAIC0xMzIsMjMgKzEzMSwyMyBAQCBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFya0JhY2tpbmdTdG9yZVZvbGF0aWxlKFJlbW90ZUxh
eWVyQmFjawogICAgIHJldHVybiBtYXJrQmFja2luZ1N0b3JlVm9sYXRpbGVJbW1lZGlhdGVseShi
YWNraW5nU3RvcmUpOwogfQogCi12b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bjo6YmFja2luZ1N0b3JlQmVjYW1lVW5yZWFjaGFibGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSkKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpi
YWNraW5nU3RvcmVCZWNhbWVVbnJlYWNoYWJsZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFj
a2luZ1N0b3JlKQogewotICAgIEFTU0VSVChiYWNraW5nU3RvcmUtPmxheWVyKCkpOworICAgIEFT
U0VSVChiYWNraW5nU3RvcmUubGF5ZXIoKSk7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZUl0ZXIg
PSBtX2xpdmVCYWNraW5nU3RvcmUuZmluZChiYWNraW5nU3RvcmUpOworICAgIGF1dG8gYmFja2lu
Z1N0b3JlSXRlciA9IG1fbGl2ZUJhY2tpbmdTdG9yZS5maW5kKCZiYWNraW5nU3RvcmUpOwogICAg
IGlmIChiYWNraW5nU3RvcmVJdGVyID09IG1fbGl2ZUJhY2tpbmdTdG9yZS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fdW5wYXJlbnRlZEJhY2tpbmdTdG9yZS5hZGQoYmFja2luZ1N0b3Jl
KTsKKyAgICBtX3VucGFyZW50ZWRCYWNraW5nU3RvcmUuYWRkKCZiYWNraW5nU3RvcmUpOwogICAg
IG1fbGl2ZUJhY2tpbmdTdG9yZS5yZW1vdmUoYmFja2luZ1N0b3JlSXRlcik7CiAKICAgICAvLyBJ
ZiBhIGxheWVyIHdpdGggYmFja2luZyBzdG9yZSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUsIG1h
cmsgaXQgYXMgaGF2aW5nIGNoYW5nZWQgYmFja2luZyBzdG9yZSwgc28gdGhhdAogICAgIC8vIG9u
IHRoZSBjb21taXQgd2hpY2ggcmV0dXJucyBpdCB0byB0aGUgdHJlZSwgd2Ugc2VyaWFsaXplIHRo
ZSBiYWNraW5nIHN0b3JlIChkZXNwaXRlIHBvc3NpYmx5IG5vdCBwYWludGluZykuCi0gICAgYmFj
a2luZ1N0b3JlLT5sYXllcigpLT5wcm9wZXJ0aWVzKCkubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKKyAgICBiYWNr
aW5nU3RvcmUubGF5ZXIoKS0+cHJvcGVydGllcygpLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKICAgICAvLyBU
aGlzIHdpbGwgbm90IHN1Y2NlZWQgaW4gbWFya2luZyBhbGwgYnVmZmVycyBhcyB2b2xhdGlsZSwg
YmVjYXVzZSB0aGUgY29tbWl0IHVucGFyZW50aW5nIHRoZSBsYXllciBoYXNuJ3QKICAgICAvLyBt
YWRlIGl0IHRvIHRoZSBVSSBwcm9jZXNzIHlldC4gVGhlIHZvbGF0aWxpdHkgdGltZXIgd2lsbCBm
aW5pc2ggbWFya2luZyB0aGUgcmVtYWluaW5nIGJ1ZmZlcnMgbGF0ZXIuCi0gICAgbWFya0JhY2tp
bmdTdG9yZVZvbGF0aWxlSW1tZWRpYXRlbHkoKmJhY2tpbmdTdG9yZSk7CisgICAgbWFya0JhY2tp
bmdTdG9yZVZvbGF0aWxlSW1tZWRpYXRlbHkoYmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnZvbGF0aWxpdHlUaW1lckZpcmVkKFdlYkNv
cmU6OlRpbWVyPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbj4mKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDI3N2IzM2MuLjQzMDcxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTE2Miw3ICsxNjIsNyBA
QCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
cm9vdExheWVySUQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllcklEOyB9CiAgICAgdm9pZCBz
ZXRSb290TGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpOwot
ICAgIHZvaWQgbGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqKTsK
KyAgICB2b2lkIGxheWVyUHJvcGVydGllc0NoYW5nZWQoUGxhdGZvcm1DQUxheWVyUmVtb3RlJik7
CiAgICAgdm9pZCBzZXRDcmVhdGVkTGF5ZXJzKFZlY3RvcjxMYXllckNyZWF0aW9uUHJvcGVydGll
cz4pOwogICAgIHZvaWQgc2V0RGVzdHJveWVkTGF5ZXJJRHMoVmVjdG9yPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4pOwogICAgIHZvaWQgc2V0TGF5ZXJJRHNXaXRoTmV3
bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZShWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCA2MGE2NDQwLi5lOTZlYWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KQEAgLTU1OSw5ICs1NTksOSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpzZXRSb290TGF5ZXJJRChHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
cgogICAgIG1fcm9vdExheWVySUQgPSByb290TGF5ZXJJRDsKIH0KIAotdm9pZCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6bGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUqIHJlbW90ZUxheWVyKQordm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6bGF5
ZXJQcm9wZXJ0aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIHJlbW90ZUxheWVyKQog
ewotICAgIG1fY2hhbmdlZExheWVycy5hcHBlbmQocmVtb3RlTGF5ZXIpOworICAgIG1fY2hhbmdl
ZExheWVycy5hcHBlbmQoJnJlbW90ZUxheWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6c2V0Q3JlYXRlZExheWVycyhWZWN0b3I8TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXM+IGNyZWF0ZWRMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCA4OThhZjcxLi44YzhlM2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFn
ZSogd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3N0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdl
JiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIHN3aXRjaCAocGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUpIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBE
cmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotRHJhd2luZ0FyZWE6OkRyYXdpbmdBcmVhKERyYXdpbmdBcmVh
VHlwZSB0eXBlLCBXZWJQYWdlKiB3ZWJQYWdlKQorRHJhd2luZ0FyZWE6OkRyYXdpbmdBcmVhKERy
YXdpbmdBcmVhVHlwZSB0eXBlLCBXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV90eXBlKHR5cGUp
CiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggOGQwZGQxMy4uY2VmMTJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTYw
LDcgKzYwLDcgQEAgY2xhc3MgRHJhd2luZ0FyZWEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyYXdpbmdBcmVhKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RHJh
d2luZ0FyZWE+IGNyZWF0ZShXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IGNyZWF0ZShXZWJQ
YWdlJiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfkRy
YXdpbmdBcmVhKCk7CiAgICAgCiAgICAgRHJhd2luZ0FyZWFUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KQEAgLTExOCwxMCArMTE4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogcHJvdGVj
dGVkOgotICAgIERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSwgV2ViUGFnZSopOworICAgIERy
YXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSwgV2ViUGFnZSYpOwogCiAgICAgRHJhd2luZ0FyZWFU
eXBlIG1fdHlwZTsKLSAgICBXZWJQYWdlKiBtX3dlYlBhZ2U7CisgICAgV2ViUGFnZSYgbV93ZWJQ
YWdlOwogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTA3MzRmMi4uNjYwYWQ0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzU0LDcgKzM1NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogCiAgICAgbV9wYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ2xpZW50cyk7CiAKLSAgICBtX2RyYXdpbmdBcmVh
ID0gRHJhd2luZ0FyZWE6OmNyZWF0ZSh0aGlzLCBwYXJhbWV0ZXJzKTsKKyAgICBtX2RyYXdpbmdB
cmVhID0gRHJhd2luZ0FyZWE6OmNyZWF0ZSgqdGhpcywgcGFyYW1ldGVycyk7CiAgICAgbV9kcmF3
aW5nQXJlYS0+c2V0UGFpbnRpbmdFbmFibGVkKGZhbHNlKTsKICAgICBtX3BhZ2VPdmVybGF5Q29u
dHJvbGxlci5pbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCmluZGV4IDcz
NGFmYTk2Li5jODc4NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDsKIAogY2xhc3MgR3JhcGhpY3NMYXll
ckNBUmVtb3RlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSB7CiBwdWJs
aWM6Ci0gICAgR3JhcGhpY3NMYXllckNBUmVtb3RlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGll
bnQmIGNsaWVudCwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCkKKyAgICBHcmFwaGlj
c0xheWVyQ0FSZW1vdGUoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50LCBSZW1v
dGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogICAgICAgICA6IEdyYXBoaWNzTGF5ZXJDQShj
bGllbnQpCiAgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgewpAQCAtNTcsNyArNTcs
NyBAQCBwcml2YXRlOgogICAgIC8vIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjYW4ndCBjdXJyZW50
bHkgcHJveHkgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZSBjb250ZW50cywgc28gb3B0IG91dCBv
ZiB0aGlzIG9wdGltaXphdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21w
b3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgCi0gICAgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogbV9jb250ZXh0OworICAgIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIG1fY29udGV4dDsKIH07CiAKIEdSQVBISUNTTEFZRVJfVFlQ
RV9DQVNUUyhHcmFwaGljc0xheWVyQ0FSZW1vdGUsIGlzR3JhcGhpY3NMYXllckNBUmVtb3RlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IGM4YTQ0YTEuLmM0MDg0YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoTGF5ZXJUeXBl
IGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCogY29udGV4dCkKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyOwogCkBAIC01NCw1MyArNTQs
NTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6Y3JlYXRlKExheWVyVHlwZSBsYXllclQKICAgICBlbHNlCiAgICAgICAgIGxheWVyID0g
YWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBjb250
ZXh0KSk7CiAKLSAgICBjb250ZXh0LT5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCksIGxheWVy
VHlwZSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQoKmxheWVyLCBsYXllclR5cGUpOwog
CiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIg
KnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVy
VHJlZUNvbnRleHQqIGNvbnRleHQpCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oc3RhdGljX2Nhc3Q8UGxhdGZv
cm1MYXllcio+KHBsYXRmb3JtTGF5ZXIpLCBvd25lciwgY29udGV4dCkpOwogCi0gICAgY29udGV4
dC0+bGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBMYXllclR5cGVDdXN0b20pOworICAgIGNv
bnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXllciwgTGF5ZXJUeXBlQ3VzdG9tKTsKIAogICAgIHJl
dHVybiBsYXllci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVt
b3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUmIG90aGVyLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1v
dGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0KQorUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXll
clJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FM
YXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlKG90
aGVyLCBvd25lciwgY29udGV4dCkpOwogCi0gICAgY29udGV4dC0+bGF5ZXJXYXNDcmVhdGVkKGxh
eWVyLmdldCgpLCBvdGhlci5sYXllclR5cGUoKSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0
ZWQoKmxheWVyLCBvdGhlci5sYXllclR5cGUoKSk7CiAKICAgICByZXR1cm4gbGF5ZXIucmVsZWFz
ZSgpOwogfQogCi1QbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShM
YXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVM
YXllclRyZWVDb250ZXh0KiBjb250ZXh0KQorUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3Jt
Q0FMYXllcihsYXllclR5cGUsIG93bmVyKQogICAgICwgbV9zdXBlcmxheWVyKG51bGxwdHIpCiAg
ICAgLCBtX21hc2tMYXllcihudWxscHRyKQogICAgICwgbV9hY2NlbGVyYXRlc0RyYXdpbmcoZmFs
c2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkK
IHsKICAgICBpZiAob3duZXIpCiAgICAgICAgIG1fcHJvcGVydGllcy5jb250ZW50c1NjYWxlID0g
b3duZXItPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLVBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXll
clJlbW90ZSYgb3RoZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVy
VHJlZUNvbnRleHQqIGNvbnRleHQpCitQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogICAg
IDogUGxhdGZvcm1DQUxheWVyKG90aGVyLmxheWVyVHlwZSgpLCBvd25lcikKICAgICAsIG1fcHJv
cGVydGllcyhvdGhlci5tX3Byb3BlcnRpZXMpCiAgICAgLCBtX3N1cGVybGF5ZXIobnVsbHB0cikK
ICAgICAsIG1fbWFza0xheWVyKG51bGxwdHIpCiAgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2luZyhv
dGhlci5hY2NlbGVyYXRlc0RyYXdpbmcoKSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAg
ICwgbV9jb250ZXh0KCZjb250ZXh0KQogewogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGNs
aWVudCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjbG9uZSA9
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKCp0aGlzLCBjbGllbnQsIG1fY29udGV4dCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OmNyZWF0ZSgqdGhpcywgY2xpZW50LCAqbV9jb250ZXh0KTsKIAogICAgIGNsb25l
LT5tX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKHN0YXRpY19jYXN0PFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNoYW5nZT4obV9wcm9wZXJ0aWVzLmV2ZXJDaGFuZ2Vk
UHJvcGVydGllcyAmIH5SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hh
bmdlZCkpOwogCkBAIC0xMTQsNyArMTE0LDcgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp+UGxh
dGZvcm1DQUxheWVyUmVtb3RlKCkKICAgICAgICAgdG9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5
ZXIuZ2V0KCkpLT5tX3N1cGVybGF5ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKG1fY29udGV4dCkK
LSAgICAgICAgbV9jb250ZXh0LT5sYXllcldpbGxCZURlc3Ryb3llZCh0aGlzKTsKKyAgICAgICAg
bV9jb250ZXh0LT5sYXllcldpbGxCZURlc3Ryb3llZCgqdGhpcyk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQmIGNvbnRleHQsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
bikKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJz
aXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdHJhbnNhY3Rpb24ubGF5ZXJQcm9wZXJ0
aWVzQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ubGF5ZXJQcm9wZXJ0aWVzQ2hh
bmdlZCgqdGhpcyk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxk
cmVuLnNpemUoKTsgKytpKSB7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OmNvcHlDb250ZW50c0Zyb21MYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQog
ICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuY2xvbmVkTGF5ZXJJRCA9PSBsYXllci0+bGF5ZXJJRCgp
KTsKICAgICAKICAgICBpZiAoIW1fcHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcykKLSAgICAg
ICAgbV9jb250ZXh0LT5sYXllclByb3BlcnR5Q2hhbmdlZFdoaWxlQnVpbGRpbmdUcmFuc2FjdGlv
bih0aGlzKTsKKyAgICAgICAgbV9jb250ZXh0LT5sYXllclByb3BlcnR5Q2hhbmdlZFdoaWxlQnVp
bGRpbmdUcmFuc2FjdGlvbigqdGhpcyk7CiAKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRp
ZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDbG9uZWRDb250ZW50c0NoYW5n
ZWQpOwogfQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjph
ZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltCiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6QW5pbWF0aW9uc0NoYW5nZWQpOwogCiAgICAgaWYgKG1fY29udGV4dCkKLSAgICAgICAg
bV9jb250ZXh0LT53aWxsU3RhcnRBbmltYXRpb25PbkxheWVyKHRoaXMpOworICAgICAgICBtX2Nv
bnRleHQtPndpbGxTdGFydEFuaW1hdGlvbk9uTGF5ZXIoKnRoaXMpOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
KQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVD
dXN0b21CZWhhdmlvcihHcmFwaGljc0xheWVyOjpDdXN0b21CZWhhdmlvciBjCiAKIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUNvbXBhdGli
bGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogY2xpZW50KSBjb25zdAogewotICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCBjbGllbnQsICptX2NvbnRl
eHQpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA3NGFlM2MzLi5hZWRmYWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmgKQEAgLTQxLDkgKzQxLDkgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dDsKIAogY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyUmVtb3RlPiBjcmVhdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUs
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQq
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShQ
bGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmLCBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Kik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjcmVhdGUoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVD
b250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKTsKIApAQCAt
MTY4LDggKzE2OCw4IEBAIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQqIGNvbnRleHQpOwotICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXll
clRyZWVDb250ZXh0Kik7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KTsKKyAgICBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiwgV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpc1BsYXRmb3JtQ0FMYXllclJlbW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4
IDQwMzZhMzcuLmQ3MDYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
aApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QqIGRpcnR5UmVjdCA9IDApIG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUxheWVy
KiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCopOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUxheWVy
KiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
bGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0
Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCA2
Nzc0MTIyLi44MGIzZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQpAQCAtNDEsMTAgKzQxLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50
ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKLVBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtTGF5ZXIqIGN1c3RvbUxheWVyLCBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250
ZXh0KQorUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20oUGxhdGZvcm1MYXllciogY3VzdG9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUoTGF5ZXJUeXBlQ3VzdG9tLCBvd25lciwgY29udGV4dCkKIHsKLSAgICBzd2l0
Y2ggKGNvbnRleHQtPmxheWVySG9zdGluZ01vZGUoKSkgeworICAgIHN3aXRjaCAoY29udGV4dC5s
YXllckhvc3RpbmdNb2RlKCkpIHsKICAgICBjYXNlIExheWVySG9zdGluZ01vZGU6OkluUHJvY2Vz
czoKICAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydChXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1JlbmRlclNlcnZl
clBvcnQoKSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IGZlNjI1ZTEuLjg4ZWIxZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRp
bGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0KQorUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcoTGF5ZXJU
eXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5
cGUsIG93bmVyLCBjb250ZXh0KQogewogICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBUaWxlQ29udHJv
bGxlcjo6Y3JlYXRlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nLmgKaW5kZXggZGE5ZGE0Mi4uZmEzZTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcoKTsKIAogcHJp
dmF0ZToKLSAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQqKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVUaWxlZEJhY2tpbmcoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBv
dmVycmlkZSB7IHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVDb250ZXh0LmgKaW5kZXggZDFmNDM0MS4uMmY4ZmI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVDb250ZXh0LmgKQEAgLTQzLDI4ICs0MywyOCBAQCBjbGFzcyBXZWJQYWdlOwogLy8gRklYTUU6
IFRoaXMgY2xhc3MgZG9lc24ndCBkbyBtdWNoIG5vdy4gUm9sbCBpbnRvIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhPwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCA6IHB1YmxpYyBXZWJD
b3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dChXZWJQYWdlKik7CisgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dChXZWJQYWdlJik7CiAgICAgflJlbW90ZUxheWVyVHJlZUNvbnRleHQoKTsKIAotICAg
IHZvaWQgbGF5ZXJXYXNDcmVhdGVkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSosIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLSAgICB2b2lkIGxheWVyV2lsbEJlRGVzdHJveWVk
KFBsYXRmb3JtQ0FMYXllclJlbW90ZSopOworICAgIHZvaWQgbGF5ZXJXYXNDcmVhdGVkKFBsYXRm
b3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsK
KyAgICB2b2lkIGxheWVyV2lsbEJlRGVzdHJveWVkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSYpOwog
Ci0gICAgdm9pZCBiYWNraW5nU3RvcmVXYXNDcmVhdGVkKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Kik7Ci0gICAgdm9pZCBiYWNraW5nU3RvcmVXaWxsQmVEZXN0cm95ZWQoUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUqKTsKLSAgICB2b2lkIGJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZChSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSopOworICAgIHZvaWQgYmFja2luZ1N0b3JlV2FzQ3JlYXRlZChSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSYpOworICAgIHZvaWQgYmFja2luZ1N0b3JlV2lsbEJlRGVzdHJv
eWVkKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJik7CisgICAgdm9pZCBiYWNraW5nU3RvcmVXaWxs
QmVEaXNwbGF5ZWQoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKIAogICAgIFdlYkNvcmU6Okxh
eWVyUG9vbCYgbGF5ZXJQb29sKCkgeyByZXR1cm4gbV9sYXllclBvb2w7IH0KIAotICAgIExheWVy
SG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZS0+
bGF5ZXJIb3N0aW5nTW9kZSgpOyB9CisgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlLmxheWVySG9zdGluZ01vZGUoKTsgfQogCiAg
ICAgdm9pZCBidWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiwgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyJiByb290TGF5ZXIpOwogCi0gICAgdm9pZCBsYXllclByb3Bl
cnR5Q2hhbmdlZFdoaWxlQnVpbGRpbmdUcmFuc2FjdGlvbihQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUq
KTsKKyAgICB2b2lkIGxheWVyUHJvcGVydHlDaGFuZ2VkV2hpbGVCdWlsZGluZ1RyYW5zYWN0aW9u
KFBsYXRmb3JtQ0FMYXllclJlbW90ZSYpOwogCiAgICAgLy8gRnJvbSB0aGUgVUkgcHJvY2Vzcwog
ICAgIHZvaWQgYW5pbWF0aW9uRGlkU3RhcnQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklELCBjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHN0YXJ0VGltZSk7CiAKLSAgICB2
b2lkIHdpbGxTdGFydEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUxheWVyUmVtb3RlKik7Cisg
ICAgdm9pZCB3aWxsU3RhcnRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FMYXllclJlbW90ZSYp
OwogCiAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uJiBiYWNraW5nU3RvcmVD
b2xsZWN0aW9uKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmVDb2xsZWN0aW9uOyB9CiAKQEAgLTcy
LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9y
eQogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IGNy
ZWF0ZUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCYpIG92ZXJyaWRl
OwogCi0gICAgV2ViUGFnZSogbV93ZWJQYWdlOworICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIAog
ICAgIFZlY3RvcjxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3Bl
cnRpZXM+IG1fY3JlYXRlZExheWVyczsKICAgICBWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPiBtX2Rlc3Ryb3llZExheWVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dC5tbQppbmRleCA5M2E3NzYyLi42MGNmY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVD
b250ZXh0Lm1tCkBAIC00MSw5ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6UmVtb3RlTGF5ZXJU
cmVlQ29udGV4dChXZWJQYWdlKiB3ZWJQYWdlKQorUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6UmVt
b3RlTGF5ZXJUcmVlQ29udGV4dChXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdl
YlBhZ2UpCi0gICAgLCBtX2JhY2tpbmdTdG9yZUNvbGxlY3Rpb24odGhpcykKICAgICAsIG1fY3Vy
cmVudFRyYW5zYWN0aW9uKG51bGxwdHIpCiB7CiB9CkBAIC01NCw0NyArNTMsNTEgQEAgUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dDo6flJlbW90ZUxheWVyVHJlZUNvbnRleHQoKQogICAgICAgICBsYXll
ci0+Y2xlYXJDb250ZXh0KCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6bGF5
ZXJXYXNDcmVhdGVkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbGF5ZXIsIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlIHR5cGUpCit2b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVyV2Fz
Q3JlYXRlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIGxheWVyLCBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSB0eXBlKQogeworICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXll
cklEID0gbGF5ZXIubGF5ZXJJRCgpOworCiAgICAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIGNyZWF0aW9uUHJvcGVydGllczsKLSAgICBjcmVhdGlv
blByb3BlcnRpZXMubGF5ZXJJRCA9IGxheWVyLT5sYXllcklEKCk7CisgICAgY3JlYXRpb25Qcm9w
ZXJ0aWVzLmxheWVySUQgPSBsYXllcklEOwogICAgIGNyZWF0aW9uUHJvcGVydGllcy50eXBlID0g
dHlwZTsKIAogICAgIGlmICh0eXBlID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9t
KQotICAgICAgICBjcmVhdGlvblByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRCA9IGxheWVyLT5o
b3N0aW5nQ29udGV4dElEKCk7CisgICAgICAgIGNyZWF0aW9uUHJvcGVydGllcy5ob3N0aW5nQ29u
dGV4dElEID0gbGF5ZXIuaG9zdGluZ0NvbnRleHRJRCgpOwogCiAgICAgbV9jcmVhdGVkTGF5ZXJz
LmFwcGVuZChjcmVhdGlvblByb3BlcnRpZXMpOwotICAgIG1fbGl2ZUxheWVycy5hZGQobGF5ZXIt
PmxheWVySUQoKSwgbGF5ZXIpOworICAgIG1fbGl2ZUxheWVycy5hZGQobGF5ZXJJRCwgJmxheWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpsYXllcldpbGxCZURlc3Ryb3ll
ZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIGxheWVyKQordm9pZCBSZW1vdGVMYXllclRyZWVDb250
ZXh0OjpsYXllcldpbGxCZURlc3Ryb3llZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIGxheWVyKQog
ewotICAgIG1fbGl2ZUxheWVycy5yZW1vdmUobGF5ZXItPmxheWVySUQoKSk7CisgICAgR3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQgPSBsYXllci5sYXllcklEKCk7CisKKyAg
ICBtX2xpdmVMYXllcnMucmVtb3ZlKGxheWVySUQpOwogCi0gICAgQVNTRVJUKCFtX2Rlc3Ryb3ll
ZExheWVycy5jb250YWlucyhsYXllci0+bGF5ZXJJRCgpKSk7Ci0gICAgbV9kZXN0cm95ZWRMYXll
cnMuYXBwZW5kKGxheWVyLT5sYXllcklEKCkpOworICAgIEFTU0VSVCghbV9kZXN0cm95ZWRMYXll
cnMuY29udGFpbnMobGF5ZXJJRCkpOworICAgIG1fZGVzdHJveWVkTGF5ZXJzLmFwcGVuZChsYXll
cklEKTsKICAgICAKLSAgICBtX2xheWVyc0F3YWl0aW5nQW5pbWF0aW9uU3RhcnQucmVtb3ZlKGxh
eWVyLT5sYXllcklEKCkpOworICAgIG1fbGF5ZXJzQXdhaXRpbmdBbmltYXRpb25TdGFydC5yZW1v
dmUobGF5ZXJJRCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YmFja2luZ1N0
b3JlV2FzQ3JlYXRlZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlKQordm9p
ZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpiYWNraW5nU3RvcmVXYXNDcmVhdGVkKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCiB7CiAgICAgbV9iYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLmJhY2tpbmdTdG9yZVdhc0NyZWF0ZWQoYmFja2luZ1N0b3JlKTsKIH0KIAotdm9pZCBS
ZW1vdGVMYXllclRyZWVDb250ZXh0OjpiYWNraW5nU3RvcmVXaWxsQmVEZXN0cm95ZWQoUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dDo6YmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVkKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
JiBiYWNraW5nU3RvcmUpCiB7CiAgICAgbV9iYWNraW5nU3RvcmVDb2xsZWN0aW9uLmJhY2tpbmdT
dG9yZVdpbGxCZURlc3Ryb3llZChiYWNraW5nU3RvcmUpOwogfQogCi12b2lkIFJlbW90ZUxheWVy
VHJlZUNvbnRleHQ6OmJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZChSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlKQordm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpiYWNr
aW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdT
dG9yZSkKIHsKICAgICBtX2JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uYmFja2luZ1N0b3JlV2lsbEJl
RGlzcGxheWVkKGJhY2tpbmdTdG9yZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xh
eWVyPiBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNz
TGF5ZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0xheWVyQ0FSZW1vdGU+KGNsaWVudCwgdGhpcyk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NMYXllckNBUmVtb3RlPihjbGllbnQsICp0aGlzKTsKIH0KIAogdm9pZCBS
ZW1vdGVMYXllclRyZWVDb250ZXh0OjpidWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgUGxhdGZvcm1DQUxheWVyJiByb290TGF5ZXIpCkBAIC0x
MTAsMTUgKzExMywxNSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmJ1aWxkVHJhbnNh
Y3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW5zYQogICAgIHRyYW5zYWN0aW9u
LnNldERlc3Ryb3llZExheWVySURzKHN0ZDo6bW92ZShtX2Rlc3Ryb3llZExheWVycykpOwogfQog
Ci12b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVyUHJvcGVydHlDaGFuZ2VkV2hpbGVC
dWlsZGluZ1RyYW5zYWN0aW9uKFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbGF5ZXIpCit2b2lkIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVyUHJvcGVydHlDaGFuZ2VkV2hpbGVCdWlsZGluZ1Ry
YW5zYWN0aW9uKFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgbGF5ZXIpCiB7CiAgICAgaWYgKG1fY3Vy
cmVudFRyYW5zYWN0aW9uKQogICAgICAgICBtX2N1cnJlbnRUcmFuc2FjdGlvbi0+bGF5ZXJQcm9w
ZXJ0aWVzQ2hhbmdlZChsYXllcik7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6
d2lsbFN0YXJ0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIGxheWVyKQor
dm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0Ojp3aWxsU3RhcnRBbmltYXRpb25PbkxheWVyKFBs
YXRmb3JtQ0FMYXllclJlbW90ZSYgbGF5ZXIpCiB7Ci0gICAgbV9sYXllcnNBd2FpdGluZ0FuaW1h
dGlvblN0YXJ0LmFkZChsYXllci0+bGF5ZXJJRCgpLCBsYXllcik7CisgICAgbV9sYXllcnNBd2Fp
dGluZ0FuaW1hdGlvblN0YXJ0LmFkZChsYXllci5sYXllcklEKCksICZsYXllcik7CiB9CiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YW5pbWF0aW9uRGlkU3RhcnQoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQsIGNvbnN0IFN0cmluZyYga2V5LCBk
b3VibGUgc3RhcnRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4
IDIwNjk3OTcuLmFiN2QxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgK
QEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25p
dG9yOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0Fy
ZWEsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBmcmllbmQgY2xh
c3MgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOwogcHVibGljOgotICAgIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CisgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KaW5kZXggNTc2MDdjYi4uNzYxNzE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmKQorUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3Rl
TGF5ZXJUcmVlLCB3ZWJQYWdlKQogICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jv
b3RMYXllcihHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRo
aXMpKQpAQCAtNjQsOSArNjQsOSBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgVwogICAgICwgbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3JzVG9Ob3RpZnkobnVsbHB0cikKICAgICAsIG1fY3VycmVudFRy
YW5zYWN0aW9uSUQoMCkKIHsKLSAgICB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworICAgIHdlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0
dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXREZWxlZ2F0ZXNQYWdlU2Nh
bGluZyh0cnVlKTsKKyAgICB3ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0RGVsZWdh
dGVzUGFnZVNjYWxpbmcodHJ1ZSk7CiAjZW5kaWYKIAogICAgIG1fY29tbWl0UXVldWUgPSBkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5Db21taXRRdWV1ZSIsIG51bGxwdHIpOwpAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllCiAgICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIgKj4g
Y2hpbGRyZW47CiAgICAgaWYgKHJvb3RMYXllcikgewogICAgICAgICBjaGlsZHJlbi5hcHBlbmQo
cm9vdExheWVyKTsKLSAgICAgICAgY2hpbGRyZW4uYXBwZW5kKG1fd2ViUGFnZS0+cGFnZU92ZXJs
YXlDb250cm9sbGVyKCkudmlld092ZXJsYXlSb290TGF5ZXIoKSk7CisgICAgICAgIGNoaWxkcmVu
LmFwcGVuZChtX3dlYlBhZ2UucGFnZU92ZXJsYXlDb250cm9sbGVyKCkudmlld092ZXJsYXlSb290
TGF5ZXIoKSk7CiAgICAgfQogICAgIG1fcm9vdExheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7
CiB9CkBAIC0xMjMsMTEgKzEyMywxMSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZQogdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYg
dmlld1NpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24pCiB7CiAgICAgbV92aWV3U2l6
ZSA9IHZpZXdTaXplOwotICAgIG1fd2ViUGFnZS0+c2V0U2l6ZSh2aWV3U2l6ZSk7CisgICAgbV93
ZWJQYWdlLnNldFNpemUodmlld1NpemUpOwogCiAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKTsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94
eTo6RGlkVXBkYXRlR2VvbWV0cnkoKSk7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5KCkpOwogfQogCiBib29sIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29u
c3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNv
bnN0IEZyYW1lVmkKIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpCiB7Ci0gICAgU2V0dGluZ3MmIHNl
dHRpbmdzID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpOworICAgIFNldHRpbmdz
JiBzZXR0aW5ncyA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpOwogCiAgICAgLy8g
Rml4ZWQgcG9zaXRpb24gZWxlbWVudHMgbmVlZCB0byBiZSBjb21wb3NpdGVkIGFuZCBjcmVhdGUg
c3RhY2tpbmcgY29udGV4dHMKICAgICAvLyBpbiBvcmRlciB0byBiZSBzY3JvbGxlZCBieSB0aGUg
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7Ci0gICAg
bV93ZWJQYWdlLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
bV93ZWJQYWdlLnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKIH0KICNl
bmRpZgogCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6Zm9yY2VSZXBhaW50KCkKICAgICBpZiAobV9pc0ZsdXNoaW5nU3VzcGVuZGVkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3dlYlBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV93ZWJQYWdlLmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAg
aWYgKCFmcmFtZVZpZXcgfHwgIWZyYW1lVmlldy0+dGlsZWRCYWNraW5nKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0KQogI2lm
IFBMQVRGT1JNKElPUykKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldEV4cG9z
ZWRDb250ZW50UmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVjdCkKIHsKLSAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkudmlldygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLm1haW5GcmFt
ZVZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDgs
NyArMjA4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0RXhwb3NlZENv
bnRlbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZEMKIAogdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpCiB7Ci0gICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXco
KTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7
CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI0LDEzICsyMjQs
MTMgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBv
c2VkUmVjdCgpCiAgICAgZnJhbWVWaWV3LT5zZXRFeHBvc2VkUmVjdChtX3Njcm9sbGVkRXhwb3Nl
ZFJlY3QpOwogICAgIGZyYW1lVmlldy0+YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKIAot
ICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRXhwb3NlZFJl
Y3QoKTsKKyAgICBtX3dlYlBhZ2UucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRXhw
b3NlZFJlY3QoKTsKIH0KIAogVGlsZWRCYWNraW5nKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6bWFpbkZyYW1lVGlsZWRCYWNraW5nKCkgY29uc3QKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIHJl
dHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPnRpbGVkQmFja2luZygpIDogMDsKKyAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CisgICAgcmV0dXJu
IGZyYW1lVmlldyA/IGZyYW1lVmlldy0+dGlsZWRCYWNraW5nKCkgOiBudWxscHRyOwogfQogCiB2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJG
bHVzaCgpCkBAIC0yNjYsMTIgKzI2NiwxMiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpmbHVzaExheWVycygpCiAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9u
JiBiYWNraW5nU3RvcmVDb2xsZWN0aW9uID0gbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5iYWNr
aW5nU3RvcmVDb2xsZWN0aW9uKCk7CiAgICAgYmFja2luZ1N0b3JlQ29sbGVjdGlvbi53aWxsRmx1
c2hMYXllcnMoKTsKIAotICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICBtX3dl
YlBhZ2UubGF5b3V0SWZOZWVkZWQoKTsKIAogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdChGbG9h
dFBvaW50KCksIG1fdmlld1NpemUpOwogICAgIHZpc2libGVSZWN0LmludGVyc2VjdChtX3Njcm9s
bGVkRXhwb3NlZFJlY3QpOwotICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCku
Zmx1c2hQYWdlT3ZlcmxheUxheWVycyh2aXNpYmxlUmVjdCk7Ci0gICAgbV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGlu
Z1N1YmZyYW1lcygpOworICAgIG1fd2ViUGFnZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5mbHVz
aFBhZ2VPdmVybGF5TGF5ZXJzKHZpc2libGVSZWN0KTsKKyAgICBtX3dlYlBhZ2UubWFpbkZyYW1l
VmlldygpLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKICAgICBt
X3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogCiAg
ICAgLy8gRklYTUU6IE1pbmltaXplIHRoZXNlIHRyYW5zYWN0aW9ucyBpZiBub3RoaW5nIGNoYW5n
ZWQuCkBAIC0yNzksMjAgKzI3OSwyMCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpmbHVzaExheWVycygpCiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbklEKHRh
a2VOZXh0VHJhbnNhY3Rpb25JRCgpKTsKICAgICBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQtPmJ1
aWxkVHJhbnNhY3Rpb24obGF5ZXJUcmFuc2FjdGlvbiwgKnRvR3JhcGhpY3NMYXllckNBUmVtb3Rl
KG1fcm9vdExheWVyLmdldCgpKS0+cGxhdGZvcm1DQUxheWVyKCkpOwogICAgIGJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24ud2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uKTsKLSAgICBt
X3dlYlBhZ2UtPndpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbik7CisgICAgbV93
ZWJQYWdlLndpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbik7CiAKICAgICBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uIHNjcm9sbGluZ1RyYW5zYWN0aW9uOwog
I2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgaWYgKG1fd2ViUGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkKLSAgICAgICAgdG9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihtX3dl
YlBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpLT5idWlsZFRyYW5zYWN0aW9uKHNjcm9sbGlu
Z1RyYW5zYWN0aW9uKTsKKyAgICBpZiAobV93ZWJQYWdlLnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
CisgICAgICAgIHRvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IobV93ZWJQYWdlLnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpLT5idWlsZFRyYW5zYWN0aW9uKHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsK
ICNlbmRpZgogCiAgICAgbV93YWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCA9IHRydWU7CiAKLSAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkp
KTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9u
SUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5z
YWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6
TWVzc2FnZUVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1fd2ViUGFnZS0+
cGFnZUlEKCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBD
OjpNZXNzYWdlRW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV93ZWJQYWdl
LnBhZ2VJRCgpKTsKICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5h
Z2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpkaWRVcGRhdGUoKQogdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2Vk
KGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSkKIHsKICAgICBtX3Jvb3RMYXllci0+c2V0U2l6
ZShjb250ZW50c1NpemUpOwotICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCku
ZGlkQ2hhbmdlRG9jdW1lbnRTaXplKCk7CisgICAgbV93ZWJQYWdlLnBhZ2VPdmVybGF5Q29udHJv
bGxlcigpLmRpZENoYW5nZURvY3VtZW50U2l6ZSgpOwogfQogCiBQYXNzUmVmUHRyPFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIs
IFZlY3RvcjxSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPj4gY29udGV4dHNUb0ZsdXNoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGQwMWRiNTkuLjhjMWNmZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTUxLDcgKzUx
LDcgQEAgY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKIAogY2xhc3MgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEsIFdlYkNvcmU6OkxheWVyRmx1c2hT
Y2hlZHVsZXJDbGllbnQgewogcHVibGljOgotICAgIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYsIGNvbnN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFsIH5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3
U3RhdGU6OkZsYWdzIGNoYW5nZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNzUyY2RkMy4uNTUzYjE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqIHdl
YlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEo
V2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlv
biwgd2ViUGFnZSkKICAgICAsIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSkKICAgICAs
IG1fbGF5ZXJGbHVzaFNjaGVkdWxlcih0aGlzKQpAQCAtNzYsMTAgKzc2LDEwIEBAIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQ
YWdlKiB3ZWJQYWdlLCBjCiAgICAgLCBtX3Njcm9sbGVkRXhwb3NlZFJlY3QoRmxvYXRSZWN0Ojpp
bmZpbml0ZVJlY3QoKSkKICAgICAsIG1fdHJhbnNpZW50Wm9vbVNjYWxlKDEpCiB7Ci0gICAgbV93
ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRy
dWUpOworICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKHRydWUpOwogCiAgICAgbV9ob3N0aW5nTGF5ZXIgPSBbQ0FMYXllciBsYXllcl07
Ci0gICAgW21faG9zdGluZ0xheWVyIHNldEZyYW1lOm1fd2ViUGFnZS0+Ym91bmRzKCldOworICAg
IFttX2hvc3RpbmdMYXllciBzZXRGcmFtZTptX3dlYlBhZ2UuYm91bmRzKCldOwogICAgIFttX2hv
c3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0
cnlGbGlwcGVkOllFU107CiAKQEAgLTg4LDcgKzg4LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2Us
IGMKIAogICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKICAgICBsYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCk7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKKyAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQpAQCAtMTI2
LDcgKzEyNiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVw
YWludCgpCiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fd2ViUGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghZnJh
bWVWaWV3IHx8ICFmcmFtZVZpZXctPnRpbGVkQmFja2luZygpKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xNDUsOCArMTQ1LDggQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9u
KGJpbmQoXnsKLSAgICAgICAgbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5mb3JjZVJlcGFpbnQo
KTsKLSAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRD
YWxsYmFjayhjYWxsYmFja0lEKSk7CisgICAgICAgIG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpLT5m
b3JjZVJlcGFpbnQoKTsKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKICAgICB9KSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xNzUsMTEgKzE3NSwxMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCiAKIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKQogewotICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3dlYlBhZ2UuY29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAg
aWYgKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdG9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkpIHsKLSAgICAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCk7CisgICAgaWYgKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gdG9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKSkgeworICAgICAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2Uuc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCgpOwogICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9s
bGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zY3JvbGxpbmdUcmVlKCksIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQpKTsKICAgICB9CiAjZW5kaWYKQEAgLTIwMCwxNSArMjAwLDE1IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmCiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6Om1h
aW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIG1f
d2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRG9jdW1lbnRTaXplKCk7
CisgICAgbV93ZWJQYWdlLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZURvY3VtZW50
U2l6ZSgpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVJ
bnRyaW5zaWNDb250ZW50U2l6ZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZS0+bWlu
aW11bUxheW91dFNpemUoKS53aWR0aCgpKQorICAgIGlmICghbV93ZWJQYWdlLm1pbmltdW1MYXlv
dXRTaXplKCkud2lkdGgoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMjIwLDE5ICsyMjAsMTkgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlSW50cmluc2ljQ29udGVudFNpemVJZk5lZWRlZCgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fbGFzdFNlbnRJbnRyaW5zaWNDb250ZW50U2l6ZSA9IGNv
bnRlbnRTaXplOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94
eTo6SW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29udGVudFNpemUpKTsKKyAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6SW50cmluc2ljQ29udGVudFNp
emVEaWRDaGFuZ2UoY29udGVudFNpemUpKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCiB7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKLSAgICBpZiAoIW1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkgeworICAgIGlmICghbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fd2ViUGFnZS0+cmVmKCk7Ci0gICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxp
bmdDb29yZGluYXRvcigpLT5jb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpOworICAgIG1fd2ViUGFn
ZS5yZWYoKTsKKyAgICBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KS0+Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKTsKIAogICAgIGlmICghbV9sYXllclRyZWVTdGF0
ZUlzRnJvemVuKQogICAgICAgICBtX2xheWVyRmx1c2hTY2hlZHVsZXIuc3VzcGVuZCgpOwpAQCAt
MjQwLDEwICsyNDAsMTAgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlz
cGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHMKICAgICAvLyBJdCBpcyBw
b3NzaWJsZSBmb3IgdGhlIGRyYXdpbmcgYXJlYSB0byBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSBi
b3VuZCBibG9jawogICAgIC8vIGlzIGludm9rZWQsIHNvIGdyYWIgYSByZWZlcmVuY2UgdG8gdGhl
IHdlYiBwYWdlIGhlcmUgc28gd2UgY2FuIGFjY2VzcyB0aGUgZHJhd2luZyBhcmVhIHRocm91Z2gg
aXQuCiAgICAgLy8gKFRoZSB3ZWIgcGFnZSBpcyBhbHJlYWR5IGtlcHQgYWxpdmUgYnkgZGlzcGF0
Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKS4KLSAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV93ZWJQYWdlOworICAgIFdlYlBhZ2UmIHdlYlBhZ2UgPSBtX3dlYlBhZ2U7CiAKICAg
ICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihiaW5kKF57Ci0gICAgICAgIERyYXdp
bmdBcmVhKiBkcmF3aW5nQXJlYSA9IHdlYlBhZ2UtPmRyYXdpbmdBcmVhKCk7CisgICAgICAgIERy
YXdpbmdBcmVhKiBkcmF3aW5nQXJlYSA9IHdlYlBhZ2UuZHJhd2luZ0FyZWEoKTsKICAgICAgICAg
aWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjUyLDcgKzI1Miw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzCiAgICAgICAgIGlmICghbV9sYXllclRyZWVTdGF0
ZUlzRnJvemVuKQogICAgICAgICAgICAgbV9sYXllckZsdXNoU2NoZWR1bGVyLnJlc3VtZSgpOwog
Ci0gICAgICAgIHdlYlBhZ2UtPmRlcmVmKCk7CisgICAgICAgIHdlYlBhZ2UuZGVyZWYoKTsKICAg
ICB9KSk7CiAjZWxzZQogICAgIGZ1bmN0aW9uKCk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIC8vIFRoaXMg
Z2V0cyBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgbm9ybWFsIGV2ZW50IGxvb3Agc28gd3JhcCBpbiBh
biBhdXRvcmVsZWFzZSBwb29sCiAgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0
b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKIAotICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVk
ZWQoKTsKKyAgICBtX3dlYlBhZ2UubGF5b3V0SWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZUludHJp
bnNpY0NvbnRlbnRTaXplSWZOZWVkZWQoKTsKIApAQCAtMjc3LDExICsyNzcsMTEgQEAgYm9vbCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogCiAgICAgRmxvYXRS
ZWN0IHZpc2libGVSZWN0ID0gW21faG9zdGluZ0xheWVyIGZyYW1lXTsKICAgICB2aXNpYmxlUmVj
dC5pbnRlcnNlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKLSAgICBtX3dlYlBhZ2UtPnBhZ2VP
dmVybGF5Q29udHJvbGxlcigpLmZsdXNoUGFnZU92ZXJsYXlMYXllcnModmlzaWJsZVJlY3QpOwor
ICAgIG1fd2ViUGFnZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5mbHVzaFBhZ2VPdmVybGF5TGF5
ZXJzKHZpc2libGVSZWN0KTsKIAotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVk
aW5nU3ViZnJhbWVzKCk7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IG1fd2ViUGFnZS5tYWluRnJh
bWVWaWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSkKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpOwog
I2VuZGlmCiAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpmbHVzaExheWVycygpCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKQogewogICAgIGlm
IChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHsKLSAgICAgICAgaWYgKG1fd2ViUGFn
ZS0+aXNWaXNpYmxlKCkpCisgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNWaXNpYmxlKCkpCiAgICAg
ICAgICAgICByZXN1bWVQYWludGluZygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdXNw
ZW5kUGFpbnRpbmcoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0
KQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4
cG9zZWRSZWN0KCkKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
bV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpCiAgICAgZnJhbWVWaWV3LT5zZXRF
eHBvc2VkUmVjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOwogICAgIGZyYW1lVmlldy0+YWRqdXN0
VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKIAotICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250
cm9sbGVyKCkuZGlkQ2hhbmdlRXhwb3NlZFJlY3QoKTsKKyAgICBtX3dlYlBhZ2UucGFnZU92ZXJs
YXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRXhwb3NlZFJlY3QoKTsKIH0KIAogdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmll
d1NpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24pCkBAIC0zNjAsMTcgKzM2MCwxNyBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25z
dCBJbnRTaXplJiB2aWV3U2l6ZSwgY29ucwogICAgIEludFNpemUgc2l6ZSA9IHZpZXdTaXplOwog
ICAgIEludFNpemUgY29udGVudFNpemUgPSBJbnRTaXplKC0xLCAtMSk7CiAKLSAgICBpZiAoIW1f
d2ViUGFnZS0+bWluaW11bUxheW91dFNpemUoKS53aWR0aCgpIHx8IG1fd2ViUGFnZS0+YXV0b1Np
emluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodCgpKQotICAgICAgICBtX3dlYlBhZ2UtPnNldFNp
emUoc2l6ZSk7CisgICAgaWYgKCFtX3dlYlBhZ2UubWluaW11bUxheW91dFNpemUoKS53aWR0aCgp
IHx8IG1fd2ViUGFnZS5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KCkpCisgICAg
ICAgIG1fd2ViUGFnZS5zZXRTaXplKHNpemUpOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CiAKLSAgICBpZiAobV93ZWJQYWdlLT5hdXRvU2l6
aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KCkgJiYgZnJhbWVWaWV3KQorICAgIGlmIChtX3dl
YlBhZ2UuYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodCgpICYmIGZyYW1lVmlldykK
ICAgICAgICAgZnJhbWVWaWV3LT5zZXRBdXRvU2l6ZUZpeGVkTWluaW11bUhlaWdodCh2aWV3U2l6
ZS5oZWlnaHQoKSk7CiAKLSAgICBtX3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7CisgICAgbV93
ZWJQYWdlLmxheW91dElmTmVlZGVkKCk7CiAKLSAgICBpZiAobV93ZWJQYWdlLT5taW5pbXVtTGF5
b3V0U2l6ZSgpLndpZHRoKCkgJiYgZnJhbWVWaWV3KSB7CisgICAgaWYgKG1fd2ViUGFnZS5taW5p
bXVtTGF5b3V0U2l6ZSgpLndpZHRoKCkgJiYgZnJhbWVWaWV3KSB7CiAgICAgICAgIGNvbnRlbnRT
aXplID0gZnJhbWVWaWV3LT5hdXRvU2l6aW5nSW50cmluc2ljQ29udGVudFNpemUoKTsKICAgICAg
ICAgc2l6ZSA9IGNvbnRlbnRTaXplOwogICAgIH0KQEAgLTM4OCwxNCArMzg4LDE0IEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNp
emUmIHZpZXdTaXplLCBjb25zCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFtDQVRy
YW5zYWN0aW9uIHN5bmNocm9uaXplXTsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6RGlkVXBkYXRlR2VvbWV0cnkoKSk7CisgICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5KCkpOwogCiAg
ICAgbV9pblVwZGF0ZUdlb21ldHJ5ID0gZmFsc2U7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKQogewotICAgIG1fd2ViUGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIG1fd2ViUGFnZS5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZh
Y3Rvcik7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9z
dGluZ01vZGUpCiAgICAgLy8gRmluYWxseSwgaW5mb3JtIHRoZSBVSVByb2Nlc3MgdGhhdCB0aGUg
Y29udGV4dCBoYXMgY2hhbmdlZC4KICAgICBMYXllclRyZWVDb250ZXh0IGxheWVyVHJlZUNvbnRl
eHQ7CiAgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX2xheWVySG9zdGluZ0NvbnRl
eHQtPmNvbnRleHRJRCgpOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6RHJhd2luZ0Fy
ZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29u
dGV4dCkpOworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpV
cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9
CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoY29u
c3QgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3BhY2UpCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgp
CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGNvbnRleHQgYW5kIHNldCBpdCB1cC4KLSAg
ICBzd2l0Y2ggKG1fd2ViUGFnZS0+bGF5ZXJIb3N0aW5nTW9kZSgpKSB7CisgICAgc3dpdGNoICht
X3dlYlBhZ2UubGF5ZXJIb3N0aW5nTW9kZSgpKSB7CiAgICAgY2FzZSBMYXllckhvc3RpbmdNb2Rl
OjpJblByb2Nlc3M6CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29tcG9zaXRpbmdS
ZW5kZXJTZXJ2ZXJQb3J0KCkpOwogICAgICAgICBicmVhazsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cihDQUxheWVyICpsYXllcikKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJh
bnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAotICAgIFttX2hvc3RpbmdMYXllciBz
ZXRTdWJsYXllcnM6bGF5ZXIgPyBAWyBsYXllciwgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRy
b2xsZXIoKS52aWV3T3ZlcmxheVJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkgXSA6IEBbIF1d
OworICAgIFttX2hvc3RpbmdMYXllciBzZXRTdWJsYXllcnM6bGF5ZXIgPyBAWyBsYXllciwgbV93
ZWJQYWdlLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnZpZXdPdmVybGF5Um9vdExheWVyKCktPnBs
YXRmb3JtTGF5ZXIoKSBdIDogQFsgXV07CiAKICAgICBib29sIGhhZFJvb3RMYXllciA9ICEhbV9y
b290TGF5ZXI7CiAgICAgbV9yb290TGF5ZXIgPSBsYXllcjsKQEAgLTQ1OSwxNSArNDU5LDE1IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKENBTGF5ZXIgKmxheWVyKQogICAgIGlmIChoYWRSb290TGF5ZXIgIT0gISFsYXllcikKICAg
ICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobGF5ZXIgPyBtX2hvc3Rp
bmdMYXllci5nZXQoKSA6IDApOwogCi0gICAgdXBkYXRlRGVidWdJbmZvTGF5ZXIobV93ZWJQYWdl
LT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpKTsK
KyAgICB1cGRhdGVEZWJ1Z0luZm9MYXllcihtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3Mo
KS5zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKSk7CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBj
b21taXRdOwogfQogCiBUaWxlZEJhY2tpbmcqIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjptYWluRnJhbWVUaWxlZEJhY2tpbmcoKSBjb25zdAogewotICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7Ci0gICAgcmV0
dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+dGlsZWRCYWNraW5nKCkgOiAwOworICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICByZXR1cm4g
ZnJhbWVWaWV3ID8gZnJhbWVWaWV3LT50aWxlZEJhY2tpbmcoKSA6IG51bGxwdHI7CiB9CiAKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xheWVyKGJv
b2wgc2hvd0xheWVyKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFt
CiAKIFBsYXRmb3JtQ0FMYXllciogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmxheWVy
Rm9yVHJhbnNpZW50Wm9vbSgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyTGF5ZXJCYWNraW5nKiByZW5k
ZXJWaWV3QmFja2luZyA9IG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCkt
PmxheWVyKCktPmJhY2tpbmcoKTsKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIHJlbmRlclZpZXdC
YWNraW5nID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5sYXllcigp
LT5iYWNraW5nKCk7CiAKICAgICBpZiAoR3JhcGhpY3NMYXllciogY29udGVudHNDb250YWlubWVu
dExheWVyID0gcmVuZGVyVmlld0JhY2tpbmctPmNvbnRlbnRzQ29udGFpbm1lbnRMYXllcigpKQog
ICAgICAgICByZXR1cm4gdG9HcmFwaGljc0xheWVyQ0EoY29udGVudHNDb250YWlubWVudExheWVy
KS0+cGxhdGZvcm1DQUxheWVyKCk7CkBAIC01MDcsNyArNTA3LDcgQEAgUGxhdGZvcm1DQUxheWVy
KiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6bGF5ZXJGb3JUcmFuc2llbnRab29tKCkg
Y29uc3QKIAogUGxhdGZvcm1DQUxheWVyKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2hhZG93TGF5ZXJGb3JUcmFuc2llbnRab29tKCkgY29uc3QKIHsKLSAgICBSZW5kZXJMYXllckNv
bXBvc2l0b3ImIHJlbmRlckxheWVyQ29tcG9zaXRvciA9IG1fd2ViUGFnZS0+bWFpbkZyYW1lVmll
dygpLT5yZW5kZXJWaWV3KCktPmNvbXBvc2l0b3IoKTsKKyAgICBSZW5kZXJMYXllckNvbXBvc2l0
b3ImIHJlbmRlckxheWVyQ29tcG9zaXRvciA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJl
bmRlclZpZXcoKS0+Y29tcG9zaXRvcigpOwogCiAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNoYWRv
d0dyYXBoaWNzTGF5ZXIgPSByZW5kZXJMYXllckNvbXBvc2l0b3IubGF5ZXJGb3JDb250ZW50U2hh
ZG93KCkpCiAgICAgICAgIHJldHVybiB0b0dyYXBoaWNzTGF5ZXJDQShzaGFkb3dHcmFwaGljc0xh
eWVyKS0+cGxhdGZvcm1DQUxheWVyKCk7CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91Ymxl
IHNjYWxlLCBGbG8KICAgICB6b29tTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCgpKTsK
IAogICAgIGlmIChQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVyID0gc2hhZG93TGF5ZXJGb3JU
cmFuc2llbnRab29tKCkpIHsKLSAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fd2Vi
UGFnZS0+bWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCk7CisgICAgICAgIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCk7CiAg
ICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB0
b0Zsb2F0U2l6ZShyZW5kZXJWaWV3LT5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhYTWF4WUNvcm5l
cigpKSk7CiAgICAgICAgIHNoYWRvd0JvdW5kcy5zY2FsZShzY2FsZSk7CiAKQEAgLTU0OCwxMSAr
NTQ4LDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiB7CiAgICAgYXBwbHlUcmFuc2llbnRa
b29tVG9MYXllcnMoc2NhbGUsIG9yaWdpbik7CiAKLSAgICBkb3VibGUgY3VycmVudFBhZ2VTY2Fs
ZSA9IG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgZG91YmxlIGN1cnJlbnRQYWdl
U2NhbGUgPSBtX3dlYlBhZ2UucGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKHNjYWxlID4gY3Vy
cmVudFBhZ2VTY2FsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CiAgICAgRmxvYXRSZWN0IHRpbGVDb3ZlcmFn
ZVJlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMo
KTsKICAgICB0aWxlQ292ZXJhZ2VSZWN0Lm1vdmVCeSgtb3JpZ2luKTsKICAgICB0aWxlQ292ZXJh
Z2VSZWN0LnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBzY2FsZSk7CkBAIC01NzQsNyArNTc0LDcg
QEAgc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiB0cmFuc2llbnRab29tU25hcEFu
aW1hdGlvbkZvcktleVBhdGgoU3RyaW5nIGsKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3Jp
Z2luKQogewotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVW
aWV3KCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmll
dygpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBmcmFtZVZpZXctPnZpc2li
bGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKIAogICAgIEZsb2F0UG9pbnQgY29u
c3RyYWluZWRPcmlnaW4gPSB2aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKTsKQEAgLTY1MCwx
NiArNjUwLDE2IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFwcGx5VHJh
bnNpZW50Wm9vbVRvUGFnZShkb3VibGUgc2NhbGUsIEZsb2F0CiAgICAgbGF5ZXJGb3JUcmFuc2ll
bnRab29tKCktPnNldFRyYW5zZm9ybShmaW5hbFRyYW5zZm9ybSk7CiAKICAgICBpZiAoUGxhdGZv
cm1DQUxheWVyKiBzaGFkb3dMYXllciA9IHNoYWRvd0xheWVyRm9yVHJhbnNpZW50Wm9vbSgpKSB7
Ci0gICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZp
ZXcoKS0+cmVuZGVyVmlldygpOworICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93
ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpOwogICAgICAgICBJbnRSZWN0IG92
ZXJmbG93UmVjdCA9IHJlbmRlclZpZXctPnBpeGVsU25hcHBlZExheW91dE92ZXJmbG93UmVjdCgp
OwogICAgICAgICBzaGFkb3dMYXllci0+c2V0Qm91bmRzKEludFJlY3QoSW50UG9pbnQoKSwgdG9J
bnRTaXplKG92ZXJmbG93UmVjdC5tYXhYTWF4WUNvcm5lcigpKSkpOwogICAgICAgICBzaGFkb3dM
YXllci0+c2V0UG9zaXRpb24oc2hhZG93TGF5ZXItPmJvdW5kcygpLmNlbnRlcigpKTsKICAgICB9
CiAKICAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2luKTsKLSAgICBGbG9hdFJl
Y3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPnVu
b2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKKyAgICBGbG9hdFJlY3Qg
dW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dW5vYnNj
dXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAgIHVuc2Nyb2xsZWRPcmln
aW4ubW92ZUJ5KC11bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24oKSk7Ci0gICAgbV93ZWJQ
YWdlLT5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQb2ludCgtdW5zY3JvbGxlZE9yaWdpbikp
OworICAgIG1fd2ViUGFnZS5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQb2ludCgtdW5zY3Jv
bGxlZE9yaWdpbikpOwogICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gMTsKICAgICBmbHVzaExh
eWVycygpOwogfQo=
</data>
<flag name="review"
          id="258067"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>