<?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>162955</bug_id>
          
          <creation_ts>2016-10-04 23:26:26 -0700</creation_ts>
          <short_desc>Avoid automatically re-taking snapshots for back-forward items that were never loaded into the view</short_desc>
          <delta_ts>2016-10-07 11:36:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>adachan</cc>
    
    <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>kdecker</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236543</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-04 23:26:26 -0700</bug_when>
    <thetext>Add support for permanent/immutable swipe snapshots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236544</commentid>
    <comment_count>1</comment_count>
      <attachid>290690</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-04 23:28:28 -0700</bug_when>
    <thetext>Created attachment 290690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236762</commentid>
    <comment_count>2</comment_count>
      <attachid>290690</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-05 13:06:46 -0700</bug_when>
    <thetext>Comment on attachment 290690
Patch

Going a different direction with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236807</commentid>
    <comment_count>3</comment_count>
      <attachid>290755</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-05 15:54:00 -0700</bug_when>
    <thetext>Created attachment 290755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237696</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-07 11:36:31 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/206833</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290690</attachid>
            <date>2016-10-04 23:28:28 -0700</date>
            <delta_ts>2016-10-05 13:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162955-20161004232517.patch</filename>
            <type>text/plain</type>
            <size>39639</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhOTBjMmMyZTZkYWVl
