<?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>240053</bug_id>
          
          <creation_ts>2022-05-03 21:28:02 -0700</creation_ts>
          <short_desc>Improve logging of display list items in IPC messages</short_desc>
          <delta_ts>2022-05-04 19:39:14 -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>WebKit Process Model</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>heycam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1866363</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-03 21:28:02 -0700</bug_when>
    <thetext>Improve logging of display list items in IPC messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866364</commentid>
    <comment_count>1</comment_count>
      <attachid>458771</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-03 21:29:46 -0700</bug_when>
    <thetext>Created attachment 458771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866535</commentid>
    <comment_count>2</comment_count>
      <attachid>458811</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-04 10:59:03 -0700</bug_when>
    <thetext>Created attachment 458811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866556</commentid>
    <comment_count>3</comment_count>
      <attachid>458818</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-04 12:04:45 -0700</bug_when>
    <thetext>Created attachment 458818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866707</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-04 19:38:58 -0700</bug_when>
    <thetext>Committed r293814 (250287@main): &lt;https://commits.webkit.org/250287@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458818.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866708</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-04 19:39:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/92769419&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458771</attachid>
            <date>2022-05-03 21:29:46 -0700</date>
            <delta_ts>2022-05-03 23:48:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240053-20220503212945.patch</filename>
            <type>text/plain</type>
            <size>39964</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU1Y2M2YTkzNjE4Zjlh
MDA0ODAzOGY0NWVlOWU4M2U1Mzk2NjA3NS4uMDZlYmJlNzI4Y2EzZTEzZjczNmYwMzcwYjM1ZjMy
MWIyMWVlMGZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTA1LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgbG9n
Z2luZyBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgaW4gSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwNTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciBmb3IgSVBDIGFyZ3Vt
ZW50cyB0byBzaG93IHVwIGluIElQQ01lc3NhZ2VzIGxvZ2dpbmcsIHRoZSBzdHJlYW0gb3BlcmF0
b3JzCisgICAgICAgIGZvciBkaXNwbGF5IGxpc3QgaXRlbXMgaGF2ZSB0byBiZSB2aXNpYmxlIHRv
IFdlYktpdDIgY29kZS4gU28gZXhwb3J0IHRoZW0gYWxsIGZyb20KKyAgICAgICAgV2ViQ29yZSwg
YnV0IG9ubHkgaWYgIUxPR19ESVNBQkxFRCwgdG8gYXZvaWQgY29kZSBibG9hdC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aDo6YXBwbHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisKIDIwMjItMDUtMDIg
IE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nzb21dIEVu
dW1lcmF0ZSBhbGwgbG9naWNhbCBsb25naGFuZHMgaW4gdGhlIGNvbXB1dGVkIHN0eWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGNmNWYwMzUxYmQ1N2Jk
NTA4MjA4YWQxNjljZTAzNDYxZTg5YmViZmQuLmFhMzVlMDRlMTU3ZDljNThjMjk1Njk0MDI3ZDZm
NzQ1NDVlZmYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFz
aC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShPUEVO
VFlQRV9WRVJUSUNBTCkKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgpAQCAtNzEw
LDQgKzcxMSwxMiBAQCBjb25zdCBQYXRoJiBGb250OjpwYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgcmV0dXJuICptX2dseXBoUGF0aE1hcC5leGlzdGluZ01ldHJpY3NGb3JHbHlw
aChnbHlwaCk7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGb250JiBmb250KQoreworICAgIHRzIDw8IGZvbnQuZGVz
Y3JpcHRpb24oKTsKKyAgICByZXR1cm4gdHM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGI4OTNi
MzgwMWJiMDUzMjBkNDVmMmEzOWYwOGJmYzFkODQzODU2ZTQuLmI1MDQxNDU4NGU4Nzg0Y2FjNTQ0
YmQ5ZjhlYmRhY2NlODkzMzk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8dXNwMTAuaD4KICNlbmRpZgogCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udENhY2hlOwpAQCAtMzkzLDYgKzM5NywxMCBAQCBBTFdBWVNfSU5MSU5F
IGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgsIFN5bnRoZXRpY0JvbGRJbmNs
dXNpb24gU3ludAogICAgIHJldHVybiB3aWR0aCArIChTeW50aGV0aWNCb2xkSW5jbHVzaW9uID09
IFN5bnRoZXRpY0JvbGRJbmNsdXNpb246OkluY29ycG9yYXRlID8gc3ludGhldGljQm9sZE9mZnNl
dCgpIDogMCk7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitXRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGb250Jik7CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0YTYxOTAxOWUzMjM1MWVjNTk2Nzg3ZGVmNThiZTM3OGFk
ODViZTQ4Li5lYmRjMTAzNGIxMTIwZGFjMzM1MDBjNTc4NTkyYTU2M2NkM2M5ZTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC01OSw5NSArNTksNDEgQEAgdm9pZCBU
cmFuc2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250
ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCi17Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJ4IiwgaXRlbS54KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgieSIsIGl0ZW0u
eSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBSb3RhdGU6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnJvdGF0ZShtX2FuZ2xlKTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFJvdGF0ZSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImFuZ2xlIiwgaXRlbS5hbmds
ZSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsKIH0K
IAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNj
YWxlJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic2l6ZSIsIGl0ZW0uYW1vdW50KCkp
OwotCi0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldENUTTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuc2V0Q1RNKG1fdHJhbnNmb3JtKTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldENUTSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBpdGVtLnRy
YW5zZm9ybSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBDb25jYXRlbmF0ZUNUTTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuY29u
Y2F0Q1RNKG1fdHJhbnNmb3JtKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQotewotICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7Ci0KLSAgICByZXR1cm4gdHM7Ci19
Ci0KIHZvaWQgU2V0SW5saW5lRmlsbENvbG9yOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IoKSk7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJbmxp
bmVGaWxsQ29sb3ImIHN0YXRlKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0
ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0SW5saW5lU3Ryb2tlQ29s
b3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKGNvbG9yKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lU3Ryb2tlQ29sb3ImIHN0YXRlKQot
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigpKTsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KIHZvaWQgU2V0U3Ryb2tlVGhpY2tuZXNzOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MobV90
aGlja25lc3MpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKLXsKLSAgICB0cy5kdW1wUHJv
cGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7Ci19
Ci0KIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiAgICAgOiBtX3N0YXRlKHN0YXRlKQogewpAQCAtMTU4LDU3ICsxMDQsMjYgQEAgdm9pZCBTZXRT
dGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQudXBkYXRl
U3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnN0YXRl
KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldExpbmVDYXA6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldExpbmVDYXAobV9saW5l
Q2FwKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXApCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJsaW5l
LWNhcCIsIGxpbmVDYXAubGluZUNhcCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0
TGluZURhc2g6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBj
b250ZXh0LnNldExpbmVEYXNoKG1fZGFzaEFycmF5LCBtX2Rhc2hPZmZzZXQpOwogfQogCi1zdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZURh
c2gmIGxpbmVEYXNoKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVE
YXNoLmRhc2hBcnJheSgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGlu
ZURhc2guZGFzaE9mZnNldCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0TGluZUpv
aW46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0
LnNldExpbmVKb2luKG1fbGluZUpvaW4pOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQotewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgibGluZS1qb2luIiwgbGluZUpvaW4ubGluZUpvaW4oKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiB2b2lkIFNldE1pdGVyTGltaXQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldE1pdGVyTGltaXQobV9taXRlckxp
bWl0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJMaW1pdCgpKTsKLSAgICByZXR1cm4gdHM7
Ci19Ci0KIHZvaWQgQ2xlYXJTaGFkb3c6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CkBAIC0yMTksMjMgKzEzNCwxMSBA
QCB2b2lkIENsaXA6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LmNsaXAobV9yZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBDbGlwT3V0
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5j
bGlwT3V0KG1fcmVjdCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIE5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgQ2xpcFRvSW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDYsMzYgKzE0OSwxNiBA
QCB2b2lkIENsaXBUb0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbQogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRpb25SZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVt
KQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVt
LmltYWdlQnVmZmVySWRlbnRpZmllcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVj
dCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBD
bGlwT3V0VG9QYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29udGV4dC5jbGlwT3V0KG1fcGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVtKQotewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7Ci19
Ci0KIHZvaWQgQ2xpcFBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKICAgICBjb250ZXh0LmNsaXBQYXRoKG1fcGF0aCwgbV93aW5kUnVsZSk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYg
aXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUiLCBpdGVtLndpbmRSdWxlKCkpOwotICAgIHJldHVy
biB0czsKLX0KLQogRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OkRyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZp
bHRlcikKICAgICA6IG1fc291cmNlSW1hZ2VJZGVudGlmaWVyKHNvdXJjZUltYWdlSWRlbnRpZmll
cikKICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKQEAgLTI5MywxMyAr
MTc2LDYgQEAgdm9pZCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBJbWFnZUJ1ZmZlciogc291cmMKICAgICBjb250ZXh0LmRyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBtX3NvdXJjZUltYWdlUmVjdCwgbV9maWx0ZXIsIHJl
c3VsdHMpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlm
aWVyKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBpdGVtLnNv
dXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdHbHlwaHM6OkRyYXdH
bHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBWZWN0b3I8
R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5j
ZSwgMTI4PiYmIGFkdmFuY2VzLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRQ
b2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAg
OiBtX2ZvbnRJZGVudGlmaWVyKGZvbnRJZGVudGlmaWVyKQogICAgICwgbV9nbHlwaHMoV1RGTW92
ZShnbHlwaHMpKQpAQCAtMzQ2LDE2ICsyMjIsNiBAQCB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVC
b3VuZHMoY29uc3QgRm9udCYgZm9udCkKICAgICB9CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtKQotewotICAg
IC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCi0gICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1h
bmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5jaG9y
LXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxlbmd0
aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNjYsMTQgKzIz
Miw2IEBAIHZvaWQgRHJhd0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnCiAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7
CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1i
dWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKLSAgICB0cy5kdW1w
UHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVy
biB0czsKLX0KLQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0zODQsMjcgKzI0MiwxMSBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVj
dCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQotewotICAg
IC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCi0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1p
ZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVz
dC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2
b2lkIERyYXdTeXN0ZW1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewogICAgIGNvbnRleHQuZHJhd1N5c3RlbUltYWdlKG1fc3lzdGVtSW1hZ2UsIG1fZGVzdGlu
YXRpb25SZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYgaXRlbSkKLXsKLSAgICAvLyBGSVhNRTogZHVt
cCBtb3JlIHN0dWZmLgotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRl
c3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdQYXR0ZXJuOjpEcmF3
UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogICAgIDogbV9pbWFnZUlkZW50aWZpZXIoaW1hZ2VJZGVudGlmaWVyKQogICAgICwg
bV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKQEAgLTQzNiwyOSArMjc4LDExIEBAIHZvaWQgRHJhd1Bh
dHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU291cmNlSW1hZ2UmIHNvdXJj
ZUltYWdlKSBjb25zCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRl
bSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdl
SWRlbnRpZmllcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwg
aXRlbS5wYXR0ZXJuVHJhbnNmb3JtKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0
IiwgaXRlbS50aWxlUmVjdCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0
ZW0uZGVzdFJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2Uo
KSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAg
IHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3UmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd1JlY3QobV9yZWN0LCBtX2JvcmRlclRo
aWNrbmVzcyk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3Qi
LCBpdGVtLnJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXItdGhpY2tuZXNzIiwg
aXRlbS5ib3JkZXJUaGlja25lc3MoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kczsKQEAgLTQ3MSwxMyArMjk1LDYgQEAg
dm9pZCBEcmF3TGluZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAg
IGNvbnRleHQuZHJhd0xpbmUobV9wb2ludDEsIG1fcG9pbnQyKTsKIH0KIAotc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQot
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMSIsIGl0ZW0ucG9pbnQxKCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgicG9pbnQtMiIsIGl0ZW0ucG9pbnQyKCkpOwotICAgIHJldHVybiB0czsK
LX0KLQogRHJhd0xpbmVzRm9yVGV4dDo6RHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50
JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0aGlj
a25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJs
ZUxpbmVzLCBTdHJva2VTdHlsZSBzdHlsZSkKICAgICA6IG1fYmxvY2tMb2NhdGlvbihibG9ja0xv
Y2F0aW9uKQogICAgICwgbV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKQEAgLTUwNiwxOSArMzIz
LDYgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xp
bmVzRm9yVGV4dCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImJsb2NrLWxvY2F0aW9u
IiwgaXRlbS5ibG9ja0xvY2F0aW9uKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgibG9jYWwtYW5j
aG9yIiwgaXRlbS5sb2NhbEFuY2hvcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50Iiwg
aXRlbS5wb2ludCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0udGhp
Y2tuZXNzKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5l
cygpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRocyIsIGl0ZW0ud2lkdGhzKCkpOwotICAg
IHRzLmR1bXBQcm9wZXJ0eSgiaXMtcHJpbnRpbmciLCBpdGVtLmlzUHJpbnRpbmcoKSk7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJkb3VibGUiLCBpdGVtLmRvdWJsZUxpbmVzKCkpOwotICAgIHJldHVy
biB0czsKLX0KLQogdm9pZCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5kcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyKG1fcmVjdCwgewpAQCAtNTMyLDM0ICszMzYsMTYgQEAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ28KICAgICByZXR1cm4gbV9yZWN0OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciYg
aXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiB2b2lkIERyYXdFbGxpcHNlOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtX3JlY3QpOwogfQog
Ci1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0VsbGlwc2UmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0
KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd1BhdGgobV9wYXRoKTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERyYXdQYXRoJikKLXsKLSAgICAvLyBGSVhNRTogYWRkIGxvZ2dpbmcgZm9yIHBhdGhzLgotICAg
IHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3Rm9jdXNSaW5nUGF0aDo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd0ZvY3VzUmluZyhtX3Bh
dGgsIG1fd2lkdGgsIG1fb2Zmc2V0LCBtX2NvbG9yKTsKQEAgLTU3MiwxNSArMzU4LDYgQEAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0
aCYgaXRlbSkKLXsKLS8vICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsg
Ly8gRklYTUU6IGFkZCBsb2dnaW5nIGZvciBwYXRocy4KLSAgICB0cy5kdW1wUHJvcGVydHkoIndp
ZHRoIiwgaXRlbS53aWR0aCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0u
b2Zmc2V0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwot
ICAgIHJldHVybiB0czsKLX0KLQogRHJhd0ZvY3VzUmluZ1JlY3RzOjpEcmF3Rm9jdXNSaW5nUmVj
dHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zm
c2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgOiBtX3JlY3RzKHJlY3RzKQogICAgICwgbV93
aWR0aCh3aWR0aCkKQEAgLTYwMywzOCArMzgwLDE2IEBAIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRlbSkKLXsKLSAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3RzIiwgaXRlbS5yZWN0cygpKTsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIs
IGl0ZW0ub2Zmc2V0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9y
KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBGaWxsUmVjdDo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0KTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZpbGxSZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVj
dCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmlsbFJlY3RXaXRoQ29sb3I6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxSZWN0
KG1fcmVjdCwgbV9jb2xvcik7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYgaXRlbSkKLXsKLSAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJj
b2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBGaWxsUmVjdFdpdGhH
cmFkaWVudDo6RmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFk
aWVudCYgZ3JhZGllbnQpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAsIG1fZ3JhZGllbnQoZ3Jh
ZGllbnQpCkBAIC02NDYsNTMgKzQwMSwyMSBAQCB2b2lkIEZpbGxSZWN0V2l0aEdyYWRpZW50Ojph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5maWxsUmVj
dChtX3JlY3QsIG1fZ3JhZGllbnQuZ2V0KCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0p
Ci17Ci0gICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KLSAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxDb21wb3Np
dGVkUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNv
bnRleHQuZmlsbFJlY3QobV9yZWN0LCBtX2NvbG9yLCBtX29wLCBtX2JsZW5kTW9kZSk7CiB9CiAK
LXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
Q29tcG9zaXRlZFJlY3QmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRl
bS5yZWN0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlvbiIsIGl0ZW0uY29tcG9zaXRl
T3BlcmF0b3IoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVu
ZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxSb3VuZGVkUmVjdDo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KG1fcmVjdCwgbV9jb2xvciwgbV9ibGVuZE1vZGUpOwogfQogCi1zdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJvdW5kZWRSZWN0
JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3Qo
KSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJu
IHRzOwotfQotCiB2b2lkIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVk
SG9sZShtX3JlY3QsIG1fcm91bmRlZEhvbGVSZWN0LCBtX2NvbG9yKTsKIH0KIAotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVj
dCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJvdW5kZWQtaG9sZS1yZWN0IiwgaXRlbS5yb3Vu
ZGVkSG9sZVJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3Io
KSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAK
IHZvaWQgRmlsbExpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAg
LTcwMCw2OSArNDIzLDMzIEBAIHZvaWQgRmlsbExpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsTGluZSYg
aXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxBcmM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBp
dGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmlsbFF1YWRDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxR
dWFkQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBGaWxsQmV6aWVyQ3VydmU6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKHBh
dGgoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJw
YXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQotCi12b2lkIEZpbGxQYXRoOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CisjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisK
K3ZvaWQgRmlsbFBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRlbSkKLXsKLSAgICB0
cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQot
CiB2b2lkIEZpbGxFbGxpcHNlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CiB7CiAgICAgY29udGV4dC5maWxsRWxsaXBzZShtX3JlY3QpOwogfQogCi1zdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0p
Ci17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVy
biB0czsKLX0KLQogI2lmIEVOQUJMRShWSURFTykKIFBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRG
cmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pCiAgICAgOiBtX2lkZW50aWZpZXIocGxheWVyLmlkZW50aWZpZXIoKSkKQEAgLTc3Niwx
MSArNDYzLDYgQEAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBQYWludEZyYW1lRm9yTWVk
aWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJk
ZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQogI2Vu
ZGlmCiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdApAQCAtNzk1LDEzICs0NzcsNiBAQCB2b2lkIFN0
cm9rZVJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250
ZXh0LnN0cm9rZVJlY3QobV9yZWN0LCBtX2xpbmVXaWR0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQot
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICB0cy5kdW1w
UHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7
Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBD
R1BhdGhCeVN0cm9raW5nUGF0aCgpLgpAQCAtODE3LDEyICs0OTIsNiBAQCB2b2lkIFN0cm9rZVBh
dGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0
cm9rZVBhdGgobV9wYXRoKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBj
b250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpAQCAtODM3LDEyICs1MDYsNiBAQCB2b2lkIFN0cm9r
ZUVsbGlwc2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250
ZXh0LnN0cm9rZUVsbGlwc2UobV9yZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCi17Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0K
LQogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUxpbmU6OmxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VUaGlj
a25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpAQCAtODY1LDEzICs1MjgsNiBAQCB2
b2lkIFN0cm9rZUxpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAg
ICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQotewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0
eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiAjaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VBcmM6Omxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTg4OSwx
MiArNTQ1LDYgQEAgdm9pZCBTdHJva2VBcmM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCgpKTsKIH0KIAotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRl
bSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUXVhZEN1cnZlOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3Jy
ZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgpAQCAtOTEwLDEyICs1NjAsNiBAQCB2
b2lkIFN0cm9rZVF1YWRDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVt
KQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VCZXppZXJDdXJ2ZTo6
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ugc3Ryb2tlIHRoaWNrbmVzcyBpbnRvIGFjY291bnQgY29y
cmVjdGx5LCB2aWEgQ0dQYXRoQnlTdHJva2luZ1BhdGgoKS4KQEAgLTkzMSwxMiArNTc1LDYgQEAg
dm9pZCBTdHJva2VCZXppZXJDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUm
IGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAg
IHJldHVybiB0czsKLX0KLQogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogCiB2
b2lkIENsZWFyUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAt
OTQ0LDIzICs1ODIsMTEgQEAgdm9pZCBDbGVhclJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmNsZWFyUmVjdChtX3JlY3QpOwogfQogCi1zdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0
JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgQmVnaW5UcmFuc3BhcmVuY3lMYXllcjo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihtX29wYWNpdHkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSkKLXsK
LSAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNpdHkiLCBpdGVtLm9wYWNpdHkoKSk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCiB2b2lkIEVuZFRyYW5zcGFyZW5jeUxheWVyOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRleHQuaXNJblRyYW5zcGFyZW5j
eUxheWVyKCkpCkBAIC05ODUsMjMgKzYxMSwxMiBAQCB2b2lkIEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IobV9zY2FsZUZhY3Rvcik7CiB9CiAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNjYWxlRmFj
dG9yJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic2NhbGUtZmFjdG9yIiwgaXRlbS5z
Y2FsZUZhY3RvcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmx1c2hDb250ZXh0Ojph
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIEhhbmRsZWQgYnkgY2xpZW50
LgogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmx1c2hDb250ZXh0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaWRlbnRpZmll
ciIsIGl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KKyNpZiAhTE9HX0RJ
U0FCTEVECiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRl
bVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzksNiArNjk0LDM5NiBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUg
dHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFRyYW5zbGF0ZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
IngiLCBpdGVtLngoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOworICAg
IHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUm90YXRlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5nbGUiLCBpdGVt
LmFuZ2xlKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2NhbGUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJzZXQtY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
b25jYXRlbmF0ZUNUTSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0ZW0u
dHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29sb3IoKSk7CisgICAgcmV0dXJuIHRz
OworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJ
bmxpbmVTdHJva2VDb2xvciYgc3RhdGUpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IHN0YXRlLmNvbG9yKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsKKyAg
ICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldFN0YXRlJiBpdGVtKQoreworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldExpbmVDYXAmIGxpbmVDYXApCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNh
cCIsIGxpbmVDYXAubGluZUNhcCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVEYXNoJiBsaW5lRGFzaCkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtYXJyYXkiLCBsaW5lRGFzaC5kYXNoQXJyYXko
KSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGxpbmVEYXNoLmRhc2hPZmZz
ZXQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lSm9pbiYgbGluZUpvaW4pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJsaW5lLWpvaW4iLCBsaW5lSm9pbi5saW5lSm9pbigpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldE1p
dGVyTGltaXQmIG1pdGVyTGltaXQpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1p
dCIsIG1pdGVyTGltaXQubWl0ZXJMaW1pdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsK
K30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91
dCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
ImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0
eSgid2luZC1ydWxlIiwgaXRlbS53aW5kUnVsZSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLWlk
ZW50aWZpZXIiLCBpdGVtLnNvdXJjZUltYWdlSWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoInNvdXJjZS1pbWFnZS1yZWN0IiwgaXRlbS5zb3VyY2VJbWFnZVJlY3QoKSk7CisgICAg
cmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3R2x5cGhzJiBpdGVtKQoreworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYu
CisgICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkp
OworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5jaG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxlbmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsK
KworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0
eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
ImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdT
eXN0ZW1JbWFnZSYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgorICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1h
Z2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicGF0dGVybi10cmFuc2Zvcm0iLCBpdGVtLnBhdHRlcm5UcmFuc2Zvcm0oKSk7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJ0aWxlLXJlY3QiLCBpdGVtLnRpbGVSZWN0KCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0UmVjdCgpKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoInBoYXNlIiwgaXRlbS5waGFzZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNwYWNp
bmciLCBpdGVtLnNwYWNpbmcoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkKK3sKKyAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJib3JkZXItdGhpY2tuZXNzIiwgaXRlbS5ib3JkZXJUaGlja25lc3MoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3TGluZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVtLnBv
aW50MSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50MigpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxvY2tMb2NhdGlvbigpKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJwb2ludCIsIGl0ZW0ucG9pbnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0aGlj
a25lc3MiLCBpdGVtLnRoaWNrbmVzcygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRvdWJsZSIs
IGl0ZW0uZG91YmxlTGluZXMoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBpdGVt
LndpZHRocygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5pc1By
aW50aW5nKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5l
cygpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsKK30K
KworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0VsbGlw
c2UmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwor
ICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0
eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgib2Zmc2V0Iiwg
aXRlbS5vZmZzZXQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3Io
KSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0cyIsIGl0ZW0ucmVjdHMoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0
aCIsIGl0ZW0ud2lkdGgoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJvZmZzZXQiLCBpdGVtLm9m
ZnNldCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAg
ICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEZpbGxSZWN0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0
ZW0ucmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVtKQoreworICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBp
dGVtKQoreworICAgIC8vIEZJWE1FOiBsb2cgZ3JhZGllbnQuCisgICAgdHMuZHVtcFByb3BlcnR5
KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBvc2l0ZWRSZWN0JiBpdGVt
KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNvbXBvc2l0ZS1vcGVyYXRpb24iLCBpdGVtLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOworICAgIHRz
LmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGl0ZW0uYmxlbmRNb2RlKCkpOworICAgIHJldHVy
biB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbFJvdW5kZWRSZWN0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0
ZW0ucm91bmRlZFJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUo
KSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkKK3sKKyAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJy
b3VuZGVkLWhvbGUtcmVjdCIsIGl0ZW0ucm91bmRlZEhvbGVSZWN0KCkpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOworICAgIHJldHVybiB0czsKK30KKworI2lm
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsTGluZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
InBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtKQoreworICAgIHRz
LmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisK
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3Vy
dmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwor
ICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRmlsbEJlemllckN1cnZlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRlbSkKK3sKKyAgICB0
cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQor
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFk
Q3VydmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
InBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCisjaWYgRU5BQkxFKFZJREVPKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRz
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGlu
ZS13aWR0aCIsIGl0ZW0ubGluZVdpZHRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYgaXRlbSkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
dHJva2VFbGxpcHNlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUxpbmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdGFydCIsIGl0ZW0uc3RhcnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJlbmQiLCBp
dGVtLmVuZCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsZWFyUmVjdCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJv
cGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxh
eWVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgib3BhY2l0eSIsIGl0ZW0ub3BhY2l0
eSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImIGl0ZW0pCit7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOworICAgIHJl
dHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmx1c2hDb250ZXh0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaWRlbnRpZmll
ciIsIGl0ZW0uaWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICB0cyA8
PCBpdGVtLnR5cGUoKTsKQEAgLTEyNzIsNiArMTI3Nyw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICB9CiAgICAgcmV0dXJuIHRz
OwogfQorI2VuZGlmCiAKLX0KLX0KK30gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAzMDY4
ZGVlYWIxMGU2ZjNkMjNjZThiZjFhMDYwZTRiODQ1MmMwOWQwLi4wYmUyZGE4MDE5N2ZkNmM4NzBm
MWJmYTI3YWZhNjlkZGM0ODE1YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTIwNzIsNyArMjA3Miw3MCBAQCB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlh
bnQKIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxp
c3RJdGVtJik7CiBJdGVtVHlwZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYpOwogCisjaWYgIUxPR19ESVNBQkxFRAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVHJhbnNsYXRlJik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBSb3RhdGUmKTsKK1dF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNj
YWxlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBTZXRDVE0mKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3Im
KTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IFNldElubGluZVN0cm9rZUNvbG9yJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmKTsKK1dFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0
YXRlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBTZXRMaW5lQ2FwJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lRGFzaCYpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZUpvaW4mKTsKK1dF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNl
dE1pdGVyTGltaXQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IENsaXAmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJik7
CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwT3V0VG9QYXRoJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwUGF0aCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIm
KTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IERyYXdHbHlwaHMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJik7
CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBEcmF3U3lzdGVtSW1hZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdQYXR0ZXJuJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UmVjdCYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xp
bmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdMaW5lc0ZvclRleHQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImKTsK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IERyYXdFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0aCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmKTsKK1dFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdG
b2N1c1JpbmdSZWN0cyYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJik7CitXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
UmVjdFdpdGhHcmFkaWVudCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbENvbXBvc2l0ZWRSZWN0Jik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJl
Y3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJik7CisjaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBGaWxsTGluZSYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEFyYyYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFF1YWRDdXJ2ZSYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEJl
emllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBTdHJva2VBcmMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6
aWVyQ3VydmUmKTsKKyNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKK1dFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxQYXRo
Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBGaWxsRWxsaXBzZSYpOworI2lmIEVOQUJMRShWSURFTykKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRp
YSYpOworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKK1dFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgm
KTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IFN0cm9rZUVsbGlwc2UmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5U
cmFuc3BhcmVuY3lMYXllciYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmx1c2hDb250
ZXh0Jik7CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUp
OworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>
<flag name="review"
          id="487707"
          type_id="1"
          status="+"
          setter="heycam"
    />
    <flag name="commit-queue"
          id="487713"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458811</attachid>
            <date>2022-05-04 10:59:03 -0700</date>
            <delta_ts>2022-05-04 12:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240053-20220504105902.patch</filename>
            <type>text/plain</type>
            <size>41494</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU1Y2M2YTkzNjE4Zjlh