OTM1MDE2ZWViMmUwY2QzOWU3YWMyOTNjNy4uNDNkNWMyZDUzMjQ1OTYyNzhiNmJmMDRhMzZhOTA2
NDg2YzU2ZWU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBwZXJtYW5lbnQvaW1tdXRhYmxlIHN3aXBlIHNuYXBzaG90cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTU1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNzY1OTE3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICBFeHBvcnQgaXNWb2xhdGlsZSBmb3IgdXNlIGluIFdlYktpdDIuCisKIDIwMTYtMTAtMDQgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQ
YXJzZXIgc2hvdWxkIG1hdGNoIFVSTDo6cGFyc2UgYW5kIG90aGVyIGJyb3dzZXJzIHdoZW4gcGFy
c2luZyBhIFVSTCBjb250YWluaW5nIG9ubHkgc2NoZW1lOi8vCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTY3YTQy
YjUwNWFkOWI4MTcyOTU5MjlhMzRhZDRmZTYwZjYwMjVjOS4uNzhmZTc0OTJkOGFiNTI5ZTU1Nzdk
OWIzY2JhNzJiNTgxMDQ1OTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDE2LTEw
LTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBwZXJtYW5lbnQvaW1tdXRhYmxlIHN3aXBlIHNuYXBzaG90cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTU1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yNzY1OTE3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGNvbmNlcHQgb2YgYSBiYWNrLWZvcndhcmQgaXRl
bSBoYXZpbmcgYW4gaW1tdXRhYmxlIHN3aXBlIHNuYXBzaG90LAorICAgICAgICBzbyB0aGF0IGNs
aWVudHMgY2FuIGZvcmNlIGEgc25hcHNob3QgYXQgYSBwYXJ0aWN1bGFyIHRpbWUsIHdpdGggcGFy
dGljdWxhcgorICAgICAgICBjb250ZW50IG9uLXNjcmVlbiwgYW5kIGhhdmUgYSBndWFyYW50ZWUg
dGhhdCBXZWJLaXQgd29uJ3QgZXZlciBvdmVyd3JpdGUgaXQuCisKKyAgICAgICAgKiBTaGFyZWQv
U2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c25hcHNob3RNdXRh
YmlsaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25h
cHNob3RNdXRhYmlsaXR5KToKKyAgICAgICAgQWRkIGEgYml0IG9uIHRoZSBzZXNzaW9uIHN0YXRl
IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNuYXBzaG90IGlzCisgICAgICAgIG11dGFibGUu
IElmIGl0IGlzIG5vdCwgd2Ugd2lsbCBuZXZlciB1cGRhdGUgdGhlIHNuYXBzaG90IGFnYWluLiBC
eSBkZWZhdWx0LAorICAgICAgICBhbGwgc25hcHNob3RzIGFyZSBtdXRhYmxlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW06CisgICAgICAg
ICgtW1dLQmFja0ZvcndhcmRMaXN0SXRlbSBfc25hcHNob3RGb3JUZXN0aW5nXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLQmFja0ZvcndhcmRMaXN0SXRlbSBTUEkgdG8gcmV0
cmlldmUgdGhlIHNuYXBzaG90IGZvciBhIGdpdmVuIGJhY2stZm9yd2FyZCBsaXN0IGl0ZW0uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfc2F2ZVBl
cm1hbmVudEJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOl0pOgorICAgICAgICBBZGQgV0tWaWV3
IFNQSSB0byB0YWtlIGEgcGVybWFuZW50IHNuYXBzaG90LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2F2ZVBlcm1hbmVudEJh
Y2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOl0pOgorICAgICAgICBBZGQgV0tXZWJWaWV3IFNQSSB0
byB0YWtlIGEgcGVybWFuZW50IHNuYXBzaG90LgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlz
YWJsZUJhY2tGb3J3YXJkU25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZ10pOgorICAgICAgICBB
ZGQgV0tXZWJWaWV3IFNQSSB0byBkaXNhYmxlIHZvbGF0aWxpdHkgb2Ygc25hcHNob3RzLCBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCk6CisgICAgICAg
IEFkb3B0IFZpZXdTbmFwc2hvdDo6c2V0Vm9sYXRpbGUgaW5zdGVhZCBvZiByZWFjaGluZyBpbnRv
IHRoZSBzdXJmYWNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzYXZlUGVybWFu
ZW50QmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZE5hdmln
YXRpb25TbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICBQbHVtYmluZyBmb3IgdGhlIG5ldyBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KToKKyAgICAgICAgQWRvcHQgVmlld1Nu
YXBzaG90OjpzZXRWb2xhdGlsZSBpbnN0ZWFkIG9mIHJlYWNoaW5nIGludG8gdGhlIHN1cmZhY2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmg6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzZXREaXNhYmxlU25hcHNob3RWb2xhdGlsaXR5
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpkaXNhYmxl
U25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OlZpZXdTbmFwc2hvdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpzZXRW
b2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6YXNMYXllckNvbnRlbnRz
KToKKyAgICAgICAgTW92ZSBhbGwgdG91Y2hpbmcgb2Ygc25hcHNob3Qgdm9sYXRpbGl0eSBpbnRv
IHRoZSBuZXcgc2V0Vm9sYXRpbGUsCisgICAgICAgIGFuZCBzaG9ydC1jaXJjdWl0IGlmIHRoZSB0
ZXN0aW5nLW9ubHkgbV9kaXNhYmxlU25hcHNob3RWb2xhdGlsaXR5IGJpdAorICAgICAgICBpcyBz
ZXQsIHNvIHRoYXQgdGVzdHMgd29uJ3QgZmxha2Ugb3V0IGlmIHNuYXBzaG90cyBhcmUgcHVyZ2Vk
CisgICAgICAgIHdoaWxlIHRoZXkncmUgcnVubmluZy4KKworICAgICAgICAoV2ViS2l0OjpWaWV3
U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QpOgorICAgICAgICBBdm9pZCByZS10YWtpbmcg
cGVybWFuZW50IHNuYXBzaG90cywgYW5kIHN0b3JlIHRoZSBwZXJtYW5hbmNlIGluZm9ybWF0aW9u
CisgICAgICAgIGFsb25nc2lkZSB0aGUgc25hcHNob3QgaW4gdGhlIGJhY2stZm9yd2FyZCBpdGVt
LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6YXNJbWFnZUZvclRlc3RpbmcpOgor
ICAgICAgICBNYWtlIGEgQ0dJbWFnZVJlZiBmb3IgdGhlIGFmb3JlbWVudGlvbmVkIFdLQmFja0Zv
cndhcmRMaXN0SXRlbSBTUEkuCisgICAgICAgIFRoaXMgaXMgY3VycmVudGx5IG5vdCBpbXBsZW1l
bnRlZCBmb3IgdGhlIGlPUyBTaW11bGF0b3IsIGJlY2F1c2Ugd2UKKyAgICAgICAgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gdGhlIGJpdHMgb2YgdGhlIGltYWdlIGluIHRoYXQgY2FzZS4KKworMjAxNi0x
MC0wNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBG
aXggdGhlIGJ1aWxkLgogCiAgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaAppbmRleCBmYTMyNjNmZmRlYjE1YjBkYjJhZWUxMTBiYzQ4ZmQ0ZjE1NjVhZjQ2Li5k
YTM2M2U3MDdlODAzOTZjMWU0MTAyNzcxMmYzMTZmMTE3OTBjODE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtNzgsNyAr
NzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gZ29pbmcgdG8gYmUgdXNlZCBpbW1lZGlhdGVseSwgdXNl
IHRoZSByZXR1cm4gdmFsdWUgb2Ygc2V0SXNWb2xhdGlsZSB0bwogICAgIC8vIGRldGVybWluZSB3
aGV0aGVyIHRoZSBkYXRhIHdhcyBwdXJnZWQsIGluc3RlYWQgb2YgZmlyc3QgY2FsbGluZyBzdGF0
ZSgpIG9yIGlzVm9sYXRpbGUoKS4KICAgICBTdXJmYWNlU3RhdGUgc3RhdGUoKSBjb25zdDsKLSAg
ICBib29sIGlzVm9sYXRpbGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVm9s
YXRpbGUoKSBjb25zdDsKIAogICAgIC8vIHNldElzVm9sYXRpbGUgb25seSBoYXMgYW4gZWZmZWN0
IG9uIGlPUyBhbmQgT1MgMTAuOSBhbmQgYWJvdmUuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3VyZmFj
ZVN0YXRlIHNldElzVm9sYXRpbGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRl
LmgKaW5kZXggZGVlNzY4YjdjNzZlYmNkYzYxMzBlOWU5M2JkZjk0M2M0MjhmNDliOC4uMTcxNTFl
ZjJkNGU2MWZjYjY2MmMyYWNkMDAzOWI1NTgwNWYwNGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZXNzaW9uU3RhdGUuaApAQCAtMTMwLDYgKzEzMCw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUgewogICAgIFBhZ2VTdGF0ZSBwYWdlU3RhdGU7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3Q7CisgICAgU25hcHNob3RNdXRhYmls
aXR5IHNuYXBzaG90TXV0YWJpbGl0eSB7IFNuYXBzaG90TXV0YWJpbGl0eTo6TXV0YWJsZSB9Owog
I2VuZGlmCiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaAppbmRleCAyYzhjNGE3ZmMxNDE0NjBlZjYwNzVlYTczMDA3MDI0Yzc2NzU1NTZlLi4y
NTllMmI3YzRkZWZhNTU0ODdhMDY3ZjlmMGM3OGQ2OWVlNGRjYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTYyLDYgKzYyLDkgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3Qo
KSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQogICAgIHZvaWQg
c2V0U25hcHNob3QoUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90KSB7IG1faXRlbVN0
YXRlLnNuYXBzaG90ID0gc25hcHNob3Q7IH0KKworICAgIFNuYXBzaG90TXV0YWJpbGl0eSBzbmFw
c2hvdE11dGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5zbmFwc2hvdE11dGFi
aWxpdHk7IH0KKyAgICB2b2lkIHNldFNuYXBzaG90TXV0YWJpbGl0eShTbmFwc2hvdE11dGFiaWxp
dHkgbXV0YWJpbGl0eSkgeyBtX2l0ZW1TdGF0ZS5zbmFwc2hvdE11dGFiaWxpdHkgPSBtdXRhYmls
aXR5OyB9CiAjZW5kaWYKIAogICAgIHN0YXRpYyB1aW50NjRfdCBoaWdoZXN0VXNlZEl0ZW1JRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tG
b3J3YXJkTGlzdEl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0SXRlbS5tbQppbmRleCAxMjFhZDkwMzg3Yzg4NmZmMzc5MWRhNDE0YWMy
YzFhODM3ODk2NDE0Li5mODZhYTJiYWIyNzY1MmQ4ZmJjYTUxZGRkY2VlYzg0MjI0MTBkNTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0Zvcndh
cmRMaXN0SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0SXRlbS5tbQpAQCAtNjYsNiArNjYsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKICAgICByZXR1cm4gKl9pdGVtOwogfQogCistIChDR0ltYWdlUmVmKV9zbmFwc2hv
dEZvclRlc3RpbmcKK3sKKyAgICBpZiAoYXV0byBzbmFwc2hvdCA9IF9pdGVtLT5zbmFwc2hvdCgp
KQorICAgICAgICByZXR1cm4gc25hcHNob3QtPmFzSW1hZ2VGb3JUZXN0aW5nKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1l
bnRhdGlvbgogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlz
dEl0ZW1JbnRlcm5hbC5oCmluZGV4IGViNzlhOTVhMmM5NDFlNWUzN2E2YTNkZTE4NjVlZWFlNTI0
YzM0OTUuLjNlOWMwYWU2ZTE5ZmUyODYwNTc0N2ZiM2M4Mjg4OWI2NjkxOTNiZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0uaCIKKyNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCIKIAog
I2lmIFdLX0FQSV9FTkFCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWM0MmU5MjYyN2Y4MGY3MGEzMmMxNDFjZDhjYTIwZDk0ODc5ZDg5NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9y
d2FyZExpc3RJdGVtUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxXZWJLaXQvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCitAaW50ZXJmYWNlIFdLQmFja0ZvcndhcmRMaXN0SXRlbSAoV0tQcml2YXRlKQorCisvLyBG
b3IgdGVzdGluZyBvbmx5LgorLSAoQ0dJbWFnZVJlZilfc25hcHNob3RGb3JUZXN0aW5nIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitAZW5k
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Vmlld1ByaXZhdGUuaAppbmRleCAxZjNlYmVjODFhMTI4NmFiZmEwMDJhOTk0YWFjZTkzZDU4YWNm
NjI3Li43MDhhNjJlNWFmMTZjMTY1M2ZhNzYzYTliMDZmMmQ2NDdiODI2ZTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaApAQCAt
MTA4LDYgKzEwOCw3IEBACiAKIC0gKHZvaWQpc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJy
ZW50SXRlbTsKIC0gKHZvaWQpc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYpaXRlbTsKKy0gKHZvaWQpX3NhdmVQZXJtYW5lbnRCYWNrRm9yd2Fy
ZFNuYXBzaG90Rm9ySXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmKWl0ZW07CiAKIC8vIFZp
ZXdzIG11c3QgYmUgbGF5ZXItYmFja2VkLCBoYXZlIG5vIHRyYW5zZm9ybSBhcHBsaWVkLCBiZSBp
biBiYWNrLXRvLWZyb250IHotb3JkZXIsIGFuZCB0aGUgd2hvbGUgc2V0IG11c3QgYmUgYSBjb250
aWd1b3VzIG9wYXF1ZSByZWN0YW5nbGUuCiAtICh2b2lkKV9zZXRDdXN0b21Td2lwZVZpZXdzOihO
U0FycmF5ICopY3VzdG9tU3dpcGVWaWV3czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZDAxY2E1YzY0MTRmOTdlNDI1MzAxNGMzZGQy
MDc0N2I4ZDVmN2U1Zi4uYTU2ZmE5YmVlYjc0YjBhM2RjN2ZkZTQ2MTJhNDJmOTRkZTRmZDg5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTM3MDcsNiArMzcwNywxMSBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMg
dG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogICAgIF9wYWdlLT5y
ZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CiB9CiAKKy0gKHZvaWQpX3NhdmVQ
ZXJtYW5lbnRCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVt
ICopaXRlbQoreworICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRl
bSwgV2ViS2l0OjpTbmFwc2hvdE11dGFiaWxpdHk6OkltbXV0YWJsZSk7Cit9CisKIC0gKGlkIDxf
V0tJbnB1dERlbGVnYXRlPilfaW5wdXREZWxlZ2F0ZQogewogICAgIHJldHVybiBfaW5wdXREZWxl
Z2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKQEAgLTQ2MTIsNiArNDYxNywxMSBAQCBzdGF0aWMgV2Vi
Q29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24oVUlTZQogICAgIH0pOwogfQogCistICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRT
bmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nCit7CisgICAgV2ViS2l0OjpWaWV3U25hcHNob3RT
dG9yZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZVNuYXBzaG90Vm9sYXRpbGl0eUZvclRlc3Rpbmco
dHJ1ZSk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGRjMzM5NzM2MzFkM2Y4ZjZiMTkx
YjllOWU0ZDUzOTFkNjBmZWM2ZjguLmI5YjZhOGNkYzU5YWQzMTdiMjNiZDIxYjdhYjc0MzJhNGU1
MTUwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yMzksNiArMjM5LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0FycmF5ICpfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRT
bmFwc2hvdEZvckl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0gV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CistICh2b2lkKV9zYXZlUGVybWFuZW50QmFj
a0ZvcndhcmRTbmFwc2hvdEZvckl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0gV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5
YmFjaywgc2V0dGVyPV9zZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2s6KSBCT09M
IF9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2s7CiAKQEAgLTI4Nyw2ICsyODgsOCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiAK
IC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1
cGRhdGVCbG9jayBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAK
Ky0gKHZvaWQpX2Rpc2FibGVCYWNrRm9yd2FyZFNuYXBzaG90Vm9sYXRpbGl0eUZvclRlc3Rpbmcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
IEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggMWY5MDNlZTdkNmI3Mjk2YzQ5ZGM5MGU5OWY0ZWFjODI4YTZjNGQzZS4uYWY2ZDMx
NzczNDEzZjQxMTZhODExNDg4ODgwMDQyMDhiY2RjMjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtOTkxLDYgKzk5MSwxMSBAQCBTb21lIG90aGVy
IGVkaXRpbmctcmVsYXRlZCBtZXRob2RzIHN0aWxsIHVuaW1wbGVtZW50ZWQ6CiAgICAgX2RhdGEt
Pl9pbXBsLT5zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oKnRvSW1wbChpdGVtKSk7CiB9
CiAKKy0gKHZvaWQpX3NhdmVQZXJtYW5lbnRCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbTooV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmKWl0ZW0KK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNhdmVQZXJt
YW5lbnRCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbSgqdG9JbXBsKGl0ZW0pKTsKK30KKwogLSAo
aWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZilj
b250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmCiB7CiAg
ICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjpjb250ZXh0UmVm
IHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTpuaWxdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA1NWM2Y2NlMDI1MWM4
MzZkMDJkNWZmNjkwM2RiYjc2OGI5YTEzMDRmLi40M2NiY2E0NmQ2ZWRlNDcwMzkwN2FjODExNTg5
YmI1ZWY0YjFmNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaApAQCAtNDA0LDYgKzQwNCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8Vmlld1NuYXBz
aG90PiB0YWtlVmlld1NuYXBzaG90KCk7CiAgICAgdm9pZCBzYXZlQmFja0ZvcndhcmRTbmFwc2hv
dEZvckN1cnJlbnRJdGVtKCk7CiAgICAgdm9pZCBzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQgc2F2ZVBlcm1hbmVudEJhY2tG
b3J3YXJkU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKIAogICAgIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciogZ2VzdHVyZUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2dlc3R1
cmVDb250cm9sbGVyLmdldCgpOyB9CiAgICAgVmlld0dlc3R1cmVDb250cm9sbGVyJiBlbnN1cmVH
ZXN0dXJlQ29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IDhhZTM2YmUxZjVjYmI1YjU1MWI4NDZhMTk5NzVlYjQ5NDc4OTgx
YTUuLjU3MzgyZWI1MzdjZmZiNTdmNGRiOGE5YTU0NzVhNjFiY2M5ZjllOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMxNzUsOSArMzE3
NSwxMSBAQCBSZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJWaWV3SW1wbDo6dGFrZVZpZXdTbmFwc2hv
dCgpCiAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1h
Z2UoY3JvcHBlZFNuYXBzaG90SW1hZ2UuZ2V0KCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3VyZmFjZS0+c2V0SXNWb2xhdGlsZSh0cnVlKTsKIAot
ICAgIHJldHVybiBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBS
ZWZQdHI8Vmlld1NuYXBzaG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1v
dmUoc3VyZmFjZSkpOworICAgIHNuYXBzaG90LT5zZXRWb2xhdGlsZSh0cnVlKTsKKworICAgIHJl
dHVybiBzbmFwc2hvdDsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25h
cHNob3RGb3JDdXJyZW50SXRlbSgpCkBAIC0zMTkwLDYgKzMxOTIsMTEgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0pCiAgICAgbV9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNhdmVQZXJtYW5lbnRCYWNrRm9yd2FyZFNuYXBzaG90Rm9y
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQoreworICAgIG1fcGFnZS0+cmVjb3Jk
TmF2aWdhdGlvblNuYXBzaG90KGl0ZW0sIFNuYXBzaG90TXV0YWJpbGl0eTo6SW1tdXRhYmxlKTsK
K30KKwogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNv
bnRyb2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2VmMWU0NTRlNjM1MTdlM2Y2NmRk
ZTFkOGJmZGU5ZjAwMjZmMTdkZi4uOTk1ZjY4NDU4YmQ0YWUwOTZkNTJiOTYzNjBlYmU1YjM4YzRk
YThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEx
OTcsMTMgKzExOTcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZE5hdmlnYXRpb25TbmFw
c2hvdCgpCiAgICAgICAgIHJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgqaXRlbSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmROYXZpZ2F0aW9uU25hcHNo
b3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgU25hcHNob3RNdXRhYmlsaXR5IG11dGFi
aWxpdHkpCiB7CiAgICAgaWYgKCFtX3Nob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMgfHwg
bV9zdXBwcmVzc05hdmlnYXRpb25TbmFwc2hvdHRpbmcpCiAgICAgICAgIHJldHVybjsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5yZWNv
cmRTbmFwc2hvdCgqdGhpcywgaXRlbSk7CisgICAgVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRv
bigpLnJlY29yZFNuYXBzaG90KCp0aGlzLCBpdGVtLCBtdXRhYmlsaXR5KTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGl0ZW0pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggMjA5YzkwYTIyZDU5Njc2YWRhYTAyYTVhZDM4NDc1ZDEwZjg5ODAxMC4u
OWIxZTE0YmUwNDczOGQwNGE3YzJlYjIxZGY0NjkwOWM5OThiNGZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90czsgfQogICAgIHZvaWQgc2V0U2hvdWxk
UmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyhib29sIHNob3VsZFJlY29yZFNuYXBzaG90cykgeyBt
X3Nob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMgPSBzaG91bGRSZWNvcmRTbmFwc2hvdHM7
IH0KICAgICB2b2lkIHJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgpOwotICAgIHZvaWQgcmVjb3Jk
TmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKKyAgICB2b2lkIHJl
Y29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgU25hcHNob3RN
dXRhYmlsaXR5ID0gU25hcHNob3RNdXRhYmlsaXR5OjpNdXRhYmxlKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tCmluZGV4IDQzOWE0NTA5ODkwMjMyOTRmZTRhYTY4NDkyNGExOTM3ODU0
ZTdlYzUuLmRjMjFkNDMzMGFhMGQyZTUzYzFjYzAzMTEzZTViNDdlNTIxZjY2YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnJlbW92ZVN3aXBlU25hcHNob3QoKQogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZp
ZXdHZXN0dXJlVHlwZTo6U3dpcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2N1cnJl
bnRTd2lwZVNuYXBzaG90ICYmIG1fY3VycmVudFN3aXBlU25hcHNob3QtPnN1cmZhY2UoKSkKLSAg
ICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdC0+c3VyZmFjZSgpLT5zZXRJc1ZvbGF0aWxlKHRy
dWUpOworICAgIGlmIChtX2N1cnJlbnRTd2lwZVNuYXBzaG90KQorICAgICAgICBtX2N1cnJlbnRT
d2lwZVNuYXBzaG90LT5zZXRWb2xhdGlsZSh0cnVlKTsKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBz
aG90ID0gbnVsbHB0cjsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXIgOiBtX2N1cnJlbnRT
d2lwZUxpdmVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdTbmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdT
bmFwc2hvdFN0b3JlLmgKaW5kZXggYWEyNjkzOWE1NTgwM2QzNmMyN2I2OTJlY2MwYjI1ZjNhYTU4
Yzc5Ni4uODc1NWVjYzUzMDYwMDA1YjY3YWFjMjI3ZWUzMzJiY2M3YTQ5Yjc3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaApAQCAtNTAs
NiArNTAsOCBAQCBjbGFzcyBWaWV3U25hcHNob3RTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKK2VudW0gY2xhc3MgU25hcHNob3RNdXRh
YmlsaXR5IHsgTXV0YWJsZSwgSW1tdXRhYmxlIH07CisKIGNsYXNzIFZpZXdTbmFwc2hvdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFZpZXdTbmFwc2hvdD4gewogcHVibGljOgogI2lmIFVTRShJT1NVUkZB
Q0UpCkBAIC02Myw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySW1hZ2UoKTsKICAg
ICBib29sIGhhc0ltYWdlKCkgY29uc3Q7CiAgICAgaWQgYXNMYXllckNvbnRlbnRzKCk7CisgICAg
Q0dJbWFnZVJlZiBhc0ltYWdlRm9yVGVzdGluZygpOwogCiAgICAgdm9pZCBzZXRSZW5kZXJUcmVl
U2l6ZSh1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplID0gcmVuZGVy
VHJlZVNpemU7IH0KICAgICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyVHJlZVNpemU7IH0KQEAgLTgwLDYgKzgzLDggQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+
c2l6ZSgpIDogV2ViQ29yZTo6SW50U2l6ZSgpOyB9CiAKICAgICB2b2lkIHNldFN1cmZhY2Uoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pOworCisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlOjpTdXJmYWNlU3RhdGUgc2V0Vm9sYXRpbGUoYm9vbCk7CiAjZWxzZQogICAgIFdlYkNvcmU6
OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVfdCBpbWFn
ZVNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemVJbkJ5dGVzOyB9CkBAIC0x
MTIsMTAgKzExNywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmlld1NuYXBzaG90U3RvcmUm
IHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmLCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CisgICAgdm9pZCByZWNvcmRTbmFwc2hvdChXZWJQYWdl
UHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgU25hcHNob3RNdXRhYmlsaXR5KTsKIAog
ICAgIHZvaWQgZGlzY2FyZFNuYXBzaG90SW1hZ2VzKCk7CiAKKyAgICB2b2lkIHNldERpc2FibGVT
bmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKGJvb2wgZGlzYWJsZSkgeyBtX2Rpc2FibGVTbmFw
c2hvdFZvbGF0aWxpdHkgPSBkaXNhYmxlOyB9CisgICAgYm9vbCBkaXNhYmxlU25hcHNob3RWb2xh
dGlsaXR5Rm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZVNuYXBzaG90Vm9sYXRp
bGl0eTsgfQorCiAjaWYgIVVTRShJT1NVUkZBQ0UpCiAgICAgc3RhdGljIENBQ29udGV4dCAqc25h
cHNob3R0aW5nQ29udGV4dCgpOwogI2VuZGlmCkBAIC0xMjUsOSArMTMzLDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUmVtb3ZlSW1hZ2VGcm9tU25hcHNob3QoVmlld1NuYXBzaG90Jik7CiAg
ICAgdm9pZCBwcnVuZVNuYXBzaG90cyhXZWJQYWdlUHJveHkmKTsKIAotICAgIHNpemVfdCBtX3Nu
YXBzaG90Q2FjaGVTaXplOworICAgIHNpemVfdCBtX3NuYXBzaG90Q2FjaGVTaXplIHsgMCB9Owog
CiAgICAgTGlzdEhhc2hTZXQ8Vmlld1NuYXBzaG90Kj4gbV9zbmFwc2hvdHNXaXRoSW1hZ2VzOwor
ICAgIGJvb2wgbV9kaXNhYmxlU25hcHNob3RWb2xhdGlsaXR5IHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld1NuYXBzaG90U3RvcmUubW0KaW5kZXggMmM5YWVhY2YwMmQ1OTFjMDdlODYyZTU3OGExZmQ0
YTZkNTRmNDM0Mi4uYzMwMGNmZDFhNGViMWIwYmQ5NGM4YmRlOTk2NmFkYWE2YzEyMGQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1t
CkBAIC00Niw3ICs0Niw2IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNuYXBzaG90Q2Fj
aGVTaXplID0gNDAwICogKDEwMjQgKiAxMDI0KTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBWaWV3
U25hcHNob3RTdG9yZTo6Vmlld1NuYXBzaG90U3RvcmUoKQotICAgIDogbV9zbmFwc2hvdENhY2hl
U2l6ZSgwKQogewogfQogCkBAIC0xMDUsMTEgKzEwNCwxNCBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0
b3JlOjpwcnVuZVNuYXBzaG90cyhXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICBtX3Nu
YXBzaG90c1dpdGhJbWFnZXMuZmlyc3QoKS0+Y2xlYXJJbWFnZSgpOwogfQogCi12b2lkIFZpZXdT
bmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKK3ZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJl
Y29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBpdGVtLCBTbmFwc2hvdE11dGFiaWxpdHkgbXV0YWJpbGl0eSkKIHsKICAgICBpZiAo
d2ViUGFnZVByb3h5LmlzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKGl0ZW0uc25hcHNob3RNdXRhYmlsaXR5KCkgPT0gU25hcHNo
b3RNdXRhYmlsaXR5OjpJbW11dGFibGUpCisgICAgICAgIHJldHVybjsKKwogICAgIHBydW5lU25h
cHNob3RzKHdlYlBhZ2VQcm94eSk7CiAKICAgICB3ZWJQYWdlUHJveHkud2lsbFJlY29yZE5hdmln
YXRpb25TbmFwc2hvdChpdGVtKTsKQEAgLTEyMyw2ICsxMjUsNyBAQCB2b2lkIFZpZXdTbmFwc2hv
dFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFj
a0ZvcndhcgogICAgIHNuYXBzaG90LT5zZXRCYWNrZ3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpKTsKIAogICAgIGl0ZW0uc2V0U25hcHNob3QoV1RG
TW92ZShzbmFwc2hvdCkpOworICAgIGl0ZW0uc2V0U25hcHNob3RNdXRhYmlsaXR5KG11dGFiaWxp
dHkpOwogfQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpkaXNjYXJkU25hcHNob3RJbWFnZXMo
KQpAQCAtMjAxLDEzICsyMDQsMjYgQEAgdm9pZCBWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UoKQog
I2VuZGlmCiB9CiAKKyNpZiBVU0UoSU9TVVJGQUNFKQorV2ViQ29yZTo6SU9TdXJmYWNlOjpTdXJm
YWNlU3RhdGUgVmlld1NuYXBzaG90OjpzZXRWb2xhdGlsZShib29sIGJlY29tZVZvbGF0aWxlKQor
eworICAgIGlmIChWaWV3U25hcHNob3RTdG9yZTo6c2luZ2xldG9uKCkuZGlzYWJsZVNuYXBzaG90
Vm9sYXRpbGl0eUZvclRlc3RpbmcoKSkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OklPU3VyZmFj
ZTo6U3VyZmFjZVN0YXRlOjpWYWxpZDsKKworICAgIGlmICghbV9zdXJmYWNlKQorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OkVtcHR5OworCisgICAgcmV0
dXJuIG1fc3VyZmFjZS0+c2V0SXNWb2xhdGlsZShiZWNvbWVWb2xhdGlsZSk7Cit9CisjZW5kaWYK
KwogaWQgVmlld1NuYXBzaG90Ojphc0xheWVyQ29udGVudHMoKQogewogI2lmIFVTRShJT1NVUkZB
Q0UpCiAgICAgaWYgKCFtX3N1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
aWYgKG1fc3VyZmFjZS0+c2V0SXNWb2xhdGlsZShmYWxzZSkgIT0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpTdXJmYWNlU3RhdGU6OlZhbGlkKSB7CisgICAgaWYgKHNldFZvbGF0aWxlKGZhbHNlKSAhPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6VmFsaWQpIHsKICAgICAgICAgY2xlYXJJ
bWFnZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yMTgsNCArMjM0LDIy
IEBAIGlkIFZpZXdTbmFwc2hvdDo6YXNMYXllckNvbnRlbnRzKCkKICNlbmRpZgogfQogCitDR0lt
YWdlUmVmIFZpZXdTbmFwc2hvdDo6YXNJbWFnZUZvclRlc3RpbmcoKQoreworI2lmIFVTRShJT1NV
UkZBQ0UpCisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgQVNTRVJUKFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5kaXNhYmxlU25hcHNob3RW
b2xhdGlsaXR5Rm9yVGVzdGluZygpKTsKKyAgICBBU1NFUlQoIW1fc3VyZmFjZS0+aXNWb2xhdGls
ZSgpKTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1fc3VyZmFjZS0+Y3Jl
YXRlSW1hZ2UoKTsKKworICAgIHJldHVybiBpbWFnZS5hdXRvcmVsZWFzZSgpOworI2Vsc2UKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW4gdGhlIHNsb3QgY2FzZS4KKyAgICByZXR1cm4g
bnVsbHB0cjsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzI1NGFi
Yjk0YWIwNTI2YzQ1ODAwYzE4ZmM1NTEzMDc1NDdmMDA2Li4xNTMyNTk5Y2YyMmU3NTBhMjA1MDky
NTNlNTgyY2VlMDc5ZWJhZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTIsNiArNzEyLDcgQEAKIAkJMkRGOUVFRUUxQTc4
NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVFRUQxQTc4NkVBRDAwQjZDRkJFIC8q
IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oICovOyB9OwogCQkyREZDN0RCQjFCQ0NDMTk1MDBDMTU0
OEMgLyogV2ViVmlld0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERkM3REI5MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oICovOyB9
OwogCQkyREZDN0RCQzFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZDN0RCQTFCQ0NDMTk1MDBD
MTU0OEMgLyogV2ViVmlld0ltcGwubW0gKi87IH07CisJCTJERkY3QjZGMURBNENGQUYwMDgxNDYx
NCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZGN0I2RTFEQTRDRkFGMDA4MTQ2MTQgLyogV0tC
YWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJFN0E5NDRBMUJCRDk3QzMwMDk0NTU0NyAvKiBfV0tGb2N1
c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTA5
OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIw
MDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlDNzE0
NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkg
LyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CkBAIC0yNzY0LDYgKzI3NjUsNyBAQAog
CQkyREY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREZDN0RCOTFCQ0NDMTk1MDBDMTU0OEMgLyog
V2ViVmlld0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0lt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGQzdEQkExQkNDQzE5NTAwQzE1
NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViVmlld0ltcGwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERkY3
QjZFMURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3QTk0NDkxQkJEOTVDNjAwOTQ1
NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGb2N1c2Vk
RWxlbWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZD
NzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEw
OTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIxOSw2ICs1MjIxLDcgQEAKIAkJCQkz
N0M0QzA4NTE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJ
CQkJMzdDNEMwODQxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAq
LywKIAkJCQkzN0M0QzA4ODE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVt
SW50ZXJuYWwuaCAqLywKKwkJCQkyREZGN0I2RTFEQTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtUHJpdmF0ZS5oICovLAogCQkJCTFBOUYyODEwMTk1OEY0NzgwMDhDQUM3MiAv
KiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLywKIAkJCQkxQUY0NTkyRDE5NDY0QjIwMDBG
OUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFBRjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBX
S0Vycm9yLm1tICovLApAQCAtODEwNCw2ICs4MTA3LDcgQEAKIAkJCQk1MUVGQzFDRjE1MjRFNjI1
MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDQkI4MTIxMUFBMEY5NzAwMDZCMTk0MiAvKiBXS0J1bmRsZUZpbGVIYW5kbGVSZWYuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRDI1RjE3MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZy
YW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREZGN0I2RjFEQTRDRkFGMDA4MTQ2MTQgLyogV0tC
YWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGMDQ5RTYx
MUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzQ5ODYyRjEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNEVGMjExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGVJ
bml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YTlmN2JlMjNiZWE0MjVlZGMyY2JkNjkyMjM4M2M2ZTYw
OTVmMjQ2Li4wNjQ2NTVlYWI5OWQwMzQ1YzMxNTkwMmQ1ZDJlMTk5M2VlN2ZiM2I5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMTAtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBlcm1hbmVudC9pbW11dGFibGUgc3dpcGUgc25hcHNo
b3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NjU5MTczPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvU25hcHNob3RTdG9yZS5tbTogQWRkZWQuCisgICAgICAgICgtW1Nu
YXBzaG90VGVzdFdLV2ViVmlldyBpbml0XSk6CisgICAgICAgICgtW1NuYXBzaG90VGVzdFdLV2Vi
VmlldyBsb2FkUGFnZU5hbWVkOl0pOgorICAgICAgICAoaW1hZ2VzQXJlRXF1YWwpOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgZXhpc3RpbmcgYmFzaWMgc25hcHNob3R0
aW5nIGJlaGF2aW9yOgorCisgICAgICAgIC0gYSBiYWNrLWZvcndhcmQgaXRlbSBzaG91bGRuJ3Qg
aGF2ZSBhIHNuYXBzaG90CisgICAgICAgICAgdW50aWwgaXQgaXMgbmF2aWdhdGVkIGF3YXkgZnJv
bQorCisgICAgICAgIC0gY2F1c2luZyBhIGJhY2stZm9yd2FyZCBpdGVtIHRvIGZhbGwgb3V0IG9m
IHRoZQorICAgICAgICAgIGJhY2stZm9yd2FyZCBsaXN0IHNob3VsZCByZW1vdmUgdGhlIHNuYXBz
aG90CisKKyAgICAgICAgLSBjYWxsaW5nIHRoZSBleHBsaWNpdCBzbmFwc2hvdHRpbmcgU1BJLCB0
aGVuIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSBwYWdlLAorICAgICAgICAgIHNob3VsZCByZXN1
bHQgaW4gdGhlIHNuYXBzaG90IGJlaW5nIHJldGFrZW4KKworICAgICAgICBBbmQgZm9yIHRoZSBu
ZXcgcGVybWFuZW50IHNuYXBzaG90dGluZyBiZWhhdmlvcjoKKworICAgICAgICAtIGNhbGxpbmcg
dGhlIGV4cGxpY2l0IHBlcm1hbmVudCBzbmFwc2hvdHRpbmcgU1BJLCB0aGVuIG5hdmlnYXRpbmcg
YXdheQorICAgICAgICAgIGZyb20gdGhlIHBhZ2UsIHNob3VsZCByZXN1bHQgaW4gdGhlIHNuYXBz
aG90ICpub3QqIGJlaW5nIHJldGFrZW4KKwogMjAxNi0xMC0wNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTFBhcnNlciBzaG91bGQgbWF0
Y2ggVVJMOjpwYXJzZSBhbmQgb3RoZXIgYnJvd3NlcnMgd2hlbiBwYXJzaW5nIGEgVVJMIGNvbnRh
aW5pbmcgb25seSBzY2hlbWU6Ly8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjcwN2U4ODQ4
ZGZmYWMwNjE2NDcxY2Y5MWYzYjcwNzRmYjU5ZWUxYi4uODE4MmJmYjhlZjdlZmUyZTRkMzJiZTEy
M2FjZmM5Yzg5M2QxODY3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwLDYgKzYwLDcg
QEAKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1s
ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIu
aHRtbCAqLzsgfTsKIAkJMkRFNzFBRkUxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXpl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNzFB
RkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovOyB9OwogCQkyREU3MUIw
MDFENDlDM0VEMDA5MDQwOTQgLyogYmxpbmtpbmctZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNzFBRkYxRDQ5QzJGMDAwOTA0
MDk0IC8qIGJsaW5raW5nLWRpdi5odG1sICovOyB9OworCQkyREZGN0I2RDFEQTQ4N0FGMDA4MTQ2
MTQgLyogU25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1t
ICovOyB9OwogCQkyRTEzMUMxODFEODNBOThBMDAxQkEzNkMgLyogd2lkZS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8qIHdpZGUtYXV0b3Bs
YXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovOyB9OwogCQkyRTE0QTUyOTFEM0ZFOTZCMDAx
MEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTRBNTI4MUQzRkU4Qjgw
MDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CiAJCTJF
MUI3QjAwMUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGlu
Zy5odG1sICovOyB9OwpAQCAtNzg4LDYgKzc4OSw3IEBACiAJCTJERDdEM0FFMTc4MjI3QUMwMDI2
RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9m
LXRleHQtdmVydGljYWwtbHIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
RTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFuaW1hdGVkUmVzaXplLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREU3MUFGRjFENDlDMkYwMDA5MDQwOTQgLyogYmxpbmtpbmct
ZGl2Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYmxpbmtpbmctZGl2Lmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQg
LyogU25hcHNob3RTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMTMx
QzE3MUQ4M0E5N0UwMDFCQTM2QyAvKiB3aWRlLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3aWRlLWF1dG9wbGF5aW5nLXZpZGVv
LXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMTRBNTI4
MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1
OEI0IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkzLDYgKzEzOTUsNyBAQAogCQkJCUNEOUUyOTJC
MUM5MEE3MUYwMDBCQjgwMCAvKiBSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFjay5tbSAqLywK
IAkJCQkzN0JDQTYxQjFCNTk2QkE5MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0lu
TmV3V2luZG93QWN0aW9ucy5tbSAqLywKIAkJCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyog
U2hyaW5rVG9GaXQubW0gKi8sCisJCQkJMkRGRjdCNkMxREE0ODdBRjAwODE0NjE0IC8qIFNuYXBz
aG90U3RvcmUubW0gKi8sCiAJCQkJNTE1QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxv
YlRoZW5EZWxldGUubW0gKi8sCiAJCQkJN0NDM0UxRkExOTdFMjM0MTAwQkU2MjUyIC8qIFVzZXJD
b250ZW50Q29udHJvbGxlci5tbSAqLywKIAkJCQk3Qzg4MkUwMzFDODBDNjI0MDA2QkY3MzEgLyog
VXNlckNvbnRlbnRXb3JsZC5tbSAqLywKQEAgLTI0ODEsNiArMjQ4NCw3IEBACiAJCQkJN0NDRTdF
RDMxQTQxMUE3RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VERTFBNDExQTkyMDA0NDdDNEMgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUIwMUE0MTFBNDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAq
LywKKwkJCQkyREZGN0I2RDFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTVDNkU2NTQ0MUQ1Q0VGRDQwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjcxQTQxMUFGNjAwNDQ3QzRDIC8qIFVzZXJDb250
ZW50Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJEMUE0MTFCMTAwMDQ0
N0M0QyAvKiBVc2VyQ29udGVudFRlc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1NuYXBzaG90U3RvcmUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TbmFwc2hvdFN0b3JlLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZiYjZhMGIzN2ExZjA5ODczYzc4OWVkMjgwYzE3YTEwZjM5MTA1YTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TbmFw
c2hvdFN0b3JlLm1tCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5B
QkxFRCAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkphdmFTY3JpcHRUZXN0LmgiCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlld01hYy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OworCitAaW50ZXJmYWNlIE5TV2luZG93ICgpCistICh2b2lkKV9zZXRXaW5kb3dSZXNvbHV0aW9u
OihDR0Zsb2F0KXJlc29sdXRpb24gZGlzcGxheUlmQ2hhbmdlZDooQk9PTClkaXNwbGF5SWZDaGFu
Z2VkOworQGVuZAorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQorLSAoV0tQYWdlUmVmKV9wYWdl
Rm9yVGVzdGluZzsKK0BlbmQKKworQGludGVyZmFjZSBTbmFwc2hvdFRlc3RXS1dlYlZpZXcgOiBU
ZXN0V0tXZWJWaWV3CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNuYXBzaG90VGVzdFdLV2Vi
VmlldworCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgaWYgKHNlbGYpIHsKKyAg
ICAgICAgW3NlbGYgX3NldE92ZXJyaWRlRGV2aWNlU2NhbGVGYWN0b3I6MV07CisgICAgICAgIFtz
ZWxmIF9kaXNhYmxlQmFja0ZvcndhcmRTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nXTsKKyAg
ICAgICAgW3NlbGYgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6WUVTXTsK
KyAgICAgICAgW3NlbGYgX3NldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ6Tk9dOwor
CisgICAgICAgIFtzZWxmLndpbmRvdyBfc2V0V2luZG93UmVzb2x1dGlvbjoxIGRpc3BsYXlJZkNo
YW5nZWQ6WUVTXTsKKyAgICAgICAgW3NlbGYud2luZG93IG9yZGVyQmFjazpuaWxdOworICAgIH0K
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClsb2FkUGFnZU5hbWVkOihOU1N0cmluZyAq
KXBhZ2VOYW1lCit7CisgICAgW3NlbGYgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOnBhZ2VOYW1lIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXV07CisgICAgW3NlbGYgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworfQor
CitAZW5kCisKK3N0YXRpYyBib29sIGltYWdlc0FyZUVxdWFsKENHSW1hZ2VSZWYgZmlyc3QsIENH
SW1hZ2VSZWYgc2Vjb25kKQoreworICAgIFJldGFpblB0cjxOU0RhdGE+IGZpcnN0RGF0YSA9IGFk
b3B0TlMoKE5TRGF0YSAqKUNHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92
aWRlcihmaXJzdCkpKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBzZWNvbmREYXRhID0gYWRvcHRO
UygoTlNEYXRhICopQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVy
KHNlY29uZCkpKTsKKworICAgIHJldHVybiBbZmlyc3REYXRhIGlzRXF1YWxUbzpzZWNvbmREYXRh
LmdldCgpXTsKK30KKworVEVTVChTbmFwc2hvdFN0b3JlLCBTbmFwc2hvdFVwb25OYXZpZ2F0aW9u
KQoreworICAgIFJldGFpblB0cjxTbmFwc2hvdFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbU25hcHNob3RUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CisKKyAgICBbd2ViVmll
dyBsb2FkUGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICBSZXRhaW5QdHI8V0tCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBmaXJzdEl0ZW0gPSBbW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50
SXRlbV07CisKKyAgICBDR0ltYWdlUmVmIGltYWdlQmVmb3JlTmF2aWdhdGlvbiA9IFtmaXJzdEl0
ZW0gX3NuYXBzaG90Rm9yVGVzdGluZ107CisgICAgRVhQRUNUX05VTEwoaW1hZ2VCZWZvcmVOYXZp
Z2F0aW9uKTsKKworICAgIFt3ZWJWaWV3IGxvYWRQYWdlTmFtZWQ6QCJsb3RzLW9mLXRleHQiXTsK
KworICAgIC8vIEFmdGVyIG5hdmlnYXRpbmcsIHRoZSBmaXJzdCBpdGVtIHNob3VsZCBoYXZlIGEg
dmFsaWQgYmFjay1mb3J3YXJkIHNuYXBzaG90LgorICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZUFmdGVyTmF2aWdhdGlvbiA9IFtmaXJzdEl0ZW0gX3NuYXBzaG90Rm9yVGVzdGluZ107Cisg
ICAgRVhQRUNUX05PVF9OVUxMKGltYWdlQWZ0ZXJOYXZpZ2F0aW9uLmdldCgpKTsKKyAgICBFWFBF
Q1RfRVEoQ0dJbWFnZUdldFdpZHRoKGltYWdlQWZ0ZXJOYXZpZ2F0aW9uLmdldCgpKSwgKHVuc2ln
bmVkIGxvbmcpODAwKTsKK30KKworVEVTVChTbmFwc2hvdFN0b3JlLCBTbmFwc2hvdENsZWFyZWRX
aGVuSXRlbUlzUmVtb3ZlZCkKK3sKKyAgICBSZXRhaW5QdHI8U25hcHNob3RUZXN0V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1NuYXBzaG90VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0p
OworCisgICAgW3dlYlZpZXcgbG9hZFBhZ2VOYW1lZDpAInNpbXBsZSJdOworICAgIFt3ZWJWaWV3
IGxvYWRQYWdlTmFtZWQ6QCJsb3RzLW9mLXRleHQiXTsKKworICAgIFJldGFpblB0cjxXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0+IGl0ZW0gPSBbW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50
SXRlbV07CisKKyAgICBbd2ViVmlldyBsb2FkUGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICBF
WFBFQ1RfTk9UX05VTEwoW2l0ZW0gX3NuYXBzaG90Rm9yVGVzdGluZ10pOworCisgICAgW3dlYlZp
ZXcgZ29CYWNrXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CisgICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBsb2FkUGFnZU5hbWVkOkAibG90cy1v
Zi10ZXh0Il07CisKKyAgICAvLyBUaGUgb3JpZ2luYWwgc2Vjb25kIGl0ZW0gc2hvdWxkbid0IGhh
dmUgYW4gaW1hZ2UgYW55bW9yZSwgYmVjYXVzZSBpdCB3YXMgaW52YWxpZGF0ZWQKKyAgICAvLyBi
eSBuYXZpZ2F0aW5nIGJhY2sgcGFzdCBpdCBhbmQgdGhlbiBkb2luZyBhbm90aGVyIGxvYWQuCisg
ICAgRVhQRUNUX05VTEwoW2l0ZW0gX3NuYXBzaG90Rm9yVGVzdGluZ10pOworfQorCitURVNUKFNu
YXBzaG90U3RvcmUsIEV4cGxpY2l0U25hcHNob3RzQ2hhbmdlVXBvbk5hdmlnYXRpb24pCit7Cisg
ICAgUmV0YWluUHRyPFNuYXBzaG90VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tT
bmFwc2hvdFRlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRQ
YWdlTmFtZWQ6QCJsb3RzLW9mLXRleHQiXTsKKworICAgIFJldGFpblB0cjxXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0+IGZpcnN0SXRlbSA9IFtbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJ
dGVtXTsKKyAgICBbd2ViVmlldyBfc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOmZpcnN0
SXRlbS5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW5pdGlhbFNuYXBzaG90
ID0gW2ZpcnN0SXRlbSBfc25hcHNob3RGb3JUZXN0aW5nXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwo
aW5pdGlhbFNuYXBzaG90KTsKKworICAgIEVYUEVDVF9KU19FUShbd2ViVmlldyBfcGFnZUZvclRl
c3RpbmddLCAid2luZG93LnNjcm9sbFRvKDAsMTAwKSIsICJ1bmRlZmluZWQiKTsKKyAgICBbd2Vi
VmlldyBsb2FkUGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICAvLyBBZnRlciBuYXZpZ2F0aW5n
LCB0aGUgZmlyc3QgaXRlbSdzIHNuYXBzaG90IHNob3VsZCBjaGFuZ2UuCisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHNuYXBzaG90QWZ0ZXJOYXZpZ2F0aW9uID0gW2ZpcnN0SXRlbSBfc25hcHNo
b3RGb3JUZXN0aW5nXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoc25hcHNob3RBZnRlck5hdmlnYXRp
b24uZ2V0KCkpOworICAgIEVYUEVDVF9GQUxTRShpbWFnZXNBcmVFcXVhbChpbml0aWFsU25hcHNo
b3QuZ2V0KCksIHNuYXBzaG90QWZ0ZXJOYXZpZ2F0aW9uLmdldCgpKSk7Cit9CisKK1RFU1QoU25h
cHNob3RTdG9yZSwgUGVybWFuZW50U25hcHNob3RzRG9Ob3RDaGFuZ2VVcG9uTmF2aWdhdGlvbikK
K3sKKyAgICBSZXRhaW5QdHI8U25hcHNob3RUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1NuYXBzaG90VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOworCisgICAgW3dlYlZpZXcg
bG9hZFBhZ2VOYW1lZDpAImxvdHMtb2YtdGV4dCJdOworCisgICAgUmV0YWluUHRyPFdLQmFja0Zv
cndhcmRMaXN0SXRlbT4gZmlyc3RJdGVtID0gW1t3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdF0gY3Vy
cmVudEl0ZW1dOworICAgIFt3ZWJWaWV3IF9zYXZlUGVybWFuZW50QmFja0ZvcndhcmRTbmFwc2hv
dEZvckl0ZW06Zmlyc3RJdGVtLmdldCgpXTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bml0aWFsUGVybWFuZW50U25hcHNob3QgPSBbZmlyc3RJdGVtIF9zbmFwc2hvdEZvclRlc3Rpbmdd
OworICAgIEVYUEVDVF9OT1RfTlVMTChpbml0aWFsUGVybWFuZW50U25hcHNob3QpOworCisgICAg
RVhQRUNUX0pTX0VRKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10sICJ3aW5kb3cuc2Nyb2xsVG8o
MCwxMDApIiwgInVuZGVmaW5lZCIpOworICAgIFt3ZWJWaWV3IGxvYWRQYWdlTmFtZWQ6QCJzaW1w
bGUiXTsKKworICAgIC8vIEFmdGVyIG5hdmlnYXRpbmcsIHRoZSBmaXJzdCBpdGVtJ3Mgc25hcHNo
b3Qgc2hvdWxkIG5vdCBjaGFuZ2UsIGJlY2F1c2Ugd2Ugc2F2ZWQgdGhlCisgICAgLy8gaW5pdGlh
bCBzbmFwc2hvdCBhcyBwZXJtYW5lbnQuCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNuYXBz
aG90QWZ0ZXJOYXZpZ2F0aW9uID0gW2ZpcnN0SXRlbSBfc25hcHNob3RGb3JUZXN0aW5nXTsKKyAg
ICBFWFBFQ1RfTk9UX05VTEwoc25hcHNob3RBZnRlck5hdmlnYXRpb24uZ2V0KCkpOworICAgIEVY
UEVDVF9UUlVFKGltYWdlc0FyZUVxdWFsKGluaXRpYWxQZXJtYW5lbnRTbmFwc2hvdC5nZXQoKSwg
c25hcHNob3RBZnRlck5hdmlnYXRpb24uZ2V0KCkpKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVEICYmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290755</attachid>
            <date>2016-10-05 15:54:00 -0700</date>
            <delta_ts>2016-10-05 16:06:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162955-20161005155047.patch</filename>
            <type>text/plain</type>
            <size>20617</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmQ1ZmY5MmRmNmQ5NWQw