MDA0ODAzOGY0NWVlOWU4M2U1Mzk2NjA3NS4uYTQ3YWZlYmNkZjM3YjhhZWYzNTJmMzcyNTRkM2Vl
MDRhNGM3ODMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTA1LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgbG9n
Z2luZyBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgaW4gSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwNTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBDYW1lcm9uIE1jQ29ybWFjay4KKworICAgICAgICBJbiBvcmRlciBmb3IgSVBDIGFy
Z3VtZW50cyB0byBzaG93IHVwIGluIElQQ01lc3NhZ2VzIGxvZ2dpbmcsIHRoZSBzdHJlYW0gb3Bl
cmF0b3JzCisgICAgICAgIGZvciBkaXNwbGF5IGxpc3QgaXRlbXMgaGF2ZSB0byBiZSB2aXNpYmxl
IHRvIFdlYktpdDIgY29kZS4gU28gZXhwb3J0IHRoZW0gYWxsIGZyb20KKyAgICAgICAgV2ViQ29y
ZSwgYnV0IG9ubHkgaWYgIUxPR19ESVNBQkxFRCwgdG8gYXZvaWQgY29kZSBibG9hdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aDo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisKIDIwMjItMDUt
MDIgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nzb21d
IEVudW1lcmF0ZSBhbGwgbG9naWNhbCBsb25naGFuZHMgaW4gdGhlIGNvbXB1dGVkIHN0eWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGNmNWYwMzUxYmQ1
N2JkNTA4MjA4YWQxNjljZTAzNDYxZTg5YmViZmQuLmFhMzVlMDRlMTU3ZDljNThjMjk1Njk0MDI3
ZDZmNzQ1NDVlZmYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgpAQCAt
NzEwLDQgKzcxMSwxMiBAQCBjb25zdCBQYXRoJiBGb250OjpwYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgcmV0dXJuICptX2dseXBoUGF0aE1hcC5leGlzdGluZ01ldHJpY3NGb3JH
bHlwaChnbHlwaCk7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGb250JiBmb250KQoreworICAgIHRzIDw8IGZvbnQu
ZGVzY3JpcHRpb24oKTsKKyAgICByZXR1cm4gdHM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGI4
OTNiMzgwMWJiMDUzMjBkNDVmMmEzOWYwOGJmYzFkODQzODU2ZTQuLmI1MDQxNDU4NGU4Nzg0Y2Fj
NTQ0YmQ5ZjhlYmRhY2NlODkzMzk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8dXNwMTAuaD4KICNlbmRpZgog
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRm9udENhY2hlOwpAQCAtMzkzLDYgKzM5NywxMCBAQCBBTFdBWVNfSU5M
SU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgsIFN5bnRoZXRpY0JvbGRJ
bmNsdXNpb24gU3ludAogICAgIHJldHVybiB3aWR0aCArIChTeW50aGV0aWNCb2xkSW5jbHVzaW9u
ID09IFN5bnRoZXRpY0JvbGRJbmNsdXNpb246OkluY29ycG9yYXRlID8gc3ludGhldGljQm9sZE9m
ZnNldCgpIDogMCk7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGb250Jik7CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0YTYxOTAxOWUzMjM1MWVjNTk2Nzg3ZGVmNThiZTM3
OGFkODViZTQ4Li5lYmRjMTAzNGIxMTIwZGFjMzM1MDBjNTc4NTkyYTU2M2NkM2M5ZTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC01OSw5NSArNTksNDEgQEAgdm9p
ZCBUcmFuc2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCi17Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJ4IiwgaXRlbS54KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgieSIsIGl0
ZW0ueSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBSb3RhdGU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnJvdGF0ZShtX2FuZ2xl
KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFJvdGF0ZSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImFuZ2xlIiwgaXRlbS5h
bmdsZSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjYWxlJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic2l6ZSIsIGl0ZW0uYW1vdW50
KCkpOwotCi0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldENUTTo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuc2V0Q1RNKG1fdHJhbnNmb3Jt
KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldENUTSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBpdGVt
LnRyYW5zZm9ybSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBDb25jYXRlbmF0ZUNU
TTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQu
Y29uY2F0Q1RNKG1fdHJhbnNmb3JtKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQotewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7Ci0KLSAgICByZXR1cm4gdHM7
Ci19Ci0KIHZvaWQgU2V0SW5saW5lRmlsbENvbG9yOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IoKSk7CiB9CiAK
LXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJ
bmxpbmVGaWxsQ29sb3ImIHN0YXRlKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBz
dGF0ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0SW5saW5lU3Ryb2tl
Q29sb3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lU3Ryb2tlQ29sb3ImIHN0YXRl
KQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0U3Ryb2tlVGhpY2tuZXNzOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3Mo
bV90aGlja25lc3MpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKLXsKLSAgICB0cy5kdW1w
UHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7
Ci19Ci0KIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCiAgICAgOiBtX3N0YXRlKHN0YXRlKQogewpAQCAtMTU4LDU3ICsxMDQsMjYgQEAgdm9pZCBT
ZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQudXBk
YXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnN0
YXRlKCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldExpbmVDYXA6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldExpbmVDYXAobV9s
aW5lQ2FwKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXApCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJs
aW5lLWNhcCIsIGxpbmVDYXAubGluZUNhcCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQg
U2V0TGluZURhc2g6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAg
ICBjb250ZXh0LnNldExpbmVEYXNoKG1fZGFzaEFycmF5LCBtX2Rhc2hPZmZzZXQpOwogfQogCi1z
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGlu
ZURhc2gmIGxpbmVEYXNoKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxp
bmVEYXNoLmRhc2hBcnJheSgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0Iiwg
bGluZURhc2guZGFzaE9mZnNldCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0TGlu
ZUpvaW46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250
ZXh0LnNldExpbmVKb2luKG1fbGluZUpvaW4pOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQotewot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibGluZS1qb2luIiwgbGluZUpvaW4ubGluZUpvaW4oKSk7Ci0g
ICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldE1pdGVyTGltaXQ6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldE1pdGVyTGltaXQobV9taXRl
ckxpbWl0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCi17Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJMaW1pdCgpKTsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KIHZvaWQgQ2xlYXJTaGFkb3c6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CkBAIC0yMTksMjMgKzEzNCwx
MSBAQCB2b2lkIENsaXA6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAg
ICBjb250ZXh0LmNsaXAobV9yZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBDbGlw
T3V0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4
dC5jbGlwT3V0KG1fcmVjdCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgQ2xpcFRvSW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDYsMzYgKzE0OSwx
NiBAQCB2b2lkIENsaXBUb0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbQogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRpb25SZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBp
dGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBp
dGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3Qt
cmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9p
ZCBDbGlwT3V0VG9QYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgY29udGV4dC5jbGlwT3V0KG1fcGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVtKQotewot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7
Ci19Ci0KIHZvaWQgQ2xpcFBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBjb250ZXh0LmNsaXBQYXRoKG1fcGF0aCwgbV93aW5kUnVsZSk7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0
aCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUiLCBpdGVtLndpbmRSdWxlKCkpOwotICAgIHJl
dHVybiB0czsKLX0KLQogRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OkRyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJ
bWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXIm
IGZpbHRlcikKICAgICA6IG1fc291cmNlSW1hZ2VJZGVudGlmaWVyKHNvdXJjZUltYWdlSWRlbnRp
ZmllcikKICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKQEAgLTI5Mywx
MyArMTc2LDYgQEAgdm9pZCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBJbWFnZUJ1ZmZlciogc291cmMKICAgICBjb250ZXh0LmRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBtX3NvdXJjZUltYWdlUmVjdCwgbV9maWx0ZXIs
IHJlc3VsdHMpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImIGl0ZW0pCi17Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVu
dGlmaWVyKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBpdGVt
LnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdHbHlwaHM6OkRy
YXdHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBWZWN0
b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2
YW5jZSwgMTI4PiYmIGFkdmFuY2VzLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxv
YXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAg
ICAgOiBtX2ZvbnRJZGVudGlmaWVyKGZvbnRJZGVudGlmaWVyKQogICAgICwgbV9nbHlwaHMoV1RG
TW92ZShnbHlwaHMpKQpAQCAtMzQ2LDE2ICsyMjIsNiBAQCB2b2lkIERyYXdHbHlwaHM6OmNvbXB1
dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKICAgICB9CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtKQotewot
ICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCi0gICAgdHMuZHVtcFByb3BlcnR5KCJsb2Nh
bC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5j
aG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxl
bmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQogTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNjYsMTQg
KzIzMiw2IEBAIHZvaWQgRHJhd0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnCiAgICAgY29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9u
cyk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFn
ZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOwotICAg
IHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKLSAgICB0cy5k
dW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJl
dHVybiB0czsKLX0KLQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3TmF0aXZlSW1h
Z2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0zODQsMjcgKzI0MiwxMSBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiAgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
UmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQotewot
ICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCi0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFn
ZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQot
CiB2b2lkIERyYXdTeXN0ZW1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogICAgIGNvbnRleHQuZHJhd1N5c3RlbUltYWdlKG1fc3lzdGVtSW1hZ2UsIG1fZGVz
dGluYXRpb25SZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYgaXRlbSkKLXsKLSAgICAvLyBGSVhNRTog
ZHVtcCBtb3JlIHN0dWZmLgotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVt
LmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdQYXR0ZXJuOjpE
cmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogICAgIDogbV9pbWFnZUlkZW50aWZpZXIoaW1hZ2VJZGVudGlmaWVyKQogICAg
ICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKQEAgLTQzNiwyOSArMjc4LDExIEBAIHZvaWQgRHJh
d1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU291cmNlSW1hZ2UmIHNv
dXJjZUltYWdlKSBjb25zCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYg
aXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmlt
YWdlSWRlbnRpZmllcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3Jt
IiwgaXRlbS5wYXR0ZXJuVHJhbnNmb3JtKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1y
ZWN0IiwgaXRlbS50aWxlUmVjdCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdFJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhh
c2UoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwot
ICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3UmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd1JlY3QobV9yZWN0LCBtX2JvcmRl
clRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXItdGhpY2tuZXNz
IiwgaXRlbS5ib3JkZXJUaGlja25lc3MoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kczsKQEAgLTQ3MSwxMyArMjk1LDYg
QEAgdm9pZCBEcmF3TGluZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgIGNvbnRleHQuZHJhd0xpbmUobV9wb2ludDEsIG1fcG9pbnQyKTsKIH0KIAotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVt
KQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMSIsIGl0ZW0ucG9pbnQxKCkpOwotICAg
IHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMiIsIGl0ZW0ucG9pbnQyKCkpOwotICAgIHJldHVybiB0
czsKLX0KLQogRHJhd0xpbmVzRm9yVGV4dDo6RHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0
aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzLCBTdHJva2VTdHlsZSBzdHlsZSkKICAgICA6IG1fYmxvY2tMb2NhdGlvbihibG9j
a0xvY2F0aW9uKQogICAgICwgbV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKQEAgLTUwNiwxOSAr
MzIzLDYgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lc0ZvclRleHQ6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGMKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0xpbmVzRm9yVGV4dCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImJsb2NrLWxvY2F0
aW9uIiwgaXRlbS5ibG9ja0xvY2F0aW9uKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgibG9jYWwt
YW5jaG9yIiwgaXRlbS5sb2NhbEFuY2hvcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50
IiwgaXRlbS5wb2ludCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0u
dGhpY2tuZXNzKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVM
aW5lcygpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRocyIsIGl0ZW0ud2lkdGhzKCkpOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiaXMtcHJpbnRpbmciLCBpdGVtLmlzUHJpbnRpbmcoKSk7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJkb3VibGUiLCBpdGVtLmRvdWJsZUxpbmVzKCkpOwotICAgIHJl
dHVybiB0czsKLX0KLQogdm9pZCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5kcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyKG1fcmVjdCwgewpAQCAtNTMyLDM0ICszMzYsMTYgQEAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ28KICAgICByZXR1cm4gbV9yZWN0OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
ciYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0g
ICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIERyYXdFbGxpcHNlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtX3JlY3QpOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0VsbGlwc2UmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5y
ZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd1BhdGgobV9wYXRo
KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdQYXRoJikKLXsKLSAgICAvLyBGSVhNRTogYWRkIGxvZ2dpbmcgZm9yIHBhdGhzLgot
ICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3Rm9jdXNSaW5nUGF0aDo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd0ZvY3VzUmluZyht
X3BhdGgsIG1fd2lkdGgsIG1fb2Zmc2V0LCBtX2NvbG9yKTsKQEAgLTU3MiwxNSArMzU4LDYgQEAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5n
UGF0aCYgaXRlbSkKLXsKLS8vICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgp
KTsgLy8gRklYTUU6IGFkZCBsb2dnaW5nIGZvciBwYXRocy4KLSAgICB0cy5kdW1wUHJvcGVydHko
IndpZHRoIiwgaXRlbS53aWR0aCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0
ZW0ub2Zmc2V0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkp
OwotICAgIHJldHVybiB0czsKLX0KLQogRHJhd0ZvY3VzUmluZ1JlY3RzOjpEcmF3Rm9jdXNSaW5n
UmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwgZmxvYXQg
b2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgOiBtX3JlY3RzKHJlY3RzKQogICAgICwg
bV93aWR0aCh3aWR0aCkKQEAgLTYwMywzOCArMzgwLDE2IEBAIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRlbSkKLXsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoInJlY3RzIiwgaXRlbS5yZWN0cygpKTsKLSAgICB0cy5kdW1wUHJv
cGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNl
dCIsIGl0ZW0ub2Zmc2V0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNv
bG9yKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBGaWxsUmVjdDo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0
KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEZpbGxSZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmlsbFJlY3RXaXRoQ29sb3I6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxS
ZWN0KG1fcmVjdCwgbV9jb2xvcik7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYgaXRlbSkKLXsKLSAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBGaWxsUmVjdFdp
dGhHcmFkaWVudDo6RmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBH
cmFkaWVudCYgZ3JhZGllbnQpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAsIG1fZ3JhZGllbnQo
Z3JhZGllbnQpCkBAIC02NDYsNTMgKzQwMSwyMSBAQCB2b2lkIEZpbGxSZWN0V2l0aEdyYWRpZW50
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5maWxs
UmVjdChtX3JlY3QsIG1fZ3JhZGllbnQuZ2V0KCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0
ZW0pCi17Ci0gICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KLSAgICB0cy5kdW1wUHJvcGVydHko
InJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxDb21w
b3NpdGVkUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAg
IGNvbnRleHQuZmlsbFJlY3QobV9yZWN0LCBtX2NvbG9yLCBtX29wLCBtX2JsZW5kTW9kZSk7CiB9
CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBG
aWxsQ29tcG9zaXRlZFJlY3QmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yZWN0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkp
OwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlvbiIsIGl0ZW0uY29tcG9z
aXRlT3BlcmF0b3IoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5i
bGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxSb3VuZGVkUmVjdDo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmls
bFJvdW5kZWRSZWN0KG1fcmVjdCwgbV9jb2xvciwgbV9ibGVuZE1vZGUpOwogfQogCi1zdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJvdW5kZWRS
ZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJl
Y3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCiB2b2lkIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShtX3JlY3QsIG1fcm91bmRlZEhvbGVSZWN0LCBtX2NvbG9yKTsKIH0KIAotc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJvdW5kZWQtaG9sZS1yZWN0IiwgaXRlbS5y
b3VuZGVkSG9sZVJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CiAKIHZvaWQgRmlsbExpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
QEAgLTcwMCw2OSArNDIzLDMzIEBAIHZvaWQgRmlsbExpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsTGlu
ZSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0g
ICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxBcmM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJj
JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmlsbFF1YWRDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0K
IAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bGxRdWFkQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5w
YXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBGaWxsQmV6aWVyQ3VydmU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRo
KHBhdGgoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotCi12b2lkIEZpbGxQYXRoOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CisjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CisKK3ZvaWQgRmlsbFBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRlbSkKLXsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwot
fQotCiB2b2lkIEZpbGxFbGxpcHNlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgY29udGV4dC5maWxsRWxsaXBzZShtX3JlY3QpOwogfQogCi1zdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0
ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJl
dHVybiB0czsKLX0KLQogI2lmIEVOQUJMRShWSURFTykKIFBhaW50RnJhbWVGb3JNZWRpYTo6UGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCiAgICAgOiBtX2lkZW50aWZpZXIocGxheWVyLmlkZW50aWZpZXIoKSkKQEAgLTc3
NiwxMSArNDYzLDYgQEAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBQYWludEZyYW1lRm9y
TWVkaWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQog
I2VuZGlmCiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdApAQCAtNzk1LDEzICs0NzcsNiBAQCB2b2lk
IFN0cm9rZVJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LnN0cm9rZVJlY3QobV9yZWN0LCBtX2xpbmVXaWR0aCk7CiB9CiAKLXN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVt
KQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICB0cy5k
dW1wUHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZp
YSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgpAQCAtODE3LDEyICs0OTIsNiBAQCB2b2lkIFN0cm9r
ZVBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0
LnN0cm9rZVBhdGgobV9wYXRoKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25lc3Mg
PSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpAQCAtODM3LDEyICs1MDYsNiBAQCB2b2lkIFN0
cm9rZUVsbGlwc2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LnN0cm9rZUVsbGlwc2UobV9yZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCi17Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsK
LX0KLQogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUxpbmU6OmxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VU
aGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpAQCAtODY1LDEzICs1MjgsNiBA
QCB2b2lkIFN0cm9rZUxpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
ICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQotewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiAjaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VBcmM6
OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTg4
OSwxMiArNTQ1LDYgQEAgdm9pZCBTdHJva2VBcmM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCgpKTsKIH0KIAotc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYg
aXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUXVhZEN1cnZl
Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBj
b3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgpAQCAtOTEwLDEyICs1NjAsNiBA
QCB2b2lkIFN0cm9rZVF1YWRDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBp
dGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VCZXppZXJDdXJ2
ZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ugc3Ryb2tlIHRoaWNrbmVzcyBpbnRvIGFjY291bnQg
Y29ycmVjdGx5LCB2aWEgQ0dQYXRoQnlTdHJva2luZ1BhdGgoKS4KQEAgLTkzMSwxMiArNTc1LDYg
QEAgdm9pZCBTdHJva2VCZXppZXJDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKCkpOwogfQogCi1zdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3Vy
dmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwot
ICAgIHJldHVybiB0czsKLX0KLQogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQog
CiB2b2lkIENsZWFyUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApA
QCAtOTQ0LDIzICs1ODIsMTEgQEAgdm9pZCBDbGVhclJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmNsZWFyUmVjdChtX3JlY3QpOwogfQogCi1z
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJS
ZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsK
LSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgQmVnaW5UcmFuc3BhcmVuY3lMYXllcjo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuYmVnaW5UcmFu
c3BhcmVuY3lMYXllcihtX29wYWNpdHkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSkK
LXsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNpdHkiLCBpdGVtLm9wYWNpdHkoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiB2b2lkIEVuZFRyYW5zcGFyZW5jeUxheWVyOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRleHQuaXNJblRyYW5zcGFy
ZW5jeUxheWVyKCkpCkBAIC05ODUsMjMgKzYxMSwxMiBAQCB2b2lkIEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0
LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9zY2FsZUZhY3Rvcik7CiB9CiAKLXN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNjYWxl
RmFjdG9yJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic2NhbGUtZmFjdG9yIiwgaXRl
bS5zY2FsZUZhY3RvcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmx1c2hDb250ZXh0
OjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIEhhbmRsZWQgYnkgY2xp
ZW50LgogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmx1c2hDb250ZXh0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaWRlbnRp
ZmllciIsIGl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KKyNpZiAhTE9H
X0RJU0FCTEVECiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
SXRlbVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzksNiArNjk0LDM5
NiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5
cGUgdHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zbGF0ZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoIngiLCBpdGVtLngoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOwor
ICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgUm90YXRlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5nbGUiLCBp
dGVtLmFuZ2xlKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2NhbGUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJzZXQtY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7CisgICAgcmV0
dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0
ZW0udHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29sb3IoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
ZXRJbmxpbmVTdHJva2VDb2xvciYgc3RhdGUpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xv
ciIsIHN0YXRlLmNvbG9yKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldFN0YXRlJiBpdGVtKQoreworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsKKyAg
ICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXApCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5l
LWNhcCIsIGxpbmVDYXAubGluZUNhcCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVEYXNoJiBsaW5lRGFz
aCkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtYXJyYXkiLCBsaW5lRGFzaC5kYXNoQXJy
YXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGxpbmVEYXNoLmRhc2hP
ZmZzZXQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lSm9pbiYgbGluZUpvaW4pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJsaW5lLWpvaW4iLCBsaW5lSm9pbi5saW5lSm9pbigpKTsKKyAgICByZXR1cm4g
dHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1s
aW1pdCIsIG1pdGVyTGltaXQubWl0ZXJMaW1pdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCit7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0
czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xp
cE91dCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7
CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIo
KSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVj
dCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgid2luZC1ydWxlIiwgaXRlbS53aW5kUnVsZSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisK
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdl
LWlkZW50aWZpZXIiLCBpdGVtLnNvdXJjZUltYWdlSWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoInNvdXJjZS1pbWFnZS1yZWN0IiwgaXRlbS5zb3VyY2VJbWFnZVJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtKQoreworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1
ZmYuCisgICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9y
KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5jaG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2lu
dCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxlbmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgp
KTsKKworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVmZmVySWRlbnRpZmll
cigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4g
dHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdTeXN0ZW1JbWFnZSYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
aW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0dGVybi10cmFuc2Zvcm0iLCBpdGVtLnBhdHRlcm5UcmFuc2Zvcm0oKSk7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJ0aWxlLXJlY3QiLCBpdGVtLnRpbGVSZWN0KCkpOworICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0UmVjdCgpKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoInBoYXNlIiwgaXRlbS5waGFzZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNw
YWNpbmciLCBpdGVtLnNwYWNpbmcoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJib3JkZXItdGhpY2tuZXNzIiwgaXRlbS5ib3JkZXJUaGlja25lc3MoKSk7CisgICAgcmV0
dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3TGluZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVt
LnBvaW50MSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50Migp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxvY2tMb2NhdGlvbigpKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJwb2ludCIsIGl0ZW0ucG9pbnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0
aGlja25lc3MiLCBpdGVtLnRoaWNrbmVzcygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRvdWJs
ZSIsIGl0ZW0uZG91YmxlTGluZXMoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBp
dGVtLndpZHRocygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5p
c1ByaW50aW5nKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVM
aW5lcygpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsK
K30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0Vs
bGlwc2UmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkp
OworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRo
IiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgib2Zmc2V0
IiwgaXRlbS5vZmZzZXQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0ZW0pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0cyIsIGl0ZW0ucmVjdHMoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3
aWR0aCIsIGl0ZW0ud2lkdGgoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJvZmZzZXQiLCBpdGVt
Lm9mZnNldCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEZpbGxSZWN0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIs
IGl0ZW0ucmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVtKQoreworICAg
IHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50
JiBpdGVtKQoreworICAgIC8vIEZJWE1FOiBsb2cgZ3JhZGllbnQuCisgICAgdHMuZHVtcFByb3Bl
cnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBvc2l0ZWRSZWN0JiBp
dGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImNvbXBvc2l0ZS1vcGVyYXRpb24iLCBpdGVtLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGl0ZW0uYmxlbmRNb2RlKCkpOworICAgIHJl
dHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmlsbFJvdW5kZWRSZWN0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIs
IGl0ZW0ucm91bmRlZFJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0u
Y29sb3IoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1v
ZGUoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkKK3sKKyAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJyb3VuZGVkLWhvbGUtcmVjdCIsIGl0ZW0ucm91bmRlZEhvbGVSZWN0KCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOworICAgIHJldHVybiB0czsKK30KKwor
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsTGluZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtKQoreworICAg
IHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFk
Q3VydmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbEJlemllckN1cnZlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRlbSkKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VR
dWFkQ3VydmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRz
OworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJu
IHRzOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0pCit7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
bGluZS13aWR0aCIsIGl0ZW0ubGluZVdpZHRoKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYgaXRl
bSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0
dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTdHJva2VFbGxpcHNlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0
ZW0ucmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUxpbmUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJzdGFydCIsIGl0ZW0uc3RhcnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJlbmQi
LCBpdGVtLmVuZCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsZWFyUmVjdCYgaXRlbSkKK3sKKyAgICB0cy5kdW1w
UHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5j
eUxheWVyJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgib3BhY2l0eSIsIGl0ZW0ub3Bh
Y2l0eSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOworICAg
IHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmx1c2hDb250ZXh0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaWRlbnRp
ZmllciIsIGl0ZW0uaWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICB0
cyA8PCBpdGVtLnR5cGUoKTsKQEAgLTEyNzIsNiArMTI3Nyw3IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICB9CiAgICAgcmV0dXJu
IHRzOwogfQorI2VuZGlmCiAKLX0KLX0KK30gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAz
MDY4ZGVlYWIxMGU2ZjNkMjNjZThiZjFhMDYwZTRiODQ1MmMwOWQwLi4wYmUyZGE4MDE5N2ZkNmM4
NzBmMWJmYTI3YWZhNjlkZGM0ODE1YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKQEAgLTIwNzIsNyArMjA3Miw3MCBAQCB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZh
cmlhbnQKIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJik7CiBJdGVtVHlwZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpOwogCisjaWYgIUxPR19ESVNBQkxFRAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVHJhbnNsYXRlJik7CitXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBSb3RhdGUmKTsK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFNjYWxlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBTZXRDVE0mKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJik7CitXRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29s
b3ImKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmKTsKK1dF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNl
dFN0YXRlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBTZXRMaW5lQ2FwJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lRGFzaCYpOworV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZUpvaW4mKTsK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFNldE1pdGVyTGltaXQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IENsaXAmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXQmKTsKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVy
Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBDbGlwT3V0VG9QYXRoJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwUGF0aCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXImKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdHbHlwaHMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdl
Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3U3lzdGVtSW1hZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdQYXR0ZXJuJik7CitXRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UmVjdCYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJh
d0xpbmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIm
KTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IERyYXdFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0aCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmKTsKK1dF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERy
YXdGb2N1c1JpbmdSZWN0cyYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJik7CitX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBG
aWxsUmVjdFdpdGhHcmFkaWVudCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbENvbXBvc2l0ZWRSZWN0Jik7CitXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRl
ZFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJik7CisjaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBGaWxsTGluZSYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEFyYyYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFF1YWRDdXJ2ZSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmls
bEJlemllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBTdHJva2VBcmMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tl
QmV6aWVyQ3VydmUmKTsKKyNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKK1dFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxQ
YXRoJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBGaWxsRWxsaXBzZSYpOworI2lmIEVOQUJMRShWSURFTykKK1dFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFBhaW50RnJhbWVGb3JN
ZWRpYSYpOworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKK1dFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBh
dGgmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFN0cm9rZUVsbGlwc2UmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVn
aW5UcmFuc3BhcmVuY3lMYXllciYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmx1c2hD
b250ZXh0Jik7CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5k
bGUpOworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjlkMTZlYjdiZTVhZWQyMGU2ZmRiZGIyZDkwNmUwYzdkOTBlYmNh
MC4uMTU1NzBkNmVkOTQzZDI1OWQ4OWE1YjI0NWM2NDRhOTQ4NTU2NDQxMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIyLTA1LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEltcHJvdmUgbG9nZ2luZyBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgaW4g
SVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDAwNTMKKworICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIE1jQ29ybWFjay4KKwor
ICAgICAgICBOb3cgdGhhdCBkaXNwbGF5IGxpc3QgbG9nZ2luZyBpcyBkZWJ1ZyBvbmx5LCB0aGVz
ZSB0ZXN0cyB3aWxsIG9ubHkgd29yayBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wNS0wMiAgT3Jpb2wgQnJ1ZmF1ICA8
b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3NvbV0gRW51bWVyYXRlIGFsbCBsb2dp
Y2FsIGxvbmdoYW5kcyBpbiB0aGUgY29tcHV0ZWQgc3R5bGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjhiMDJlY2NjOGEwNzEzMWFiYmU5ZDUyYWViODcw
NWQ5MjY1NWMxMy4uNmVlNmVhMTE0NDEyYWZhMTlhZGE4MTg1ZDkyMTllYzdlZThiOGM5ZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgsNyArOCw2IEBA
CiAKIGFjY2Vzc2liaWxpdHkvbWFjIFsgUGFzcyBdCiBjb21wb3NpdGluZy9zY3JvbGxpbmcvYXN5
bmMtb3ZlcmZsb3ctc2Nyb2xsaW5nL21hYyBbIFBhc3MgXQotZGlzcGxheWxpc3RzIFsgUGFzcyBd
CiBlZGl0aW5nL2V4ZWNDb21tYW5kL21hYyBbIFBhc3MgXQogZWRpdGluZy9pbnB1dC9jb2NvYSBb
IFBhc3MgXQogZWRpdGluZy9tYWMgWyBQYXNzIF0KQEAgLTE4LDYgKzE3LDkgQEAgZmFzdC9zY3Jv
bGxpbmcvbGF0Y2hpbmcgWyBQYXNzIF0KIG1vZGVsLWVsZW1lbnQgWyBQYXNzIF0KIGZhc3QvaW1h
Z2VzL21hYyBbIFBhc3MgXQogCisjIERpc3BsYXkgbGlzdCBsb2dnaW5nIGlzIG9ubHkgYXZhaWxh
YmxlIGluIGRlYnVnCitbIERlYnVnIF0gZGlzcGxheWxpc3RzIFsgUGFzcyBdCisKICMgRGlzYWJs
ZSBwbHVnLWluIHRlc3RzIG9uIEFwcGxlIFNpbGljb24KIFsgYXJtNjQgXSBjb21wb3NpdGluZy9w
bHVnaW5zIFsgU2tpcCBdCiBbIGFybTY0IF0gaHR0cC90ZXN0cy9wbHVnaW5zIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458818</attachid>
            <date>2022-05-04 12:04:45 -0700</date>
            <delta_ts>2022-05-04 19:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240053-20220504120444.patch</filename>
            <type>text/plain</type>
            <size>41066</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlN2QzNTgzMTk5OTA5
YmNiMTE1NzJiOGU5ZDIyMTBkOTQ0MDdmZi4uOGQwMTQ0MWU5MTJjNDhmYjY0ZTcwMjE0YTg3MGM1
YTE1MTRkYTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgbG9n
Z2luZyBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgaW4gSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwNTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBDYW1lcm9uIE1jQ29ybWFjay4KKworICAgICAgICBJbiBvcmRlciBmb3IgSVBDIGFy
Z3VtZW50cyB0byBzaG93IHVwIGluIElQQ01lc3NhZ2VzIGxvZ2dpbmcsIHRoZSBzdHJlYW0gb3Bl
cmF0b3JzCisgICAgICAgIGZvciBkaXNwbGF5IGxpc3QgaXRlbXMgaGF2ZSB0byBiZSB2aXNpYmxl
IHRvIFdlYktpdDIgY29kZS4gU28gZXhwb3J0IHRoZW0gYWxsIGZyb20KKyAgICAgICAgV2ViQ29y
ZSwgYnV0IG9ubHkgaWYgIUxPR19ESVNBQkxFRCwgdG8gYXZvaWQgY29kZSBibG9hdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUGF0aDo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisKIDIwMjItMDUt
MDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBJdGVyYXRp
b25TdGF0dXMgaW4gbW9yZSBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IGNmNWYwMzUxYmQ1N2JkNTA4MjA4YWQxNjljZTAzNDYxZTg5YmViZmQu
LmFhMzVlMDRlMTU3ZDljNThjMjk1Njk0MDI3ZDZmNzQ1NDVlZmYyZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKICNpbmNsdWRlICJP
cGVuVHlwZVZlcnRpY2FsRGF0YS5oIgpAQCAtNzEwLDQgKzcxMSwxMiBAQCBjb25zdCBQYXRoJiBG
b250OjpwYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuICptX2dseXBo
UGF0aE1hcC5leGlzdGluZ01ldHJpY3NGb3JHbHlwaChnbHlwaCk7CiB9CiAKKyNpZiAhTE9HX0RJ
U0FCTEVECitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGb250
JiBmb250KQoreworICAgIHRzIDw8IGZvbnQuZGVzY3JpcHRpb24oKTsKKyAgICByZXR1cm4gdHM7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGI4OTNiMzgwMWJiMDUzMjBkNDVmMmEzOWYwOGJmYzFk
ODQzODU2ZTQuLmI1MDQxNDU4NGU4Nzg0Y2FjNTQ0YmQ5ZjhlYmRhY2NlODkzMzk3MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTQ5LDYgKzQ5LDEwIEBACiAj
aW5jbHVkZSA8dXNwMTAuaD4KICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRT
dHJlYW07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENhY2hlOwpAQCAt
MzkzLDYgKzM5NywxMCBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgo
R2x5cGggZ2x5cGgsIFN5bnRoZXRpY0JvbGRJbmNsdXNpb24gU3ludAogICAgIHJldHVybiB3aWR0
aCArIChTeW50aGV0aWNCb2xkSW5jbHVzaW9uID09IFN5bnRoZXRpY0JvbGRJbmNsdXNpb246Oklu
Y29ycG9yYXRlID8gc3ludGhldGljQm9sZE9mZnNldCgpIDogMCk7CiB9CiAKKyNpZiAhTE9HX0RJ
U0FCTEVECitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBGb250Jik7CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzYzA5
NmEyZGI5Zjc0OTczZGQ3ZjA4OGUxOTVmM2Y5OWMxY2I2OGI5Li4zNWE3YjRlYTFjMjQwNzcxMmU1
MjkzNjVmYjlmZjVkNzcwNjFjMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwCkBAIC01OSw5NSArNTksNDEgQEAgdm9pZCBUcmFuc2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CiB9
CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBU
cmFuc2xhdGUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJ4IiwgaXRlbS54KCkpOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgieSIsIGl0ZW0ueSgpKTsKLQotICAgIHJldHVybiB0czsKLX0K
LQogdm9pZCBSb3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBjb250ZXh0LnJvdGF0ZShtX2FuZ2xlKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSkKLXsKLSAgICB0cy5k
dW1wUHJvcGVydHkoImFuZ2xlIiwgaXRlbS5hbmdsZSgpKTsKLQotICAgIHJldHVybiB0czsKLX0K
LQogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjYWxlJiBpdGVtKQotewotICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2l6ZSIsIGl0ZW0uYW1vdW50KCkpOwotCi0gICAgcmV0dXJuIHRzOwotfQotCiB2
b2lkIFNldENUTTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAg
IGNvbnRleHQuc2V0Q1RNKG1fdHJhbnNmb3JtKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldENUTSYgaXRlbSkKLXsKLSAgICB0cy5k
dW1wUHJvcGVydHkoInNldC1jdG0iLCBpdGVtLnRyYW5zZm9ybSgpKTsKLQotICAgIHJldHVybiB0
czsKLX0KLQogdm9pZCBDb25jYXRlbmF0ZUNUTTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuY29uY2F0Q1RNKG1fdHJhbnNmb3JtKTsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNh
dGVuYXRlQ1RNJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3RtIiwgaXRlbS50cmFu
c2Zvcm0oKSk7Ci0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0SW5saW5lRmlsbENvbG9y
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoY29sb3IoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIHN0YXRlKQotewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7
Ci19Ci0KIHZvaWQgU2V0SW5saW5lU3Ryb2tlQ29sb3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKCkpOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0SW5saW5lU3Ryb2tlQ29sb3ImIHN0YXRlKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29s
b3IiLCBzdGF0ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0U3Ryb2tl
VGhpY2tuZXNzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MobV90aGlja25lc3MpOwogfQogCi1zdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tu
ZXNzJiBzdGF0ZSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRo
aWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIFNldFN0YXRlOjpTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBtX3N0YXRlKHN0YXRlKQogewpA
QCAtMTU4LDU3ICsxMDQsMjYgQEAgdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogICAgIGNvbnRleHQudXBkYXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYg
aXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnN0YXRlKCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2
b2lkIFNldExpbmVDYXA6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBjb250ZXh0LnNldExpbmVDYXAobV9saW5lQ2FwKTsKIH0KIAotc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXAp
Ci17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNhcCIsIGxpbmVDYXAubGluZUNhcCgpKTsK
LSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0TGluZURhc2g6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldExpbmVEYXNoKG1fZGFzaEFy
cmF5LCBtX2Rhc2hPZmZzZXQpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZURhc2gmIGxpbmVEYXNoKQotewotICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNoLmRhc2hBcnJheSgpKTsKLSAgICB0cy5k
dW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURhc2guZGFzaE9mZnNldCgpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIHZvaWQgU2V0TGluZUpvaW46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNldExpbmVKb2luKG1fbGluZUpvaW4pOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0TGluZUpvaW4mIGxpbmVKb2luKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgibGluZS1qb2lu
IiwgbGluZUpvaW4ubGluZUpvaW4oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIFNldE1p
dGVyTGltaXQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBj
b250ZXh0LnNldE1pdGVyTGltaXQobV9taXRlckxpbWl0KTsKIH0KIAotc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVy
TGltaXQpCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQu
bWl0ZXJMaW1pdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgQ2xlYXJTaGFkb3c6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmNsZWFy
U2hhZG93KCk7CkBAIC0yMTksMjMgKzEzNCwxMSBAQCB2b2lkIENsaXA6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmNsaXAobV9yZWN0KTsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAm
IGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAg
IHJldHVybiB0czsKLX0KLQogdm9pZCBDbGlwT3V0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5jbGlwT3V0KG1fcmVjdCk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBp
dGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgQ2xpcFRvSW1hZ2VC
dWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yNDYsMzYgKzE0OSwxNiBAQCB2b2lkIENsaXBUb0ltYWdlQnVmZmVyOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbQog
ICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRpb25S
ZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
aW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKTsK
LSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkp
OwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBDbGlwT3V0VG9QYXRoOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5jbGlwT3V0KG1fcGF0aCk7
CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBDbGlwT3V0VG9QYXRoJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0
ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgQ2xpcFBhdGg6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmNsaXBQYXRoKG1f
cGF0aCwgbV93aW5kUnVsZSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUi
LCBpdGVtLndpbmRSdWxlKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogRHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXI6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlcikKICAgICA6IG1fc291cmNlSW1hZ2VJ
ZGVudGlmaWVyKHNvdXJjZUltYWdlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlSW1hZ2VSZWN0
KHNvdXJjZUltYWdlUmVjdCkKQEAgLTI5MywxMyArMTc2LDYgQEAgdm9pZCBEcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZUJ1ZmZlciog
c291cmMKICAgICBjb250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBt
X3NvdXJjZUltYWdlUmVjdCwgbV9maWx0ZXIsIHJlc3VsdHMpOwogfQogCi1zdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXImIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRp
ZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0
eSgic291cmNlLWltYWdlLXJlY3QiLCBpdGVtLnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGZvbnRJZGVudGlmaWVyLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmIGds
eXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYmIGFkdmFuY2VzLCBjb25zdCBG
bG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAgOiBtX2ZvbnRJZGVudGlmaWVyKGZvbnRJZGVu
dGlmaWVyKQogICAgICwgbV9nbHlwaHMoV1RGTW92ZShnbHlwaHMpKQpAQCAtMzQ2LDE2ICsyMjIs
NiBAQCB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKICAg
ICB9CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3R2x5cGhzJiBpdGVtKQotewotICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYu
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkp
OwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5jaG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgp
KTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxlbmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsK
LQotICAgIHJldHVybiB0czsKLX0KLQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3
SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0zNjYsMTQgKzIzMiw2IEBAIHZvaWQgRHJhd0ltYWdlQnVmZmVy
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBp
bWFnCiAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIG1fZGVzdGluYXRp
b25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCi17
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3Qi
LCBpdGVtLnNvdXJjZSgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0u
ZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zODQsMjcgKzI0MiwxMSBAQCB2
b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRp
dmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd05hdGl2ZUltYWdlJiBpdGVtKQotewotICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYu
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50
aWZpZXIoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNl
KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJl
Y3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIERyYXdTeXN0ZW1JbWFnZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd1N5c3Rl
bUltYWdlKG1fc3lzdGVtSW1hZ2UsIG1fZGVzdGluYXRpb25SZWN0KTsKIH0KIAotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdTeXN0ZW1JbWFn
ZSYgaXRlbSkKLXsKLSAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgotICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KIERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pbWFnZUlkZW50
aWZpZXIoaW1hZ2VJZGVudGlmaWVyKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKQEAg
LTQzNiwyOSArMjc4LDExIEBAIHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgU291cmNlSW1hZ2UmIHNvdXJjZUltYWdlKSBjb25zCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHko
ImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKLSAgICB0cy5kdW1w
UHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwgaXRlbS5wYXR0ZXJuVHJhbnNmb3JtKCkpOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0IiwgaXRlbS50aWxlUmVjdCgpKTsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdFJlY3QoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2UoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJz
cGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3
UmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRl
eHQuZHJhd1JlY3QobV9yZWN0LCBtX2JvcmRlclRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkK
LXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJib3JkZXItdGhpY2tuZXNzIiwgaXRlbS5ib3JkZXJUaGlja25lc3MoKSk7Ci0g
ICAgcmV0dXJuIHRzOwotfQotCiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6Omxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0
IGJvdW5kczsKQEAgLTQ3MSwxMyArMjk1LDYgQEAgdm9pZCBEcmF3TGluZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuZHJhd0xpbmUobV9wb2ludDEs
IG1fcG9pbnQyKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9p
bnQtMSIsIGl0ZW0ucG9pbnQxKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMiIsIGl0
ZW0ucG9pbnQyKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogRHJhd0xpbmVzRm9yVGV4dDo6RHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lk
dGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSBzdHlsZSkK
ICAgICA6IG1fYmxvY2tMb2NhdGlvbihibG9ja0xvY2F0aW9uKQogICAgICwgbV9sb2NhbEFuY2hv
cihsb2NhbEFuY2hvcikKQEAgLTUwNiwxOSArMzIzLDYgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSkKLXsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImJsb2NrLWxvY2F0aW9uIiwgaXRlbS5ibG9ja0xvY2F0aW9uKCkpOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibG9jYWwtYW5jaG9yIiwgaXRlbS5sb2NhbEFuY2hvcigpKTsK
LSAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50IiwgaXRlbS5wb2ludCgpKTsKLSAgICB0cy5kdW1w
UHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0udGhpY2tuZXNzKCkpOwotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICB0cy5kdW1wUHJvcGVydHko
IndpZHRocyIsIGl0ZW0ud2lkdGhzKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaXMtcHJpbnRp
bmciLCBpdGVtLmlzUHJpbnRpbmcoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJkb3VibGUiLCBp
dGVtLmRvdWJsZUxpbmVzKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgY29udGV4dC5kcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKG1fcmVjdCwgewpAQCAtNTMy
LDM0ICszMzYsMTYgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXI6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ28KICAgICByZXR1cm4gbV9yZWN0
OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIERyYXdF
bGxpcHNlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29u
dGV4dC5kcmF3RWxsaXBzZShtX3JlY3QpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0VsbGlwc2UmIGl0ZW0pCi17Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQog
dm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGNvbnRleHQuZHJhd1BhdGgobV9wYXRoKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJikKLXsKLSAgICAvLyBGSVhN
RTogYWRkIGxvZ2dpbmcgZm9yIHBhdGhzLgotICAgIHJldHVybiB0czsKLX0KLQogdm9pZCBEcmF3
Rm9jdXNSaW5nUGF0aDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGNvbnRleHQuZHJhd0ZvY3VzUmluZyhtX3BhdGgsIG1fd2lkdGgsIG1fb2Zmc2V0LCBtX2Nv
bG9yKTsKQEAgLTU3MiwxNSArMzU4LDYgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdG
b2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKLXsKLS8vICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsgLy8gRklYTUU6IGFkZCBsb2dnaW5nIGZvciBw
YXRocy4KLSAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKLSAgICB0
cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOwotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogRHJhd0Zv
Y3VzUmluZ1JlY3RzOjpEcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4m
IHJlY3RzLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgOiBtX3JlY3RzKHJlY3RzKQogICAgICwgbV93aWR0aCh3aWR0aCkKQEAgLTYwMywzOCArMzgw
LDE2IEBAIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdG
b2N1c1JpbmdSZWN0cyYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3RzIiwgaXRl
bS5yZWN0cygpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsK
LSAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOwotICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKLX0KLQog
dm9pZCBGaWxsUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0KTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0JiBpdGVtKQotewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0K
IHZvaWQgRmlsbFJlY3RXaXRoQ29sb3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxSZWN0KG1fcmVjdCwgbV9jb2xvcik7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVj
dFdpdGhDb2xvciYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJl
Y3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiBGaWxsUmVjdFdpdGhHcmFkaWVudDo6RmlsbFJlY3RXaXRoR3JhZGll
bnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgOiBtX3Jl
Y3QocmVjdCkKICAgICAsIG1fZ3JhZGllbnQoZ3JhZGllbnQpCkBAIC02NDYsNTMgKzQwMSwyMSBA
QCB2b2lkIEZpbGxSZWN0V2l0aEdyYWRpZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiAgICAgY29udGV4dC5maWxsUmVjdChtX3JlY3QsIG1fZ3JhZGllbnQuZ2V0KCkp
OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCi17Ci0gICAgLy8gRklYTUU6IGxvZyBncmFk
aWVudC4KLSAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCiB2b2lkIEZpbGxDb21wb3NpdGVkUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0LCBtX2Nv
bG9yLCBtX29wLCBtX2JsZW5kTW9kZSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9zaXRlZFJlY3QmIGl0ZW0pCi17Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdGlvbiIsIGl0ZW0uY29tcG9zaXRlT3BlcmF0b3IoKSk7Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwot
fQotCiB2b2lkIEZpbGxSb3VuZGVkUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KG1fcmVjdCwgbV9jb2xvciwg
bV9ibGVuZE1vZGUpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFJvdW5kZWRSZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3QoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJj
b2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwg
aXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShtX3JlY3QsIG1fcm91bmRlZEhvbGVS
ZWN0LCBtX2NvbG9yKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJiBpdGVtKQotewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHko
InJvdW5kZWQtaG9sZS1yZWN0IiwgaXRlbS5yb3VuZGVkSG9sZVJlY3QoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiAj
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAKIHZvaWQgRmlsbExpbmU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTcwMCw2OSArNDIzLDMzIEBAIHZvaWQgRmls
bExpbmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsTGluZSYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxB
cmM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgRmlsbFF1
YWRDdXJ2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNv
bnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQog
dm9pZCBGaWxsQmV6aWVyQ3VydmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0
ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJl
dHVybiB0czsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotCi12b2lk
IEZpbGxQYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CisjZW5kaWYg
Ly8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK3ZvaWQgRmlsbFBhdGg6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0
aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGaWxsUGF0aCYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEZpbGxFbGxpcHNlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsRWxsaXBz
ZShtX3JlY3QpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJy
ZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogI2lmIEVOQUJMRShWSURF
TykKIFBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBw
bGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiAgICAgOiBtX2lkZW50aWZpZXIo
cGxheWVyLmlkZW50aWZpZXIoKSkKQEAgLTc3NiwxMSArNDYzLDYgQEAgTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0
ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRp
b24oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQogI2VuZGlmCiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dApAQCAtNzk1LDEzICs0NzcsNiBAQCB2b2lkIFN0cm9rZVJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZVJlY3QobV9yZWN0LCBtX2xp
bmVXaWR0aCk7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVj
dCIsIGl0ZW0ucmVjdCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVt
LmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNz
IGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgpAQCAt
ODE3LDEyICs0OTIsNiBAQCB2b2lkIFN0cm9rZVBhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZVBhdGgobV9wYXRoKTsKIH0KIAotc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBh
dGgmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwot
ICAgIHJldHVybiB0czsKLX0KLQogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlw
c2U6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpA
QCAtODM3LDEyICs1MDYsNiBAQCB2b2lkIFN0cm9rZUVsbGlwc2U6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZUVsbGlwc2UobV9yZWN0KTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRl
bS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IFN0cm9rZUxpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNr
bmVzcygpOwpAQCAtODY1LDEzICs1MjgsNiBAQCB2b2lkIFN0cm9rZUxpbmU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7
CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTdHJva2VMaW5lJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVt
LnN0YXJ0KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAg
cmV0dXJuIHRzOwotfQotCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAKIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VBcmM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTg4OSwxMiArNTQ1LDYgQEAgdm9pZCBTdHJva2VBcmM6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LnN0cm9r
ZVBhdGgocGF0aCgpKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHko
InBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gU3Ryb2tlUXVhZEN1cnZlOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJv
a2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5n
UGF0aCgpLgpAQCAtOTEwLDEyICs1NjAsNiBAQCB2b2lkIFN0cm9rZVF1YWRDdXJ2ZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChw
YXRoKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBTdHJva2VCZXppZXJDdXJ2ZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ugc3Ry
b2tlIHRoaWNrbmVzcyBpbnRvIGFjY291bnQgY29ycmVjdGx5LCB2aWEgQ0dQYXRoQnlTdHJva2lu
Z1BhdGgoKS4KQEAgLTkzMSwxMiArNTc1LDYgQEAgdm9pZCBTdHJva2VCZXppZXJDdXJ2ZTo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChwYXRoKCkpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogI2VuZGlmIC8v
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogCiB2b2lkIENsZWFyUmVjdDo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtOTQ0LDIzICs1ODIsMTEgQEAgdm9pZCBDbGVh
clJlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0
LmNsZWFyUmVjdChtX3JlY3QpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIHZvaWQgQmVn
aW5UcmFuc3BhcmVuY3lMYXllcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewogICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihtX29wYWNpdHkpOwogfQog
Ci1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVn
aW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNp
dHkiLCBpdGVtLm9wYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB2b2lkIEVuZFRyYW5z
cGFyZW5jeUxheWVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgaWYgKGNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCkBAIC05ODUsMTIgKzYxMSw3
IEBAIHZvaWQgQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3NjYWxl
RmFjdG9yKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwotICAgIHJldHVybiB0
czsKLX0KLQorI2lmICFMT0dfRElTQUJMRUQKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpA
QCAtMTA2Nyw2ICs2ODgsMzkwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVtKQorewor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgieCIsIGl0ZW0ueCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
InkiLCBpdGVtLnkoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJhbmdsZSIsIGl0ZW0uYW5nbGUoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY2FsZSYgaXRlbSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoInNpemUiLCBpdGVtLmFtb3VudCgpKTsKKyAgICByZXR1cm4g
dHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dENUTSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBpdGVtLnRyYW5z
Zm9ybSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQoreworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7CisgICAgcmV0dXJuIHRzOworfQorCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJbmxpbmVGaWxs
Q29sb3ImIHN0YXRlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xv
cigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3sKKyAgICB0cy5k
dW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29sb3IoKSk7CisgICAgcmV0dXJuIHRzOworfQor
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJva2VU
aGlja25lc3MmIHN0YXRlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3Rh
dGUudGhpY2tuZXNzKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3RhdGUmIGl0ZW0pCit7CisgICAgdHMgPDwg
aXRlbS5zdGF0ZSgpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkKK3sKKyAgICB0cy5k
dW1wUHJvcGVydHkoImxpbmUtY2FwIiwgbGluZUNhcC5saW5lQ2FwKCkpOworICAgIHJldHVybiB0
czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0
TGluZURhc2gmIGxpbmVEYXNoKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIs
IGxpbmVEYXNoLmRhc2hBcnJheSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0
IiwgbGluZURhc2guZGFzaE9mZnNldCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVKb2luJiBsaW5lSm9p
bikKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2luLmxpbmVKb2lu
KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TWl0ZXJMaW1pdCYgbWl0ZXJMaW1pdCkKK3sKKyAgICB0cy5kdW1w
UHJvcGVydHkoIm1pdHJlLWxpbWl0IiwgbWl0ZXJMaW1pdC5taXRlckxpbWl0KCkpOworICAgIHJl
dHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgQ2xpcCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3Qo
KSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVj
dCIsIGl0ZW0ucmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQorewor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdl
QnVmZmVySWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0
ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dFRvUGF0aCYgaXRlbSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRz
OworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlw
UGF0aCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUiLCBpdGVtLndpbmRSdWxlKCkpOworICAg
IHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVy
KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBpdGVtLnNvdXJj
ZUltYWdlUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pCit7CisgICAgLy8gRklY
TUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIs
IGl0ZW0ubG9jYWxBbmNob3IoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJhbmNob3ItcG9pbnQi
LCBpdGVtLmFuY2hvclBvaW50KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGVuZ3RoIiwgaXRl
bS5nbHlwaHMoKS5zaXplKCkpOworCisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3Qi
LCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0u
ZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQorewor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlm
aWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0
KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1N5c3RlbUltYWdlJiBpdGVtKQoreworICAgIC8vIEZJWE1FOiBk
dW1wIG1vcmUgc3R1ZmYuCisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0u
ZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pCit7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIo
KSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuLXRyYW5zZm9ybSIsIGl0ZW0ucGF0dGVy
blRyYW5zZm9ybSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRpbGUtcmVjdCIsIGl0ZW0udGls
ZVJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RSZWN0
KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGhhc2UiLCBpdGVtLnBoYXNlKCkpOworICAgIHRz
LmR1bXBQcm9wZXJ0eSgic3BhY2luZyIsIGl0ZW0uc3BhY2luZygpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdS
ZWN0JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoImJvcmRlci10aGlja25lc3MiLCBpdGVtLmJvcmRlclRoaWNr
bmVzcygpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0
eSgicG9pbnQtMSIsIGl0ZW0ucG9pbnQxKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQt
MiIsIGl0ZW0ucG9pbnQyKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSkKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoImJsb2NrLWxvY2F0aW9uIiwgaXRlbS5ibG9ja0xvY2F0aW9u
KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibG9jYWwtYW5jaG9yIiwgaXRlbS5sb2NhbEFuY2hv
cigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50IiwgaXRlbS5wb2ludCgpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0udGhpY2tuZXNzKCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoIndpZHRocyIsIGl0ZW0ud2lkdGhzKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaXMt
cHJpbnRpbmciLCBpdGVtLmlzUHJpbnRpbmcoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkb3Vi
bGUiLCBpdGVtLmRvdWJsZUxpbmVzKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7
CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEcmF3RWxsaXBzZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0aCYgaXRlbSkKK3sKKyAgICB0cy5k
dW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5n
UGF0aCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aCIsIGl0ZW0ud2lkdGgoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJvZmZzZXQiLCBpdGVtLm9mZnNldCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRl
bSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3RzIiwgaXRlbS5yZWN0cygpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3Ii
LCBpdGVtLmNvbG9yKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3QmIGl0ZW0pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29s
b3ImIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOworICAgIHJldHVybiB0
czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCit7CisgICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4K
KyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAgcmV0dXJuIHRz
OworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
Q29tcG9zaXRlZFJlY3QmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRl
bS5yZWN0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlvbiIsIGl0ZW0uY29tcG9zaXRl
T3BlcmF0b3IoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVu
ZE1vZGUoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmIGl0ZW0pCit7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yb3VuZGVkUmVjdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1v
ZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
JiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInJvdW5kZWQtaG9sZS1yZWN0IiwgaXRlbS5yb3VuZGVkSG9sZVJl
Y3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7CisgICAg
cmV0dXJuIHRzOworfQorCisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxMaW5lJiBpdGVtKQorewor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxB
cmMmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwor
ICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBh
dGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOworICAgIHJldHVybiB0czsK
K30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tl
QXJjJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
InBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRoJiBpdGVtKQorewor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxF
bGxpcHNlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pCisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRl
bSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlv
bigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKKwor
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUmVjdCYg
aXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJsaW5lLXdpZHRoIiwgaXRlbS5saW5lV2lkdGgoKSk7CisgICAgcmV0
dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTdHJva2VQYXRoJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0u
cGF0aCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInN0YXJ0IiwgaXRlbS5zdGFydCgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImVuZCIsIGl0ZW0uZW5kKCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVt
KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKKyAgICByZXR1
cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJv
cGFjaXR5IiwgaXRlbS5vcGFjaXR5KCkpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3Rv
ciYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInNjYWxlLWZhY3RvciIsIGl0ZW0uc2Nh
bGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgdHMgPDwgaXRlbS50eXBl
KCk7CkBAIC0xMjU3LDYgKzEyNjIsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgfQogICAgIHJldHVybiB0czsKIH0KKyNlbmRp
ZgogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYzdlZGU3YWRhZWZjNzNh
YTM1NjU0ZTU0OTM4YTE0MmExMjNhZThhYy4uZDE0NDA3NzNhZWQzYWY4NjZmNDllMjc2OTFkNWZj
Nzk5OWZmMTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yMDUwLDcg
KzIwNTAsNjkgQEAgdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50CiBzaXplX3Qg
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwog
SXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAor
I2lmICFMT0dfRElTQUJMRUQKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IFRyYW5zbGF0ZSYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0
Q1RNJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBDb25jYXRlbmF0ZUNUTSYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7CitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxp
bmVTdHJva2VDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7CitXRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0
TGluZUNhcCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgU2V0TGluZURhc2gmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0
Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBDbGlwJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBDbGlwT3V0Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRv
UGF0aCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgQ2xpcFBhdGgmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7CitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5
cGhzJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1N5c3Rl
bUltYWdlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3UGF0dGVybiYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJik7CitXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
TGluZXNGb3JUZXh0Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7CitXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBz
ZSYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd1BhdGgmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7CitXRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVj
dHMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOworV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoR3Jh
ZGllbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0Jik7CitXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZSYpOworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmls
bExpbmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxBcmMmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxCZXppZXJDdXJ2ZSYp
OworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgU3Ryb2tlQXJjJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJik7
CisjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUGF0aCYpOworV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEVs
bGlwc2UmKTsKKyNpZiBFTkFCTEUoVklERU8pCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VQYXRoJik7CitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VF
bGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBTdHJva2VMaW5lJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGVhclJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXImKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImKTsKKwogVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YjE5MzU5ODAzMjM3
YTUzMzUwMTYwNTc5NjRiOTdhMTg5YjFhZGExLi5iYmM2ZjdiZTNkNzEzYWY1NDUxMGUwNDI4MmFh
NDA5MmRmYzc1OTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDUtMDQgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBsb2dnaW5n
IG9mIGRpc3BsYXkgbGlzdCBpdGVtcyBpbiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDA1MworCisgICAgICAgIFJldmlld2Vk
IGJ5IENhbWVyb24gTWNDb3JtYWNrLgorCisgICAgICAgIE5vdyB0aGF0IGRpc3BsYXkgbGlzdCBs
b2dnaW5nIGlzIGRlYnVnIG9ubHksIHRoZXNlIHRlc3RzIHdpbGwgb25seSB3b3JrIGluIGRlYnVn
IGJ1aWxkcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIyLTA1LTA0ICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBb
UmViYXNlbGluZV0gUkVHUkVTU0lPTiAocjI5MzAzOCk6WyBpT1MgXSBmYXN0L2Zvcm1zL2F1dG8t
ZmlsbC1idXR0b24vaW5wdXQtYXV0by1maWxsLWJ1dHRvbi5odG1sIGlzIGEgY29uc2lzdGVudCBm
YWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNl
NjVjNDNjMTZmOTE0M2I3MzFhNmYyZGVlZTQxMjNjNWY3ZjE4NjEuLjVlNjEzNDk3YTVlMjQ2N2Ni
YTJlN2Y5MGI5ODFiZTBkMjNlNGQ3YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCkBAIC04LDcgKzgsNiBAQAogCiBhY2Nlc3NpYmlsaXR5L21hYyBbIFBhc3Mg
XQogY29tcG9zaXRpbmcvc2Nyb2xsaW5nL2FzeW5jLW92ZXJmbG93LXNjcm9sbGluZy9tYWMgWyBQ
YXNzIF0KLWRpc3BsYXlsaXN0cyBbIFBhc3MgXQogZWRpdGluZy9leGVjQ29tbWFuZC9tYWMgWyBQ
YXNzIF0KIGVkaXRpbmcvaW5wdXQvY29jb2EgWyBQYXNzIF0KIGVkaXRpbmcvbWFjIFsgUGFzcyBd
CkBAIC0xOCw2ICsxNyw5IEBAIGZhc3Qvc2Nyb2xsaW5nL2xhdGNoaW5nIFsgUGFzcyBdCiBtb2Rl
bC1lbGVtZW50IFsgUGFzcyBdCiBmYXN0L2ltYWdlcy9tYWMgWyBQYXNzIF0KIAorIyBEaXNwbGF5
IGxpc3QgbG9nZ2luZyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBkZWJ1ZworWyBEZWJ1ZyBdIGRpc3Bs
YXlsaXN0cyBbIFBhc3MgXQorCiAjIERpc2FibGUgcGx1Zy1pbiB0ZXN0cyBvbiBBcHBsZSBTaWxp
Y29uCiBbIGFybTY0IF0gY29tcG9zaXRpbmcvcGx1Z2lucyBbIFNraXAgXQogWyBhcm02NCBdIGh0
dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>