MmQ0ZWE0N2E1ZTQyMzJkMWFkM2JmYzc1Yi4uNmRiMTIwODM0ZjIwZjNjNTcxMjg1NTE3ODFiYzU3
OTU3YmRhYWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE2LTEwLTA1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEF2b2lkIGF1dG9t
YXRpY2FsbHkgcmUtdGFraW5nIHNuYXBzaG90cyBmb3IgYmFjay1mb3J3YXJkIGl0ZW1zIHRoYXQg
d2VyZSBuZXZlciBsb2FkZWQgaW50byB0aGUgdmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
NzY1OTE3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIGZvciBjbGllbnRzIHRvIGNvbnRyb2wgdGhlIHNuYXBzaG90IGZv
ciBiYWNrLWZvcndhcmQKKyAgICAgICAgaXRlbXMgdGhhdCBhcmUgcmVzdG9yZWQgZnJvbSBzZXNz
aW9uIHN0YXRlIHdpdGhvdXQgbmF2aWdhdGluZyB0byB0aGVtLAorICAgICAgICBieSBlbnN1cmlu
ZyB0aGF0IHdlIHdvbid0IHN0b21wIG9uIHRoZSBzbmFwc2hvdCB0aGF0IHRoZXkgZXhwbGljaXRs
eSB0YWtlLAorICAgICAgICB1bnRpbCBhIGxvYWQgb2NjdXJzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdDo6YWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Z29Ub0l0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dp
cGVHZXN0dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp0cmFja1N3
aXBlR2VzdHVyZSk6CisgICAgICAgIERpc2FtYmlndWF0ZSBleHBsaWNpdCBBUEktZHJpdmVuIHNu
YXBzaG90IHJlY29yZGluZyBmcm9tIGF1dG9tYXRpYywKKyAgICAgICAgbmF2aWdhdGlvbi1kcml2
ZW4gc25hcHNob3QgcmVjb3JkaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJk
U25hcHNob3RGb3JDdXJyZW50SXRlbSk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIHZlcnNpb24g
b2YgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCkgdGhhdCBkb2Vzbid0IHRha2UgYQorICAgICAg
ICBiYWNrLWZvcndhcmQgbGlzdCBpdGVtLCBhbmQgZ3JhYiB0aGUgY3VycmVudCBpdGVtIGF0IHRo
ZSBvbmUgcmVtYWluaW5nIGNhbGxlci4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjb3JkQXV0
b21hdGljTmF2aWdhdGlvblNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZWNvcmROYXZpZ2F0aW9uU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgUmVuYW1lIG1fc3VwcHJlc3NOYXZpZ2F0aW9uU25hcHNob3R0aW5n
IHRvIG1fc3VwcHJlc3NBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3R0aW5nLAorICAgICAgICBh
bmQgbWFrZSBpdCBiZSBvbmx5IGFib3V0IGF1dG9tYXRpYyAobmF2aWdhdGlvbi1kcml2ZW4pIHNu
YXBzaG90czsgaXQgd29uJ3QgaGF2ZQorICAgICAgICBhbnkgaW1wYWN0IG9uIGV4cGxpY2l0IHNu
YXBzaG90cyBmb3JjZWQgYnkgY2xpZW50cy4KKyAgICAgICAgCisgICAgICAgIFNldCBtX3N1cHBy
ZXNzQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90dGluZyB1bmNvbmRpdGlvbmFsbHkgd2hlbiBy
ZXN0b3JpbmcKKyAgICAgICAgZnJvbSBzZXNzaW9uIHN0YXRlLCBzbyB0aGF0IHdlIHdvbid0IHN0
YXJ0IGF1dG9tYXRpY2FsbHkgc25hcHNob3R0aW5nIHVudGlsCisgICAgICAgIHNvbWV0aGluZyBo
YXMgbG9hZGVkIGluIHRoZSB2aWV3LgorCisyMDE2LTEwLTA1ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gdGVzdCBW
aWV3U25hcHNob3RTdG9yZSBiZWhhdmlvcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMjkwOGZiOTEzOTM1NTMxMmQ3MzY4MDYyNDdjMmY0
Y2YyNDQ4MzYzYS4uYTdmZWQ1Mjc3OGI3YjUwN2EzZjVkMDVkZGQwOTMyNWZkMjVjOWIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzE4
NCw3ICszMTg0LDggQEAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3
U25hcHNob3QoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZv
ckN1cnJlbnRJdGVtKCkKIHsKLSAgICBtX3BhZ2UtPnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgp
OworICAgIGlmIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9wYWdlLT5iYWNrRm9y
d2FyZExpc3QoKS5jdXJyZW50SXRlbSgpKQorICAgICAgICBtX3BhZ2UtPnJlY29yZE5hdmlnYXRp
b25TbmFwc2hvdCgqaXRlbSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9yd2Fy
ZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAyYzcyNjBj
NjZhOWVlYmMwNzc4MzE4NzYwZGQxOTVlNGUxMDY5YTE0Li5mMmEyODk4OWIyMjM3OGQwMmVjOWI2
NTlhMjQ2ZWE3NWM2ZmViMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBuZXdJdGVtKQogICAgIFZlY3Rv
cjxSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IHJlbW92ZWRJdGVtczsKICAgICAKICAg
ICBpZiAobV9oYXNDdXJyZW50SW5kZXgpIHsKLSAgICAgICAgbV9wYWdlLT5yZWNvcmROYXZpZ2F0
aW9uU25hcHNob3QoKTsKKyAgICAgICAgbV9wYWdlLT5yZWNvcmRBdXRvbWF0aWNOYXZpZ2F0aW9u
U25hcHNob3QoKTsKIAogICAgICAgICAvLyBUb3NzIGV2ZXJ5dGhpbmcgaW4gdGhlIGZvcndhcmQg
bGlzdC4KICAgICAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudEluZGV4ICsgMTsK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBj
dXJyZW50SXRlbSA9IG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0uZ2V0KCk7CiAgICAgYm9vbCBz
aG91bGRLZWVwQ3VycmVudEl0ZW0gPSB0cnVlOwogICAgIGlmIChjdXJyZW50SXRlbSAhPSBpdGVt
KSB7Ci0gICAgICAgIG1fcGFnZS0+cmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCk7CisgICAgICAg
IG1fcGFnZS0+cmVjb3JkQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90KCk7CiAgICAgICAgIHNo
b3VsZEtlZXBDdXJyZW50SXRlbSA9IG1fcGFnZS0+c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2Fy
ZExpc3RJdGVtSW5MaXN0KG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0uZ2V0KCkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZWYxZTQ1
NGU2MzUxN2UzZjY2ZGRlMWQ4YmZkZTlmMDAyNmYxN2RmLi5iYWJjMDczYzcwM2Q4NTVhZDVhNTM2
ZTgzZDgzNTA1MmUwMzJmODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTE5MSwxNSArMTE5MSwxOCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudAog
ICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRv
bWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKQogeworICAgIGlmIChtX3N1cHByZXNzQXV0b21hdGlj
TmF2aWdhdGlvblNuYXBzaG90dGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KSkKICAgICAgICAgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCppdGVtKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiBpdGVtKQogewotICAgIGlmICghbV9zaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3Rz
IHx8IG1fc3VwcHJlc3NOYXZpZ2F0aW9uU25hcHNob3R0aW5nKQorICAgIGlmICghbV9zaG91bGRS
ZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTIzOTcsMTEgKzI0MDAsOSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQog
CiAgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lv
bihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV9wYWdlSUQpOwogCi0gICAgICAg
IGlmIChuYXZpZ2F0ZSkgewotICAgICAgICAgICAgLy8gVGhlIGJhY2sgLyBmb3J3YXJkIGxpc3Qg
d2FzIHJlc3RvcmVkIGZyb20gYSBzZXNzaW9uU3RhdGUgc28gd2UgZG9uJ3Qgd2FudCB0byBzbmFw
c2hvdCB0aGUgY3VycmVudAotICAgICAgICAgICAgLy8gcGFnZSB3aGVuIG5hdmlnYXRpbmcgYXdh
eS4gU3VwcHJlc3MgbmF2aWdhdGlvbiBzbmFwc2hvdHRpbmcgdW50aWwgdGhlIG5leHQgbG9hZCBo
YXMgY29tbWl0dGVkCi0gICAgICAgICAgICBtX3N1cHByZXNzTmF2aWdhdGlvblNuYXBzaG90dGlu
ZyA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhlIGJhY2sgLyBmb3J3YXJkIGxpc3Qg
d2FzIHJlc3RvcmVkIGZyb20gYSBzZXNzaW9uU3RhdGUgc28gd2UgZG9uJ3Qgd2FudCB0byBzbmFw
c2hvdCB0aGUgY3VycmVudAorICAgICAgICAvLyBwYWdlIHdoZW4gbmF2aWdhdGluZyBhd2F5LiBT
dXBwcmVzcyBuYXZpZ2F0aW9uIHNuYXBzaG90dGluZyB1bnRpbCB0aGUgbmV4dCBsb2FkIGhhcyBj
b21taXR0ZWQKKyAgICAgICAgbV9zdXBwcmVzc0F1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdHRp
bmcgPSB0cnVlOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBOYXZpZ2F0aW5nIHNob3VsZCBiZSBz
ZXBhcmF0ZSBmcm9tIHN0YXRlIHJlc3RvcmF0aW9uLgpAQCAtMzI3NSw3ICszMjc2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewog
ICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2ViQ2Vy
dGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlKTsKLSAgICAgICAgbV9zdXBwcmVzc05hdmln
YXRpb25TbmFwc2hvdHRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9zdXBwcmVzc0F1dG9tYXRpY05h
dmlnYXRpb25TbmFwc2hvdHRpbmcgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5z
ZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNv
bnRlbnQodHJhbnNhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMjA5YzkwYTIyZDU5Njc2YWRhYTAyYTVhZDM4NDc1ZDEwZjg5ODAxMC4uZjgxYmVl
YWI2YmIwODA0Y2Q1OTJmNzNmYjBjNjE4YTJlOGRlYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTAwMyw3ICsxMDAzLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzOyB9CiAgICAgdm9pZCBzZXRTaG91bGRSZWNv
cmROYXZpZ2F0aW9uU25hcHNob3RzKGJvb2wgc2hvdWxkUmVjb3JkU25hcHNob3RzKSB7IG1fc2hv
dWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyA9IHNob3VsZFJlY29yZFNuYXBzaG90czsgfQot
ICAgIHZvaWQgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCk7CisgICAgdm9pZCByZWNvcmRBdXRv
bWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsKICAgICB2b2lkIHJlY29yZE5hdmlnYXRpb25TbmFw
c2hvdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTE4NDMsNyArMTg0Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JEaWRVcGRh
dGVWaWV3U3RhdGU7CiAKICAgICBib29sIG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX3N1cHByZXNzTmF2aWdhdGlvblNuYXBzaG90dGluZyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3N1cHByZXNzQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90dGlu
ZyB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBtX3RlbXBvcmFyeVBERkZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQppbmRleCAxNGQ2NzIx
Njc5YmE4ZTQ0NjQ0MzAwNjNkNjYwZDgyMWRlNmQ1MWEzLi4zZDhmNzM2YTA1MjJhY2NhMTdkODRk
OGFlNDFlZmZiZDQ0YWMyMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMTU3LDcgKzE1Nyw3IEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0
aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0g
Vmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQ
cm94eS5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5yZWNv
cmRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsKIAogICAgIG1fd2ViUGFnZVByb3h5Rm9y
QmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVudFN3aXBlID0gbV9hbHRlcm5hdGVCYWNrRm9yd2FyZExp
c3RTb3VyY2VWaWV3LmdldCgpID8gbV9hbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VWaWV3
LmdldCgpLT5fcGFnZSA6ICZtX3dlYlBhZ2VQcm94eTsKICAgICBtX3dlYlBhZ2VQcm94eUZvckJh
Y2tGb3J3YXJkTGlzdEZvckN1cnJlbnRTd2lwZS0+bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQppbmRleCBkYzIxZDQzMzBhYTBkMmU1M2MxY2MwMzExM2U1YjQ3ZTUy
MWY2NmE3Li5lYWQ0Y2ExMTFjOWJlNTg1NzhmY2Q1ZTIxYmRlOWVkZmEwODI4Y2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
Ojp0cmFja1N3aXBlR2VzdHVyZShOU0V2ZW50ICpldmVudCwgU3dpcGVEaXJlY3Rpb24gZGlyCiAK
ICAgICBtX3BlbmRpbmdTd2lwZVRyYWNrZXIucmVzZXQoInN0YXJ0aW5nIHRvIHRyYWNrIHN3aXBl
Iik7CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoKTsKKyAg
ICBtX3dlYlBhZ2VQcm94eS5yZWNvcmRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsKIAog
ICAgIEJPT0wgc3dpcGluZ0xlZnQgPSBpc1BoeXNpY2FsbHlTd2lwaW5nTGVmdChkaXJlY3Rpb24p
OwogICAgIENHRmxvYXQgbWF4UHJvZ3Jlc3MgPSBzd2lwaW5nTGVmdCA/IDEgOiAwOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ0Y2NjNGRiNDc2
YTBlNjMwNDNhMjNmM2YzZTQzNzVkMzFhYjZjNmUuLjE4N2M1YTIxNzgxNTFkMDYzMmM3ZjAzMmY5
MDAyMTg3MjYxNjRiMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNi0xMC0wNSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBBdm9pZCBhdXRvbWF0aWNhbGx5IHJlLXRh
a2luZyBzbmFwc2hvdHMgZm9yIGJhY2stZm9yd2FyZCBpdGVtcyB0aGF0IHdlcmUgbmV2ZXIgbG9h
ZGVkIGludG8gdGhlIHZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2Mjk1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc2NTkxNzM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TbmFwc2hvdFN0b3JlLm1tOgorICAgICAgICAoLVtTbmFw
c2hvdFRlc3RXS1dlYlZpZXcgaW5pdF0pOgorICAgICAgICAoZm9yY2VSZXBhaW50Q2FsbGJhY2sp
OgorICAgICAgICAoLVtTbmFwc2hvdFRlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUZvcmNlUmVw
YWludF0pOgorICAgICAgICAoLVtTbmFwc2hvdFRlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZUFuZEZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAo
bWFrZVJlZFNxdWFyZVZpZXcpOgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgcmVzdG9yaW5nIHNl
c3Npb24gc3RhdGUgaW50byBhIHdlYiB2aWV3IHdpdGhvdXQgbmF2aWdhdGluZywKKyAgICAgICAg
dGhlbiBleHBsaWNpdGx5IHNuYXBzaG90dGluZyBhbmQgbmF2aWdhdGluZyBhd2F5LCBsZWF2ZXMg
dGhlIG9yaWdpbmFsIHNuYXBzaG90IGFsb25lLgorCisgICAgICAgIEFkanVzdCB0aGUgZXhpc3Rp
bmcgdGVzdCwgYXMgd2VsbCwgdG8gZW5zdXJlIHRoYXQgaXQgd2lsbCByZWxpYWJseSBmYWlsCisg
ICAgICAgIGlmIHRoZSBmZWF0dXJlIGlzIGJyb2tlbi4gVXNlIGFuIGV4cGxpY2l0bHkgYWRkZWQg
YW5kIHJlbW92ZWQgcmVkIHNxdWFyZQorICAgICAgICBpbnN0ZWFkIG9mIHNjcm9sbGluZywgYmVj
YXVzZSB3ZSBjYW4ndCBzY3JvbGwgaW4gdGhlIHJlc3RvcmUtd2l0aG91dC1uYXZpZ2F0aW5nIGNh
c2UuCisKKyAgICAgICAgU3RvcCB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIHdpbmRvdyBzY2FsZSwg
YmVjYXVzZSBpdCdzIG5vdCB3b3JraW5nICh3ZSdyZSBnZXR0aW5nIHBhcnRpYWwgc25hcHNob3Rz
KQorICAgICAgICBhbmQgaXNuJ3QgbmVjZXNzYXJ5OyBpbnN0ZWFkIGp1c3QgbXVsdGlwbHkgdGhl
IGV4cGVjdGVkIHZhbHVlIGJ5IHRoZSBwYWdlIHNjYWxlLgorCisgICAgICAgICgtW1NuYXBzaG90
VGVzdFdLV2ViVmlldyBsb2FkUGFnZU5hbWVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvbWFjL1Rlc3RXS1dlYlZpZXdNYWMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L21hYy9UZXN0V0tXZWJWaWV3TWFjLm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpdKToKKyAgICAgICAgUmVvcmdhbml6ZSB0byByZWR1
Y2UgZHVwbGljYXRpb24uCisKKzIwMTYtMTAtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0ZXN0IFZpZXdTbmFw
c2hvdFN0b3JlIGJlaGF2aW9ycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyOTgzCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL1NuYXBzaG90U3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9TbmFwc2hvdFN0b3JlLm1tCmluZGV4IDM4OTBkNDI0NWY3ODEyMWZj
ZmYzMTM5NzdiMmVhNjNiYmRiZjI3ZTcuLjIyOGU3NjFkY2M5YTRjMTkyNjA3ODQ3ZDkyZGEwYTE5
MjdlMWZmMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1NuYXBzaG90U3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvU25hcHNob3RTdG9yZS5tbQpAQCAtMjgsMjEgKzI4LDIwIEBACiAKICNpZiBXS19B
UElfRU5BQkxFRCAmJiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIkphdmFTY3JpcHRUZXN0Lmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlld01hYy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1BhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1BhZ2VQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi11c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKK3N0YXRpYyBib29sIGRpZEZvcmNlUmVwYWludDsKIAotQGludGVyZmFjZSBO
U1dpbmRvdyAoKQotLSAodm9pZClfc2V0V2luZG93UmVzb2x1dGlvbjooQ0dGbG9hdClyZXNvbHV0
aW9uIGRpc3BsYXlJZkNoYW5nZWQ6KEJPT0wpZGlzcGxheUlmQ2hhbmdlZDsKLUBlbmQKK3VzaW5n
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQogLSAo
V0tQYWdlUmVmKV9wYWdlRm9yVGVzdGluZzsKQEAgLTU4LDIxICs1NywzMyBAQCB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldOwogICAgIGlmIChzZWxmKSB7Ci0gICAgICAgIFtz
ZWxmIF9zZXRPdmVycmlkZURldmljZVNjYWxlRmFjdG9yOjFdOwogICAgICAgICBbc2VsZiBfZGlz
YWJsZUJhY2tGb3J3YXJkU25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZ107CiAgICAgICAgIFtz
ZWxmIHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOllFU107CiAgICAgICAg
IFtzZWxmIF9zZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkOk5PXTsKIAotICAgICAg
ICBbc2VsZi53aW5kb3cgX3NldFdpbmRvd1Jlc29sdXRpb246MSBkaXNwbGF5SWZDaGFuZ2VkOllF
U107CiAgICAgICAgIFtzZWxmLndpbmRvdyBvcmRlckJhY2s6bmlsXTsKICAgICB9CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpbG9hZFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFt
ZQorc3RhdGljIHZvaWQgZm9yY2VSZXBhaW50Q2FsbGJhY2soV0tFcnJvclJlZiBlcnJvciwgdm9p
ZCopCit7CisgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIGRpZEZvcmNlUmVwYWludCA9IHRy
dWU7Cit9CisKKy0gKHZvaWQpc3luY2hyb25vdXNseUZvcmNlUmVwYWludAoreworICAgIGRpZEZv
cmNlUmVwYWludCA9IGZhbHNlOworICAgIFdLUGFnZUZvcmNlUmVwYWludChbc2VsZiBfcGFnZUZv
clRlc3RpbmddLCAwLCBmb3JjZVJlcGFpbnRDYWxsYmFjayk7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRGb3JjZVJlcGFpbnQpOworfQorCistICh2b2lkKXN5bmNocm9ub3VzbHlM
b2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6KE5TU3RyaW5nICopdGVzdFBhZ2VOYW1lCiB7Ci0g
ICAgW3NlbGYgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOnBhZ2VOYW1lIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0gICAgW3Nl
bGYgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFtzZWxmIHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDp0ZXN0UGFnZU5hbWVdOworICAgIFtzZWxmIHN5bmNocm9u
b3VzbHlGb3JjZVJlcGFpbnRdOworICAgIFtbc2VsZiB3aW5kb3ddIGRpc3BsYXldOwogfQogCiBA
ZW5kCkBAIC04OSwzMSArMTAwLDMxIEBAIFRFU1QoU25hcHNob3RTdG9yZSwgU25hcHNob3RVcG9u
TmF2aWdhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8U25hcHNob3RUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1NuYXBzaG90VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOwogCi0g
ICAgW3dlYlZpZXcgbG9hZFBhZ2VOYW1lZDpAInNpbXBsZSJdOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6QCJzaW1wbGUiXTsKIAogICAgIFJl
dGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW0+IGZpcnN0SXRlbSA9IFtbd2ViVmlldyBiYWNr
Rm9yd2FyZExpc3RdIGN1cnJlbnRJdGVtXTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZUJlZm9yZU5hdmlnYXRpb24gPSBhZG9wdENGKFtmaXJzdEl0ZW0gX2NvcHlTbmFwc2hvdEZv
clRlc3RpbmddKTsKICAgICBFWFBFQ1RfTlVMTChpbWFnZUJlZm9yZU5hdmlnYXRpb24uZ2V0KCkp
OwogCi0gICAgW3dlYlZpZXcgbG9hZFBhZ2VOYW1lZDpAImxvdHMtb2YtdGV4dCJdOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6QCJsb3RzLW9m
LXRleHQiXTsKIAogICAgIC8vIEFmdGVyIG5hdmlnYXRpbmcsIHRoZSBmaXJzdCBpdGVtIHNob3Vs
ZCBoYXZlIGEgdmFsaWQgYmFjay1mb3J3YXJkIHNuYXBzaG90LgogICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZUFmdGVyTmF2aWdhdGlvbiA9IGFkb3B0Q0YoW2ZpcnN0SXRlbSBfY29weVNu
YXBzaG90Rm9yVGVzdGluZ10pOwogICAgIEVYUEVDVF9OT1RfTlVMTChpbWFnZUFmdGVyTmF2aWdh
dGlvbi5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKENHSW1hZ2VHZXRXaWR0aChpbWFnZUFmdGVyTmF2
aWdhdGlvbi5nZXQoKSksICh1bnNpZ25lZCBsb25nKTgwMCk7CisgICAgRVhQRUNUX0VRKENHSW1h
Z2VHZXRXaWR0aChpbWFnZUFmdGVyTmF2aWdhdGlvbi5nZXQoKSksICh1bnNpZ25lZCBsb25nKSg4
MDAgKiBbd2ViVmlldyB3aW5kb3ddLmJhY2tpbmdTY2FsZUZhY3RvcikpOwogfQogCiBURVNUKFNu
YXBzaG90U3RvcmUsIFNuYXBzaG90Q2xlYXJlZFdoZW5JdGVtSXNSZW1vdmVkKQogewogICAgIFJl
dGFpblB0cjxTbmFwc2hvdFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbU25hcHNo
b3RUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAKLSAgICBbd2ViVmlldyBsb2FkUGFnZU5h
bWVkOkAic2ltcGxlIl07Ci0gICAgW3dlYlZpZXcgbG9hZFBhZ2VOYW1lZDpAImxvdHMtb2YtdGV4
dCJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFp
bnQ6QCJzaW1wbGUiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlQW5k
Rm9yY2VSZXBhaW50OkAibG90cy1vZi10ZXh0Il07CiAKICAgICBSZXRhaW5QdHI8V0tCYWNrRm9y
d2FyZExpc3RJdGVtPiBpdGVtID0gW1t3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdF0gY3VycmVudEl0
ZW1dOwogCi0gICAgW3dlYlZpZXcgbG9hZFBhZ2VOYW1lZDpAInNpbXBsZSJdOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6QCJzaW1wbGUiXTsK
IAogICAgIEVYUEVDVF9OT1RfTlVMTChhZG9wdENGKFtpdGVtIF9jb3B5U25hcHNob3RGb3JUZXN0
aW5nXSkuZ2V0KCkpOwogCkBAIC0xMjUsMjcgKzEzNiwzOCBAQCBURVNUKFNuYXBzaG90U3RvcmUs
IFNuYXBzaG90Q2xlYXJlZFdoZW5JdGVtSXNSZW1vdmVkKQogICAgIC8vIFRoZSBvcmlnaW5hbCBz
ZWNvbmQgaXRlbSBpcyBzdGlsbCBpbiB0aGUgZm9yd2FyZCBsaXN0LCBhbmQgc2hvdWxkIHN0aWxs
IGhhdmUgYSBzbmFwc2hvdC4KICAgICBFWFBFQ1RfTk9UX05VTEwoYWRvcHRDRihbaXRlbSBfY29w
eVNuYXBzaG90Rm9yVGVzdGluZ10pLmdldCgpKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRQYWdlTmFt
ZWQ6QCJsb3RzLW9mLXRleHQiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlQW5kRm9yY2VSZXBhaW50OkAibG90cy1vZi10ZXh0Il07CiAKICAgICAvLyBUaGUgb3JpZ2lu
YWwgc2Vjb25kIGl0ZW0gc2hvdWxkbid0IGhhdmUgYW4gaW1hZ2UgYW55bW9yZSwgYmVjYXVzZSBp
dCB3YXMgaW52YWxpZGF0ZWQKICAgICAvLyBieSBuYXZpZ2F0aW5nIGJhY2sgcGFzdCBpdCBhbmQg
dGhlbiBkb2luZyBhbm90aGVyIGxvYWQuCiAgICAgRVhQRUNUX05VTEwoYWRvcHRDRihbaXRlbSBf
Y29weVNuYXBzaG90Rm9yVGVzdGluZ10pLmdldCgpKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxO
U1ZpZXc+IG1ha2VSZWRTcXVhcmVWaWV3KCkKK3sKKyAgICBSZXRhaW5QdHI8TlNCb3g+IHJlZFNx
dWFyZSA9IGFkb3B0TlMoW1tOU0JveCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDIwMCwgMjAwKV0pOworICAgIFtyZWRTcXVhcmUgc2V0Qm94VHlwZTpOU0JveEN1c3RvbV07
CisgICAgW3JlZFNxdWFyZSBzZXRGaWxsQ29sb3I6W05TQ29sb3IgcmVkQ29sb3JdXTsKKyAgICBy
ZXR1cm4gcmVkU3F1YXJlOworfQorCiBURVNUKFNuYXBzaG90U3RvcmUsIEV4cGxpY2l0U25hcHNo
b3RzQ2hhbmdlVXBvbk5hdmlnYXRpb24pCiB7CiAgICAgUmV0YWluUHRyPFNuYXBzaG90VGVzdFdL
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tTbmFwc2hvdFRlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRdKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRQYWdlTmFtZWQ6QCJsb3RzLW9mLXRleHQiXTsK
KyAgICBSZXRhaW5QdHI8TlNWaWV3PiByZWRTcXVhcmUgPSBtYWtlUmVkU3F1YXJlVmlldygpOwor
ICAgIFtbd2ViVmlldyBzdXBlcnZpZXddIGFkZFN1YnZpZXc6cmVkU3F1YXJlLmdldCgpXTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6QCJs
b3RzLW9mLXRleHQiXTsKIAogICAgIFJldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW0+IGZp
cnN0SXRlbSA9IFtbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJdGVtXTsKICAgICBb
d2ViVmlldyBfc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOmZpcnN0SXRlbS5nZXQoKV07
CisgICAgW3JlZFNxdWFyZSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbml0aWFsU25hcHNob3QgPSBhZG9wdENGKFtmaXJzdEl0ZW0gX2NvcHlTbmFw
c2hvdEZvclRlc3RpbmddKTsKICAgICBFWFBFQ1RfTk9UX05VTEwoaW5pdGlhbFNuYXBzaG90KTsK
IAotICAgIEVYUEVDVF9KU19FUShbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddLCAid2luZG93LnNj
cm9sbFRvKDAsMTAwKSIsICJ1bmRlZmluZWQiKTsKLSAgICBbd2ViVmlldyBsb2FkUGFnZU5hbWVk
OkAic2ltcGxlIl07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZUFuZEZv
cmNlUmVwYWludDpAInNpbXBsZSJdOwogCiAgICAgLy8gQWZ0ZXIgbmF2aWdhdGluZywgdGhlIGZp
cnN0IGl0ZW0ncyBzbmFwc2hvdCBzaG91bGQgY2hhbmdlLgogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBzbmFwc2hvdEFmdGVyTmF2aWdhdGlvbiA9IGFkb3B0Q0YoW2ZpcnN0SXRlbSBfY29weVNu
YXBzaG90Rm9yVGVzdGluZ10pOwpAQCAtMTUzLDQgKzE3NSwzNCBAQCBURVNUKFNuYXBzaG90U3Rv
cmUsIEV4cGxpY2l0U25hcHNob3RzQ2hhbmdlVXBvbk5hdmlnYXRpb24pCiAgICAgRVhQRUNUX0ZB
TFNFKGltYWdlc0FyZUVxdWFsKGluaXRpYWxTbmFwc2hvdC5nZXQoKSwgc25hcHNob3RBZnRlck5h
dmlnYXRpb24uZ2V0KCkpKTsKIH0KIAorVEVTVChTbmFwc2hvdFN0b3JlLCBTbmFwc2hvdHNGb3JO
ZXZlckxvYWRlZFBhZ2VzRG9Ob3RDaGFuZ2VVcG9uTmF2aWdhdGlvbikKK3sKKyAgICBSZXRhaW5Q
dHI8U25hcHNob3RUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1NuYXBzaG90VGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOworCisgICAgUmV0YWluUHRyPE5TVmlldz4gcmVkU3F1
YXJlID0gbWFrZVJlZFNxdWFyZVZpZXcoKTsKKyAgICBbW3dlYlZpZXcgc3VwZXJ2aWV3XSBhZGRT
dWJ2aWV3OnJlZFNxdWFyZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlQW5kRm9yY2VSZXBhaW50OkAic2ltcGxlIl07CisKKyAgICBXS1JldGFpblB0cjxX
S1Nlc3Npb25TdGF0ZVJlZj4gc2Vzc2lvblN0YXRlID0gYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1Nl
c3Npb25TdGF0ZVJlZj4oV0tQYWdlQ29weVNlc3Npb25TdGF0ZShbd2ViVmlldyBfcGFnZUZvclRl
c3RpbmddLCBudWxscHRyLCBudWxscHRyKSkpOworICAgIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24oW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSwgc2Vzc2lv
blN0YXRlLmdldCgpKTsKKworICAgIFJldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW0+IGZp
cnN0SXRlbSA9IFtbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJdGVtXTsKKyAgICBb
d2ViVmlldyBfc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOmZpcnN0SXRlbS5nZXQoKV07
CisgICAgW3JlZFNxdWFyZSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VBbmRGb3JjZVJlcGFpbnQ6QCJsb3RzLW9mLXRleHQiXTsK
KworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbml0aWFsU25hcHNob3QgPSBhZG9wdENGKFtm
aXJzdEl0ZW0gX2NvcHlTbmFwc2hvdEZvclRlc3RpbmddKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwo
aW5pdGlhbFNuYXBzaG90KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VBbmRGb3JjZVJlcGFpbnQ6QCJzaW1wbGUiXTsKKworICAgIC8vIEFmdGVyIG5hdmlnYXRpbmcs
IHRoZSBmaXJzdCBpdGVtJ3Mgc25hcHNob3Qgc2hvdWxkIG5vdCBjaGFuZ2UsIGJlY2F1c2UgaXQg
d2FzCisgICAgLy8gbmV2ZXIgbG9hZGVkIGludG8gdGhlIHZpZXcuCisgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHNuYXBzaG90QWZ0ZXJOYXZpZ2F0aW9uID0gYWRvcHRDRihbZmlyc3RJdGVtIF9j
b3B5U25hcHNob3RGb3JUZXN0aW5nXSk7CisgICAgRVhQRUNUX05PVF9OVUxMKHNuYXBzaG90QWZ0
ZXJOYXZpZ2F0aW9uLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShpbWFnZXNBcmVFcXVhbChpbml0
aWFsU25hcHNob3QuZ2V0KCksIHNuYXBzaG90QWZ0ZXJOYXZpZ2F0aW9uLmdldCgpKSk7Cit9CisK
ICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0V0tXZWJWaWV3TWFjLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9UZXN0V0tXZWJWaWV3TWFjLmgKaW5kZXggNDg4YzhmZjQ2MGIzMGYyNGFjYTE5
ZTAwY2YwMTUzOTYzODIzOTc5My4uNDVjY2FiZDAzNzUyMTg2ZWY5NzE5YzkxNWFhNjQ4MmNiODIw
ZDA4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFdLV2ViVmlld01h
Yy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RXS1dlYlZpZXdNYWMuaApAQCAt
MzksNiArMzksNyBAQAogLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNp
bXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKIC0gKHZvaWQpcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb247CiAtICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBh
Z2VOYW1lOworLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5n
ICopcGFnZU5hbWU7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyOwogLSAo
TlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dDsKIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RXS1dlYlZpZXdNYWMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0V0tXZWJWaWV3TWFjLm1tCmluZGV4IDAwZDIzMzM5MTg5Y2M5
NGU3NzJhZjFmYTkyZDNkMTU1OTI5MmU5M2YuLjFhNjY2NWJmMmJiODYwZTFlOGQyZGFlZDk2Yzk5
ZTljNjlhNmM2MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RXS1dl
YlZpZXdNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFdLV2ViVmlld01h
Yy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0o
TUFDKQogCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJVdGls
aXRpZXMuaCIKIAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgpAQCAtMTg0LDYgKzE4NSwxMiBA
QCBOU0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNsaWNrQXNzb2NpYXRlZEV2ZW50c01hc2so
aWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgW3NlbGYgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiB9CiAK
Ky0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VO
YW1lCit7CisgICAgW3NlbGYgbG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOworICAgIFtzZWxm
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKK30KKwogLSAodm9pZCl0eXBlQ2hh
cmFjdGVyOihjaGFyKWNoYXJhY3RlciB7CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlckFzU3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlYyIgLCBjaGFyYWN0ZXJdOwogI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCg==
</data>
<flag name="review"
          id="313916"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>