<?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>218425</bug_id>
          
          <creation_ts>2020-11-01 11:27:28 -0800</creation_ts>
          <short_desc>[Concurrent display lists] Add API tests for WebCore::DisplayList::DisplayList and related classes</short_desc>
          <delta_ts>2020-11-06 14:02:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>
          <dependson>218406</dependson>
    
    <dependson>218619</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703405</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-01 11:27:28 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704964</commentid>
    <comment_count>1</comment_count>
      <attachid>413337</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-05 11:59:28 -0800</bug_when>
    <thetext>Created attachment 413337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705044</commentid>
    <comment_count>2</comment_count>
      <attachid>413363</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-05 16:07:32 -0800</bug_when>
    <thetext>Created attachment 413363
Depends on #218406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705328</commentid>
    <comment_count>3</comment_count>
      <attachid>413454</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-06 11:36:14 -0800</bug_when>
    <thetext>Created attachment 413454
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705334</commentid>
    <comment_count>4</comment_count>
      <attachid>413455</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-06 11:42:11 -0800</bug_when>
    <thetext>Created attachment 413455
Fix minor ChangeLog typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705407</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-06 14:01:47 -0800</bug_when>
    <thetext>Committed r269542: &lt;https://trac.webkit.org/changeset/269542&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413455.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705408</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-06 14:02:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/71132378&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413337</attachid>
            <date>2020-11-05 11:59:28 -0800</date>
            <delta_ts>2020-11-05 16:07:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218425-20201105115927.patch</filename>
            <type>text/plain</type>
            <size>18774</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUxOGNiYWY1NjBhYjY1
MDEzZWE4MWIxNzcxZGQ0MWIyNTJmN2Q4Yy4uMWVhZmQzZWFjNDJlYWVkZTQ5Y2NhNWY0YmE5NzU1
YzgyYjgxZGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIEFkZCBBUEkgdGVzdHMgZm9yIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCBhbmQgcmVsYXRlZCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgVG9vbHMvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjppc0RyYXdpbmdJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6aXNEcmF3aW5nSXRlbSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudDo6
Z3JhZGllbnQgY29uc3QpOgorCiAyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rhc2hBcnJheS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCmluZGV4IDc4OTkwNjJjMjY0M2E3ZmU2NDhjYWE1NmJhNzM4ZjhiZGI0YjkxNzcu
LjUxNDI5NjcwZWVhNTgxZTZiNmJiZTAzZGZiZmE2NjM2NDFkZTczMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC01MjksMTEgKzUyOSw2IEBAIHZv
aWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgfQogfQogCi1ib29sIEl0ZW1IYW5kbGU6Omlz
RHJhd2luZ0l0ZW0oKSBjb25zdAotewotICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
aXNEcmF3aW5nSXRlbSh0eXBlKCkpOwotfQotCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1C
dWZmZXJIYW5kbGVzJiYgaGFuZGxlcykKICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUo
aGFuZGxlcykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5k
ZXggMzMyZTk0NTM5MDcyOGZhNzE2YjQ5M2Q4NDE1ZDdhMTQ1ODkzYTBmNi4uYmFmNDJjZjY0OGE3
MGM0OWM4YjZmMTRjNDAxMGMxMDE0M2Y1ZTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZvaWQgZGVzdHJveSgpOwot
ICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0OworICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgp
IGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUo
KSk7IH0KIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0K
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFkYXRhOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAyYTQ2MjZlOGViMzE1MGQ4MTg1NGNmYjJhZTJhYjYz
ZTMyYzBhNzQ5Li41NjQyMTM3NWYxNWQwNTUyYTgxYmU0MzBjNmFiOWVmYTAzYzNhMGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE5OTMsNiArMTk5Myw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBGaWxsUmVjdFdpdGhHcmFkaWVudChjb25zdCBGbG9hdFJl
Y3QmLCBHcmFkaWVudCYpOwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgR3JhZGllbnQmIGdyYWRpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFkaWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDk4OGMwOGNmNjI3NGNiNWNlMjE5NmFkZDAyZjZlMjY2YjkzMGQyMTYuLjZkYjNm
OTYxYjYxYzMxMjdjMTI1YjRjOWQ5ZThhMDc1MTc5ZTlmYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0xMS0w
NSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29u
Y3VycmVudCBkaXNwbGF5IGxpc3RzXSBBZGQgQVBJIHRlc3RzIGZvciBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHR3byBuZXcgYW4gQVBJIHRlc3RzOgor
ICAgICAgICAtICAgT25lIHRoYXQgY292ZXJzIGJhc2ljIGRpc3BsYXkgbGlzdCBmdW5jdGlvbmFs
aXR5IChpLmUuIGFwcGVuZGluZyBpdGVtcywgY2hlY2tpbmcgd2hldGhlciBhIGRpc3BsYXkgbGlz
dCBpcworICAgICAgICAgICAgZW1wdHksIGNsZWFyaW5nIGEgZGlzcGxheSBsaXN0IGFuZCBpdGVy
YXRpbmcgb3ZlciBpdGVtcykuCisgICAgICAgIC0gICBBbm90aGVyIHRoYXQgZXhlcmNpc2VzIHRo
ZSBpdGVtIGJ1ZmZlciBjbGllbnQgaG9va3MgdG8gcHJvdmlkZSBkYXRhIGZvciB3cml0aW5nIGFu
ZCBlbmNvZGUgYW5kIGRlY29kZSBvdXQtCisgICAgICAgICAgICBvZi1saW5lIGRpc3BsYXkgbGlz
dCBpdGVtcy4gVGhpcyB0ZXN0IHVzZXMgdG95IFJlYWRlci9Xcml0ZXIgY2xhc3NlcyB0aGF0IGtu
b3cgaG93IHRvICJlbmNvZGUiIGFuZCAiZGVjb2RlIgorICAgICAgICAgICAgYFN0cm9rZVBhdGhg
IGl0ZW1zIGJ5IHN0b3JpbmcgYW5kIHJlYWRpbmcgOC1ieXRlIGluZGljZXMgaW50byBhIHNoYXJl
ZCBgVmVjdG9yPFN0cm9rZVBhdGg+YC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
cmVhdGVDb21wbGV4UGF0aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAy
MC0xMS0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXQg
dXAgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDViNTA4OTM2NzQzY2QxMDAyNTNiMDVhNDEzYjFkNmFhNTk3YjcyMjgu
LjEyMjljYTA1Yzc4MjM5YmE3MTYyOWFkOWUwODI0YTQ1MGQwMDA4OTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDk4LDYgKzEwOTgsNyBAQAogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDAxMEI4MTI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87
IH07CiAJCUY0MDJGNTZDMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJv
dG9jb2wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1t
ICovOyB9OwogCQlGNDA3RkUzOTFGMUQwREZDMDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDdGRTM4
MUYxRDBERTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgKi87IH07CisJCUY0MDk0Q0M3MjU1NDVC
RDUwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFRlc3RzLmNwcCAqLzsgfTsKIAkJRjQxMDZDNjkyMUFDQkY4NDAwNEI4OUExIC8qIFdL
V2ViVmlld0ZpcnN0UmVzcG9uZGVyVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDEwNkM2ODIxQUNCRjg0MDA0Qjg5QTEgLyogV0tXZWJWaWV3
Rmlyc3RSZXNwb25kZXJUZXN0cy5tbSAqLzsgfTsKIAkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlC
IC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDE1MDg2QzFEQTA0MEMxMDA0NEJFOUIgLyogcGxh
eS1hdWRpby1vbi1jbGljay5odG1sICovOyB9OwogCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYg
LyogUm91bmRlZFJlY3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0
cy5jcHAgKi87IH07CkBAIC0xOTU4LDcgKzE5NTksNyBAQAogCQk0NDA3N0JCMDIzMTQ0OUQyMDAx
NzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3lu
Y2hyb25vdXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDQ4MTEwQzEyNTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgcGF0aCA9IFdl
YlByZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ4MTEw
QzEyNTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1l
bnRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZXF1
ZXN0QWN0aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0OEQ3RTQ1MUVBNkM1NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW52aXJvbm1lbnRVdGlsaXRp
ZXNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJC
NjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI4MjMsNiArMjgyNCw3IEBACiAJCUY0MDEwQjgyMjREQTI2N0YwMEE4NzZFMiAvKiBQ
b3NlQXNDbGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQb3NlQXNDbGFz
cy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Qb3NlQXNDbGFzcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlX
S0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlXS0lu
dGVyYWN0aW9uVmlld1Byb3RvY29sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDA3RkUzODFGMUQwREU2MDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGVub3Jtb3VzLnN2
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQzYyNTU0NUJENTAwM0Q3M0Uz
IC8qIERpc3BsYXlMaXN0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RU
ZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA2QzY4MjFBQ0JGODQw
MDRCODlBMSAvKiBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tXZWJWaWV3Rmlyc3RSZXNwb25kZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24t
Y2xpY2suaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwbGF5LWF1ZGlvLW9uLWNs
aWNrLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE4QkUxNDFGNzFCN0RD
MDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb3Vu
ZGVkUmVjdFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0ODIsNiAr
MzQ4NCw3IEBACiAJCQkJMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVyLmNw
cCAqLywKIAkJCQkyNjBCQTU3QTFCMUQyRUUyMDA0RkEwN0MgLyogREZBSGVscGVycy5oICovLAog
CQkJCTI2RjZFMUVGMUFEQzc0OUIwMERFNjk2QiAvKiBERkFNaW5pbWl6ZXIuY3BwICovLAorCQkJ
CUY0MDk0Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCAqLywKIAkJ
CQk5MzkxNUExNjI0REI2NkM3MDAxOUZGNDMgLyogRG9jdW1lbnRPcmRlci5jcHAgKi8sCiAJCQkJ
MzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgKi8sCiAJ
CQkJNTc5NjUxRTYyMTZCRkQ1MzAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgKi8s
CkBAIC01MzQxLDYgKzUzNDQsNyBAQAogCQkJCTlCMjM0NjQyMUY5NDNFMjcwMERCMUQyMyAvKiBQ
YXN0ZVdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUQ4QzE5MDIyNjdCMjZEMDA3
OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MjgxMjcy
MzI1QzE5ODAwQkI3RTQyIC8qIFBERlNuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQw
OTRDQzcyNTU0NUJENTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0VGVzdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0UwNTMxRDBBNjQzQTAwRkVCQ0YzIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJM
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQ0M0RkU1MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0
dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMzI1QzkwNzIzRTM4
NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzkyZGNlZWUwZWZiMTQ4YTVmYmQ2YWQ5ZjVjNDNiZWYw
NjZmYjAyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhZGllbnQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q7Cit1c2luZyBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3Q7CisKK2NvbnN0ZXhwciBzaXplX3QgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFj
aXR5ID0gMSA8PCAxMjsKK3N0YXRpYyB1aW50OF90IGdsb2JhbEl0ZW1CdWZmZXJbZ2xvYmFsSXRl
bUJ1ZmZlckNhcGFjaXR5XTsKKworc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQo
KQoreworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25p
Y0RhdGEgeyB7IDAuLCAwLiB9LCAxLjI1IH0pOworICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjEsIENvbG9yOjpyZWQgfSk7CisgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNSwg
Q29sb3I6OmdyZWVuIH0pOworICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjksIENvbG9y
OjpibHVlIH0pOworICAgIHJldHVybiBncmFkaWVudDsKK30KKworc3RhdGljIFBhdGggY3JlYXRl
Q29tcGxleFBhdGgoKQoreworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLm1vdmVUbyh7IDEwLiwg
MTAuIH0pOworICAgIHBhdGguYWRkTGluZVRvKHsgNTAuLCA1MC4gfSk7CisgICAgcGF0aC5hZGRR
dWFkQ3VydmVUbyh7IDEwMC4sIDEwMC4gfSwgeyAwLiwgMjAwLiB9KTsKKyAgICBwYXRoLmFkZExp
bmVUbyh7IDEwLiwgMTAuIH0pOworICAgIHJldHVybiBwYXRoOworfQorCitURVNUKERpc3BsYXlM
aXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQoreworICAgIERpc3BsYXlMaXN0IGxpc3Q7CisKKyAgICBF
WFBFQ1RfVFJVRShsaXN0LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGdyYWRpZW50ID0gY3JlYXRl
R3JhZGllbnQoKTsKKyAgICBhdXRvIHBhdGggPSBjcmVhdGVDb21wbGV4UGF0aCgpOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGxpc3QuYXBwZW5kPFNldFN0
cm9rZVRoaWNrbmVzcz4oMS41KTsKKyAgICAgICAgbGlzdC5hcHBlbmQ8RmlsbFBhdGg+KHBhdGgp
OworICAgICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oRmxvYXRSZWN0IHsg
MS4sIDEuLCAxMC4sIDEwLiB9LCBncmFkaWVudCk7CisgICAgICAgIGxpc3QuYXBwZW5kPFNldElu
bGluZUZpbGxDb2xvcj4oQ29sb3I6OnJlZCk7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CisgICAgICAgIGxpc3QuYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KElubGluZVBhdGhEYXRhIHsg
TGluZURhdGEge3sgMC4sIDAuIH0sIHsgMTAuLCAxNS4gfX19KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEVYUEVDVF9GQUxTRShsaXN0LmlzRW1wdHkoKSk7CisKKyAgICBib29sIG9ic2VydmVkVW5l
eHBlY3RlZEl0ZW0gPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxp
c3QpIHsKKyAgICAgICAgc3dpdGNoIChoYW5kbGUudHlwZSgpKSB7CisgICAgICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczogeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhh
bmRsZS5pc0RyYXdpbmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlz
PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7CisgICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxl
LmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS50
aGlja25lc3MoKSwgMS41KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5k
bGUuaXNEcmF3aW5nSXRlbSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxG
aWxsUGF0aD4oKSk7CisgICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUGF0
aD4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0Zm9ybVBhdGgoKSwg
cGF0aC5wbGF0Zm9ybVBhdGgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogeworICAgICAgICAgICAg
RVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7CisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShoYW5kbGUuaXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOworICAgICAgICAgICAgYXV0
byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfRVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0
SW5saW5lRmlsbENvbG9yOiB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJh
d2luZ0l0ZW0oKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0SW5saW5l
RmlsbENvbG9yPigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldElu
bGluZUZpbGxDb2xvcj4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCksIENv
bG9yOjpyZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDog
eworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U3Ryb2tlSW5saW5lUGF0aD4oKSk7CisgICAg
ICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOworICAg
ICAgICAgICAgY29uc3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CisgICAgICAgICAgICBhdXRv
JiBsaW5lID0gcGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOworICAgICAgICAgICAgRVhQRUNU
X0VRKGxpbmUuc3RhcnQsIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgRVhQRUNUX0VR
KGxpbmUuZW5kLCBGbG9hdFBvaW50KDEwLiwgMTUuKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIG9ic2VydmVk
VW5leHBlY3RlZEl0ZW0gPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVt
KTsKKyAgICBFWFBFQ1RfR1QobGlzdC5zaXplSW5CeXRlcygpLCAwVSk7CisKKyAgICBsaXN0LmNs
ZWFyKCk7CisKKyAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7CisgICAgZm9yIChh
dXRvIGl0ZW1BbmRFeHRlbnQgOiBsaXN0KSB7CisgICAgICAgIFVOVVNFRF9QQVJBTShpdGVtQW5k
RXh0ZW50KTsKKyAgICAgICAgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IHRydWU7CisgICAgfQor
CisgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUShsaXN0LnNp
emVJbkJ5dGVzKCksIDBVKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRl
bSk7CisKKyAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwg
MCwgMTAwLCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKKworICAgIGZvciAoYXV0byBbaGFuZGxlLCBl
eHRlbnRdIDogbGlzdCkgeworICAgICAgICBFWFBFQ1RfRVEoaGFuZGxlLnR5cGUoKSwgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZp
bGxSZWN0V2l0aENvbG9yPigpKTsKKworICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxG
aWxsUmVjdFdpdGhDb2xvcj4oKTsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uY29sb3IoKS5hc0lu
bGluZSgpLCBDb2xvcjo6YmxhY2spOworICAgICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZs
b2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShsaXN0
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0dUKGxpc3Quc2l6ZUluQnl0ZXMoKSwgMFUpOworfQor
CitURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCit7CisgICAgVmVjdG9y
PFN0cm9rZVBhdGg+IHN0cm9rZVBhdGhJdGVtczsKKyAgICBzdGF0aWMgSXRlbUJ1ZmZlcklkZW50
aWZpZXIgZ2xvYmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworCisgICAgY2xhc3MgU3Ryb2tlUGF0aFJlYWRlciA6IHB1YmxpYyBJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJva2VQYXRoUmVhZGVyKGNv
bnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgaXRlbXMpCisgICAgICAgICAgICA6IG1faXRlbXMoaXRl
bXMpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9u
YWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5
cGU6OlN0cm9rZVBhdGgpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemVv
ZihzaXplX3QpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBtX2l0ZW1zWypyZWludGVycHJl
dF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXTsKKyAgICAgICAgICAgICpyZWludGVycHJldF9j
YXN0PFN0cm9rZVBhdGgqPihoYW5kbGVMb2NhdGlvbiArIHNpemVvZihJdGVtVHlwZSkpID0gaXRl
bTsKKyAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKKyAgICB9OworCisg
ICAgY2xhc3MgU3Ryb2tlUGF0aFdyaXRlciA6IHB1YmxpYyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJva2VQYXRoV3JpdGVyKFZlY3RvcjxTdHJva2VQ
YXRoPiYgaXRlbXMpCisgICAgICAgICAgICA6IG1faXRlbXMoaXRlbXMpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAg
RVhQRUNUX0xUKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAg
ICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xv
YmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUgaGFuZGxlKSBjb25zdCBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CisgICAgICAg
ICAgICBtX2l0ZW1zLmFwcGVuZChoYW5kbGUuZ2V0PFN0cm9rZVBhdGg+KCkpOworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KCZpbmRleCksIHNpemVvZihzaXplX3QpKTsKKyAgICAgICAgfQorCisgICAgICAgIFZlY3RvcjxT
dHJva2VQYXRoPiYgbV9pdGVtczsKKyAgICB9OworCisgICAgRGlzcGxheUxpc3QgbGlzdDsKKyAg
ICBTdHJva2VQYXRoV3JpdGVyIHdyaXRlciB7IHN0cm9rZVBhdGhJdGVtcyB9OworICAgIGxpc3Qu
c2V0SXRlbUJ1ZmZlckNsaWVudCgmd3JpdGVyKTsKKworICAgIGF1dG8gcGF0aCA9IGNyZWF0ZUNv
bXBsZXhQYXRoKCk7CisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KENvbG9y
OjpibHVlKTsKKyAgICBsaXN0LmFwcGVuZDxTdHJva2VQYXRoPihwYXRoKTsKKyAgICBsaXN0LmFw
cGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29sb3I6OnJlZCk7CisgICAgbGlzdC5hcHBlbmQ8
U3Ryb2tlUGF0aD4ocGF0aCk7CisKKyAgICBEaXNwbGF5TGlzdCBzaGFsbG93Q29weSB7eyBJdGVt
QnVmZmVySGFuZGxlIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwg
bGlzdC5zaXplSW5CeXRlcygpIH0gfX07CisgICAgU3Ryb2tlUGF0aFJlYWRlciByZWFkZXIgeyBz
dHJva2VQYXRoSXRlbXMgfTsKKyAgICBzaGFsbG93Q29weS5zZXRJdGVtQnVmZmVyQ2xpZW50KCZy
ZWFkZXIpOworCisgICAgVmVjdG9yPEl0ZW1UeXBlPiBpdGVtVHlwZXM7CisgICAgZm9yIChhdXRv
IFtoYW5kbGUsIGV4dGVudF0gOiBzaGFsbG93Q29weSkKKyAgICAgICAgaXRlbVR5cGVzLmFwcGVu
ZChoYW5kbGUudHlwZSgpKTsKKworICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5
KCkpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgpLCA0VSk7CisgICAgRVhQRUNUX0VR
KGl0ZW1UeXBlc1swXSwgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yKTsKKyAgICBFWFBF
Q1RfRVEoaXRlbVR5cGVzWzFdLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CisgICAgRVhQRUNUX0VR
KGl0ZW1UeXBlc1syXSwgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yKTsKKyAgICBFWFBF
Q1RfRVEoaXRlbVR5cGVzWzNdLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413363</attachid>
            <date>2020-11-05 16:07:32 -0800</date>
            <delta_ts>2020-11-06 11:36:12 -0800</delta_ts>
            <desc>Depends on #218406</desc>
            <filename>bug-218425-20201105160731.patch</filename>
            <type>text/plain</type>
            <size>15642</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJjMzgxNjdjY2MxNmNjOTY3NTI1ZjRmNWYxYWJhZmUy
NGU2M2VjMy4uMzZkYWI3MWJhYmFhZWNkMTFhNWQyNTUzNzU1OTczOTJjNjUxYzY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBBUEkgdGVzdHMgZm9yIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBhbmQgcmVsYXRlZCBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIG5ldyBh
biBBUEkgdGVzdHM6CisgICAgICAgIC0gICBPbmUgdGhhdCBjb3ZlcnMgYmFzaWMgZGlzcGxheSBs
aXN0IGZ1bmN0aW9uYWxpdHkgKGkuZS4gYXBwZW5kaW5nIGl0ZW1zLCBjaGVja2luZyB3aGV0aGVy
IGEgZGlzcGxheSBsaXN0IGlzCisgICAgICAgICAgICBlbXB0eSwgY2xlYXJpbmcgYSBkaXNwbGF5
IGxpc3QgYW5kIGl0ZXJhdGluZyBvdmVyIGl0ZW1zKS4KKyAgICAgICAgLSAgIEFub3RoZXIgdGhh
dCBleGVyY2lzZXMgdGhlIGl0ZW0gYnVmZmVyIGNsaWVudCBob29rcyB0byBwcm92aWRlIGRhdGEg
Zm9yIHdyaXRpbmcgYW5kIGVuY29kZSBhbmQgZGVjb2RlIG91dC0KKyAgICAgICAgICAgIG9mLWxp
bmUgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHRlc3QgdXNlcyB0b3kgUmVhZGVyL1dyaXRlciBj
bGFzc2VzIHRoYXQga25vdyBob3cgdG8gImVuY29kZSIgYW5kICJkZWNvZGUiCisgICAgICAgICAg
ICBgU3Ryb2tlUGF0aGAgaXRlbXMgYnkgc3RvcmluZyBhbmQgcmVhZGluZyA4LWJ5dGUgaW5kaWNl
cyBpbnRvIGEgc2hhcmVkIGBWZWN0b3I8U3Ryb2tlUGF0aD5gLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNyZWF0ZUNvbXBsZXhQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIwLTExLTA1ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4K
IAogICAgICAgICBDaGFuZ2UgbXkgKFBhdHJpY2sgQW5nbGUncykgc3RhdHVzIHRvIGNvbW1pdHRl
ci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjZlNGI3OWY3NjYzMWM5M2M4MDc5ZGM1NTY3
MmY2YjljN2E3ZDlhOC4uMDk3YmViYzEyNGEzNDllMjNiM2IzOTRiMzZlYzA0MGJlNGRlOWZjNCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTgsNiArMTA5OCw3IEBACiAJCUY0MDEwQjgz
MjREQTI2N0YwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDEwQjgxMjREQTI2N0YwMEE4NzZFMiAvKiBQb3Nl
QXNDbGFzcy5tbSAqLzsgfTsKIAkJRjQwMkY1NkMyM0VDQzJGQjAwODY1NTQ5IC8qIFVJV0tJbnRl
cmFjdGlvblZpZXdQcm90b2NvbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MDJGNTZCMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25W
aWV3UHJvdG9jb2wubW0gKi87IH07CiAJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBlbm9y
bW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQwN0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLzsgfTsKKwkJ
RjQwOTRDQzcyNTU0NUJENTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0VGVzdHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQzYyNTU0NUJENTAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0VGVzdHMuY3BwICovOyB9OwogCQlGNDEwNkM2OTIxQUNCRjg0
MDA0Qjg5QTEgLyogV0tXZWJWaWV3Rmlyc3RSZXNwb25kZXJUZXN0cy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MTA2QzY4MjFBQ0JGODQwMDRCODlB
MSAvKiBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tICovOyB9OwogCQlGNDE1MDg2RDFE
QTA0MEM1MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MTUwODZDMURBMDQwQzEw
MDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi87IH07CiAJCUY0MThCRTE1MUY3
MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBS
b3VuZGVkUmVjdFRlc3RzLmNwcCAqLzsgfTsKQEAgLTE5NTgsNyArMTk1OSw3IEBACiAJCTQ0MDc3
QkIwMjMxNDQ5RDIwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyog
UmVmTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkxv
Z2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0MTMw
MDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NDgxMTBDMTI1M0Y0MDI0MDA5N0ZDMzMgLyogV2ViUHJl
ZmVyZW5jZXNUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNUZXN0
Lm1tOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NDgxMTBDMTI1M0Y0MDI0MDA5N0ZDMzMgLyogV2ViUHJlZmVyZW5jZXNUZXN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNUZXN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDgxN0EyRTFGMDQ4NkJGMDAwMDM4MTAgLyogV0tSZXF1ZXN0
QWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQ4RDdFNDUxRUE2QzU1NTAwRUNDNzU2IC8qIEVudmlyb25tZW50VXRp
bGl0aWVzVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnZp
cm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NEE2MjJDMTE0QTBFMkI2MDA0ODUxNUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlN0cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjgyMyw2ICsyODI0LDcgQEAKIAkJRjQwMTBCODIyNERBMjY3
RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFBvc2VBc0NsYXNzLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL1Bvc2VB
c0NsYXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDJGNTZCMjNFQ0MyRkIw
MDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MDdGRTM4MUYxRDBERTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gZW5vcm1vdXMuc3ZnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENDNjI1
NTQ1QkQ1MDAzRDczRTMgLyogRGlzcGxheUxpc3RUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEaXNwbGF5TGlzdFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQx
MDZDNjgyMUFDQkY4NDAwNEI4OUExIC8qIFdLV2ViVmlld0ZpcnN0UmVzcG9uZGVyVGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE1MDg2QzFEQTA0MEMxMDA0NEJFOUIgLyog
cGxheS1hdWRpby1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBs
YXktYXVkaW8tb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJvdW5kZWRSZWN0VGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzQ4Miw2ICszNDg0LDcgQEAKIAkJCQkyNjBCQTU3ODFCMUQyRTdCMDA0RkEwN0MgLyog
REZBQ29tYmluZXIuY3BwICovLAogCQkJCTI2MEJBNTdBMUIxRDJFRTIwMDRGQTA3QyAvKiBERkFI
ZWxwZXJzLmggKi8sCiAJCQkJMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXpl
ci5jcHAgKi8sCisJCQkJRjQwOTRDQzYyNTU0NUJENTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0VGVz
dHMuY3BwICovLAogCQkJCTkzOTE1QTE2MjREQjY2QzcwMDE5RkY0MyAvKiBEb2N1bWVudE9yZGVy
LmNwcCAqLywKIAkJCQkzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvclRl
c3RzLmNwcCAqLywKIAkJCQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3Nh
Z2VUZXN0LmNwcCAqLywKQEAgLTUxMjEsNiArNTEyNCw3IEBACiAJCQkJN0NDRTdFRUExQTQxMUFF
NjAwNDQ3QzRDIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUQ1N0FDMjExREE3NDY1QjAwRkYxQkRFIC8qIERpZFJlbW92ZUZyYW1lRnJvbUhpZWFyY2h5SW5Q
YWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTQyNENFOTc1RjAwQURCQzM1
IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDA5NENDNzI1NTQ1
QkQ1MDAzRDczRTMgLyogRGlzcGxheUxpc3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
M0JENzMxODIzQTg0NjUwMDAyMEY0NTAgLyogRGlzcGxheU5hbWUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MThFRTUxQjIwQTc4RDAwMDBFMDI0RjMgLyogRG9BZnRlck5leHRQcmVzZW50YXRpb25V
cGRhdGVBZnRlckNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3RkQxOTMyMjQxOTA4NzAw
Nzg4N0YxIC8qIERvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMmU0OWExYTY2NWZlMTQ2NWIwMGZlMjRlNTcwZjE0NTZhOWY3ZmVk
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGll
bnQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q7Cit1c2luZyBuYW1lc3BhY2UgRGlz
cGxheUxpc3Q7CisKK2NvbnN0ZXhwciBzaXplX3QgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5ID0g
MSA8PCAxMjsKK3N0YXRpYyB1aW50OF90IGdsb2JhbEl0ZW1CdWZmZXJbZ2xvYmFsSXRlbUJ1ZmZl
ckNhcGFjaXR5XTsKKworc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoKQorewor
ICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25pY0RhdGEg
eyB7IDAuLCAwLiB9LCAxLjI1IH0pOworICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEs
IENvbG9yOjpyZWQgfSk7CisgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNSwgQ29sb3I6
OmdyZWVuIH0pOworICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjksIENvbG9yOjpibHVl
IH0pOworICAgIHJldHVybiBncmFkaWVudDsKK30KKworc3RhdGljIFBhdGggY3JlYXRlQ29tcGxl
eFBhdGgoKQoreworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLm1vdmVUbyh7IDEwLiwgMTAuIH0p
OworICAgIHBhdGguYWRkTGluZVRvKHsgNTAuLCA1MC4gfSk7CisgICAgcGF0aC5hZGRRdWFkQ3Vy
dmVUbyh7IDEwMC4sIDEwMC4gfSwgeyAwLiwgMjAwLiB9KTsKKyAgICBwYXRoLmFkZExpbmVUbyh7
IDEwLiwgMTAuIH0pOworICAgIHJldHVybiBwYXRoOworfQorCitURVNUKERpc3BsYXlMaXN0VGVz
dHMsIEFwcGVuZEl0ZW1zKQoreworICAgIERpc3BsYXlMaXN0IGxpc3Q7CisKKyAgICBFWFBFQ1Rf
VFJVRShsaXN0LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGdyYWRpZW50ID0gY3JlYXRlR3JhZGll
bnQoKTsKKyAgICBhdXRvIHBhdGggPSBjcmVhdGVDb21wbGV4UGF0aCgpOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGxpc3QuYXBwZW5kPFNldFN0cm9rZVRo
aWNrbmVzcz4oMS41KTsKKyAgICAgICAgbGlzdC5hcHBlbmQ8RmlsbFBhdGg+KHBhdGgpOworICAg
ICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oRmxvYXRSZWN0IHsgMS4sIDEu
LCAxMC4sIDEwLiB9LCBncmFkaWVudCk7CisgICAgICAgIGxpc3QuYXBwZW5kPFNldElubGluZUZp
bGxDb2xvcj4oQ29sb3I6OnJlZCk7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAg
ICAgIGxpc3QuYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KElubGluZVBhdGhEYXRhIHsgTGluZURh
dGEge3sgMC4sIDAuIH0sIHsgMTAuLCAxNS4gfX19KTsKKyNlbmRpZgorICAgIH0KKworICAgIEVY
UEVDVF9GQUxTRShsaXN0LmlzRW1wdHkoKSk7CisKKyAgICBib29sIG9ic2VydmVkVW5leHBlY3Rl
ZEl0ZW0gPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxpc3QpIHsK
KyAgICAgICAgc3dpdGNoIChoYW5kbGUudHlwZSgpKSB7CisgICAgICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0cm9rZVRoaWNrbmVzczogeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5p
c0RyYXdpbmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldFN0
cm9rZVRoaWNrbmVzcz4oKSk7CisgICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxT
ZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS50aGlja25l
c3MoKSwgMS41KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxQYXRoOiB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNE
cmF3aW5nSXRlbSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUGF0
aD4oKSk7CisgICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUGF0aD4oKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0Zm9ybVBhdGgoKSwgcGF0aC5w
bGF0Zm9ybVBhdGgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRSho
YW5kbGUuaXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOworICAgICAgICAgICAgYXV0byYgaXRl
bSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5l
RmlsbENvbG9yOiB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJhd2luZ0l0
ZW0oKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0SW5saW5lRmlsbENv
bG9yPigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldElubGluZUZp
bGxDb2xvcj4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCksIENvbG9yOjpy
ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogeworICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U3Ryb2tlSW5saW5lUGF0aD4oKSk7CisgICAgICAgICAg
ICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOworICAgICAgICAg
ICAgY29uc3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CisgICAgICAgICAgICBhdXRvJiBsaW5l
ID0gcGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOworICAgICAgICAgICAgRVhQRUNUX0VRKGxp
bmUuc3RhcnQsIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKGxpbmUu
ZW5kLCBGbG9hdFBvaW50KDEwLiwgMTUuKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIG9ic2VydmVkVW5leHBl
Y3RlZEl0ZW0gPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtKTsKKyAg
ICBFWFBFQ1RfR1QobGlzdC5zaXplSW5CeXRlcygpLCAwVSk7CisKKyAgICBsaXN0LmNsZWFyKCk7
CisKKyAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7CisgICAgZm9yIChhdXRvIGl0
ZW1BbmRFeHRlbnQgOiBsaXN0KSB7CisgICAgICAgIFVOVVNFRF9QQVJBTShpdGVtQW5kRXh0ZW50
KTsKKyAgICAgICAgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IHRydWU7CisgICAgfQorCisgICAg
RVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUShsaXN0LnNpemVJbkJ5
dGVzKCksIDBVKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSk7CisK
KyAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwgMTAw
LCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKKworICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnRd
IDogbGlzdCkgeworICAgICAgICBFWFBFQ1RfRVEoaGFuZGxlLnR5cGUoKSwgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0
V2l0aENvbG9yPigpKTsKKworICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUmVj
dFdpdGhDb2xvcj4oKTsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uY29sb3IoKS5hc0lubGluZSgp
LCBDb2xvcjo6YmxhY2spOworICAgICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVj
dCgwLCAwLCAxMDAsIDEwMCkpOworICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShsaXN0LmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX0dUKGxpc3Quc2l6ZUluQnl0ZXMoKSwgMFUpOworfQorCitURVNU
KERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCit7CisgICAgVmVjdG9yPFN0cm9r
ZVBhdGg+IHN0cm9rZVBhdGhJdGVtczsKKyAgICBzdGF0aWMgSXRlbUJ1ZmZlcklkZW50aWZpZXIg
Z2xvYmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworCisgICAgY2xhc3MgU3Ryb2tlUGF0aFJlYWRlciA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJva2VQYXRoUmVhZGVyKGNvbnN0IFZl
Y3RvcjxTdHJva2VQYXRoPiYgaXRlbXMpCisgICAgICAgICAgICA6IG1faXRlbXMoaXRlbXMpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9uYWw8SXRl
bUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0
aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0
cm9rZVBhdGgpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemVvZihzaXpl
X3QpKTsKKyAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YoSXRlbVR5cGUp
KSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0
YSldKTsKKyAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKKyAgICB9Owor
CisgICAgY2xhc3MgU3Ryb2tlUGF0aFdyaXRlciA6IHB1YmxpYyBJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJva2VQYXRoV3JpdGVyKFZlY3RvcjxTdHJv
a2VQYXRoPiYgaXRlbXMpCisgICAgICAgICAgICA6IG1faXRlbXMoaXRlbXMpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVh
dGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgRVhQRUNUX0xUKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOworICAgICAg
ICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwg
Z2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUgaGFuZGxlKSBjb25zdCBmaW5hbAor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CisgICAg
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChoYW5kbGUuZ2V0PFN0cm9rZVBhdGg+KCkpOworICAgICAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZpbmRleCksIHNpemVvZihzaXplX3QpKTsKKyAgICAgICAgfQorCisgICAgICAgIFZlY3Rv
cjxTdHJva2VQYXRoPiYgbV9pdGVtczsKKyAgICB9OworCisgICAgRGlzcGxheUxpc3QgbGlzdDsK
KyAgICBTdHJva2VQYXRoV3JpdGVyIHdyaXRlciB7IHN0cm9rZVBhdGhJdGVtcyB9OworICAgIGxp
c3Quc2V0SXRlbUJ1ZmZlckNsaWVudCgmd3JpdGVyKTsKKworICAgIGF1dG8gcGF0aCA9IGNyZWF0
ZUNvbXBsZXhQYXRoKCk7CisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KENv
bG9yOjpibHVlKTsKKyAgICBsaXN0LmFwcGVuZDxTdHJva2VQYXRoPihwYXRoKTsKKyAgICBsaXN0
LmFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29sb3I6OnJlZCk7CisgICAgbGlzdC5hcHBl
bmQ8U3Ryb2tlUGF0aD4ocGF0aCk7CisKKyAgICBEaXNwbGF5TGlzdCBzaGFsbG93Q29weSB7eyBJ
dGVtQnVmZmVySGFuZGxlIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZl
ciwgbGlzdC5zaXplSW5CeXRlcygpIH0gfX07CisgICAgU3Ryb2tlUGF0aFJlYWRlciByZWFkZXIg
eyBzdHJva2VQYXRoSXRlbXMgfTsKKyAgICBzaGFsbG93Q29weS5zZXRJdGVtQnVmZmVyQ2xpZW50
KCZyZWFkZXIpOworCisgICAgVmVjdG9yPEl0ZW1UeXBlPiBpdGVtVHlwZXM7CisgICAgZm9yIChh
dXRvIFtoYW5kbGUsIGV4dGVudF0gOiBzaGFsbG93Q29weSkKKyAgICAgICAgaXRlbVR5cGVzLmFw
cGVuZChoYW5kbGUudHlwZSgpKTsKKworICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0Vt
cHR5KCkpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgpLCA0VSk7CisgICAgRVhQRUNU
X0VRKGl0ZW1UeXBlc1swXSwgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yKTsKKyAgICBF
WFBFQ1RfRVEoaXRlbVR5cGVzWzFdLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CisgICAgRVhQRUNU
X0VRKGl0ZW1UeXBlc1syXSwgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yKTsKKyAgICBF
WFBFQ1RfRVEoaXRlbVR5cGVzWzNdLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413454</attachid>
            <date>2020-11-06 11:36:14 -0800</date>
            <delta_ts>2020-11-06 11:42:09 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-218425-20201106113613.patch</filename>
            <type>text/plain</type>
            <size>15625</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTI2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjEyNDRjMDNjYjdkNDMzYzBiYjk3NDY2NTMzYTk1ZTBk
ZGUwM2U2YS4uMDBmNzlmMTVhMWEzMDRmNTM0YzM4NzEyNjUzNzczODJmZjBjOGI4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBBUEkgdGVzdHMgZm9yIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBhbmQgcmVsYXRlZCBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIG5ldyBh
biBBUEkgdGVzdHM6CisgICAgICAgIC0gICBPbmUgdGhhdCBjb3ZlcnMgYmFzaWMgZGlzcGxheSBs
aXN0IGZ1bmN0aW9uYWxpdHkgKGkuZS4gYXBwZW5kaW5nIGl0ZW1zLCBjaGVja2luZyB3aGV0aGVy
IGEgZGlzcGxheSBsaXN0IGlzCisgICAgICAgICAgICBlbXB0eSwgY2xlYXJpbmcgYSBkaXNwbGF5
IGxpc3QgYW5kIGl0ZXJhdGluZyBvdmVyIGl0ZW1zKS4KKyAgICAgICAgLSAgIEFub3RoZXIgdGhh
dCBleGVyY2lzZXMgdGhlIGl0ZW0gYnVmZmVyIGNsaWVudCBob29rcyB0byBwcm92aWRlIGRhdGEg
Zm9yIHdyaXRpbmcgYW5kIGVuY29kZSBhbmQgZGVjb2RlIG91dC0KKyAgICAgICAgICAgIG9mLWxp
bmUgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHRlc3QgdXNlcyB0b3kgUmVhZGVyL1dyaXRlciBj
bGFzc2VzIHRoYXQga25vdyBob3cgdG8gImVuY29kZSIgYW5kICJkZWNvZGUiCisgICAgICAgICAg
ICBgU3Ryb2tlUGF0aGAgaXRlbXMgYnkgc3RvcmluZyBhbmQgcmVhZGluZyA4LWJ5dGUgaW5kaWNl
cyBpbnRvIGEgc2hhcmVkIGBWZWN0b3I8U3Ryb2tlUGF0aD5gLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNyZWF0ZUNvbXBsZXhQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIwLTExLTA2ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk0ODYuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI2ZTRiNzlmNzY2MzFjOTNjODA3OWRjNTU2NzJmNmI5YzdhN2Q5YTguLjA5
N2JlYmMxMjRhMzQ5ZTIzYjNiMzk0YjM2ZWMwNDBiZTRkZTlmYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDk4LDYgKzEwOTgsNyBAQAogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2RTIg
LyogUG9zZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDAxMEI4MTI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07
CiAJCUY0MDJGNTZDMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9j
b2wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAy
RjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICov
OyB9OwogCQlGNDA3RkUzOTFGMUQwREZDMDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDdGRTM4MUYx
RDBERTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgKi87IH07CisJCUY0MDk0Q0M3MjU1NDVCRDUw
MDNENzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFRlc3RzLmNwcCAqLzsgfTsKIAkJRjQxMDZDNjkyMUFDQkY4NDAwNEI4OUExIC8qIFdLV2Vi
Vmlld0ZpcnN0UmVzcG9uZGVyVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDEwNkM2ODIxQUNCRjg0MDA0Qjg5QTEgLyogV0tXZWJWaWV3Rmly
c3RSZXNwb25kZXJUZXN0cy5tbSAqLzsgfTsKIAkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlCIC8q
IHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDE1MDg2QzFEQTA0MEMxMDA0NEJFOUIgLyogcGxheS1h
dWRpby1vbi1jbGljay5odG1sICovOyB9OwogCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYgLyog
Um91bmRlZFJlY3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5j
cHAgKi87IH07CkBAIC0xOTU4LDcgKzE5NTksNyBAQAogCQk0NDA3N0JCMDIzMTQ0OUQyMDAxNzlF
MkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hy
b25vdXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDQ4MTEwQzEyNTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgcGF0aCA9IFdlYlBy
ZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ4MTEwQzEy
NTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJ
bmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZXF1ZXN0
QWN0aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
OEQ3RTQ1MUVBNkM1NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW52aXJvbm1lbnRVdGlsaXRpZXNU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAw
NDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI4MjMsNiArMjgyNCw3IEBACiAJCUY0MDEwQjgyMjREQTI2N0YwMEE4NzZFMiAvKiBQb3Nl
QXNDbGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQb3NlQXNDbGFzcy5o
OyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Qb3NlQXNDbGFzcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0lu
dGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlXS0ludGVy
YWN0aW9uVmlld1Byb3RvY29sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA3
RkUzODFGMUQwREU2MDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGVub3Jtb3VzLnN2Zzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQzYyNTU0NUJENTAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RUZXN0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA2QzY4MjFBQ0JGODQwMDRC
ODlBMSAvKiBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tXZWJWaWV3Rmlyc3RSZXNwb25kZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xp
Y2suaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwbGF5LWF1ZGlvLW9uLWNsaWNr
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE4QkUxNDFGNzFCN0RDMDAx
OTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb3VuZGVk
UmVjdFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0ODIsNiArMzQ4
NCw3IEBACiAJCQkJMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVyLmNwcCAq
LywKIAkJCQkyNjBCQTU3QTFCMUQyRUUyMDA0RkEwN0MgLyogREZBSGVscGVycy5oICovLAogCQkJ
CTI2RjZFMUVGMUFEQzc0OUIwMERFNjk2QiAvKiBERkFNaW5pbWl6ZXIuY3BwICovLAorCQkJCUY0
MDk0Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCAqLywKIAkJCQk5
MzkxNUExNjI0REI2NkM3MDAxOUZGNDMgLyogRG9jdW1lbnRPcmRlci5jcHAgKi8sCiAJCQkJMzE1
MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgKi8sCiAJCQkJ
NTc5NjUxRTYyMTZCRkQ1MzAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgKi8sCkBA
IC01MTIxLDYgKzUxMjQsNyBAQAogCQkJCTdDQ0U3RUVBMUE0MTFBRTYwMDQ0N0M0QyAvKiBEaWRO
b3RIYW5kbGVLZXlEb3duLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFENTdBQzIxMURBNzQ2NUIw
MEZGMUJERSAvKiBEaWRSZW1vdmVGcmFtZUZyb21IaWVhcmNoeUluUGFnZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZFQzJBODU0MjRDRTk3NUYwMEFEQkMzNSAvKiBEaXNhbGxvd1ZNRW50
cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQwOTRDQzcyNTU0NUJENTAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzNCRDczMTgyM0E4NDY1MDAw
MjBGNDUwIC8qIERpc3BsYXlOYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RUU1MUIyMEE3
OEQwMDAwRTAyNEYzIC8qIERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlQWZ0ZXJDcmFzaC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJEN0ZEMTkzMjI0MTkwODcwMDc4ODdGMSAvKiBEb2N1bWVu
dEVkaXRpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTJlNDlhMWE2NjVmZTE0NjViMDBmZTI0ZTU3MGYxNDU2YTlmN2ZlZAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cApAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OwordXNpbmcgbmFtZXNwYWNlIERpc3BsYXlMaXN0OworCitjb25z
dGV4cHIgc2l6ZV90IGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTI7CitzdGF0aWMg
dWludDhfdCBnbG9iYWxJdGVtQnVmZmVyW2dsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eV07CisKK3N0
YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KCkKK3sKKyAgICBhdXRvIGdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6Q29uaWNEYXRhIHsgeyAwLiwgMC4gfSwgMS4y
NSB9KTsKKyAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcjo6cmVkIH0pOwor
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjUsIENvbG9yOjpncmVlbiB9KTsKKyAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC45LCBDb2xvcjo6Ymx1ZSB9KTsKKyAgICByZXR1cm4g
Z3JhZGllbnQ7Cit9CisKK3N0YXRpYyBQYXRoIGNyZWF0ZUNvbXBsZXhQYXRoKCkKK3sKKyAgICBQ
YXRoIHBhdGg7CisgICAgcGF0aC5tb3ZlVG8oeyAxMC4sIDEwLiB9KTsKKyAgICBwYXRoLmFkZExp
bmVUbyh7IDUwLiwgNTAuIH0pOworICAgIHBhdGguYWRkUXVhZEN1cnZlVG8oeyAxMDAuLCAxMDAu
IH0sIHsgMC4sIDIwMC4gfSk7CisgICAgcGF0aC5hZGRMaW5lVG8oeyAxMC4sIDEwLiB9KTsKKyAg
ICByZXR1cm4gcGF0aDsKK30KKworVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykK
K3sKKyAgICBEaXNwbGF5TGlzdCBsaXN0OworCisgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5
KCkpOworCisgICAgYXV0byBncmFkaWVudCA9IGNyZWF0ZUdyYWRpZW50KCk7CisgICAgYXV0byBw
YXRoID0gY3JlYXRlQ29tcGxleFBhdGgoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTA7
ICsraSkgeworICAgICAgICBsaXN0LmFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KDEuNSk7Cisg
ICAgICAgIGxpc3QuYXBwZW5kPEZpbGxQYXRoPihwYXRoKTsKKyAgICAgICAgbGlzdC5hcHBlbmQ8
RmlsbFJlY3RXaXRoR3JhZGllbnQ+KEZsb2F0UmVjdCB7IDEuLCAxLiwgMTAuLCAxMC4gfSwgZ3Jh
ZGllbnQpOworICAgICAgICBsaXN0LmFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KENvbG9yOjpy
ZWQpOworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgICAgICBsaXN0LmFwcGVuZDxT
dHJva2VJbmxpbmVQYXRoPihJbmxpbmVQYXRoRGF0YSB7IExpbmVEYXRhIHt7IDAuLCAwLiB9LCB7
IDEwLiwgMTUuIH19fSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UobGlzdC5p
c0VtcHR5KCkpOworCisgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Cisg
ICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudF0gOiBsaXN0KSB7CisgICAgICAgIHN3aXRjaCAo
aGFuZGxlLnR5cGUoKSkgeworICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25l
c3M6IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTZXRTdHJva2VUaGlja25lc3M+KCkp
OworICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNz
PigpOworICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0
aDogeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFBhdGg+KCkpOworICAgICAgICAg
ICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoaXRlbS5wYXRoKCkucGxhdGZvcm1QYXRoKCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJlY3RXaXRoR3JhZGllbnQ6IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0Ry
YXdpbmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0
V2l0aEdyYWRpZW50PigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PEZp
bGxSZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgp
LCBGbG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikpOworICAgICAgICAgICAgRVhQRUNUX0VRKCZp
dGVtLmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogeworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7CisgICAgICAg
ICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKKyAgICAgICAgICAgIEVYUEVDVF9U
UlVFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFu
ZGxlLmlzPFN0cm9rZUlubGluZVBhdGg+KCkpOworICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhh
bmRsZS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0
aCA9IGl0ZW0ucGF0aCgpOworICAgICAgICAgICAgYXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0
YTxMaW5lRGF0YT4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBv
aW50KDAsIDApKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLmVuZCwgRmxvYXRQb2ludCgx
MC4sIDE1LikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAg
ICBkZWZhdWx0OiB7CisgICAgICAgICAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBF
WFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSk7CisgICAgRVhQRUNUX0dUKGxpc3Qu
c2l6ZUluQnl0ZXMoKSwgMFUpOworCisgICAgbGlzdC5jbGVhcigpOworCisgICAgb2JzZXJ2ZWRV
bmV4cGVjdGVkSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0byBpdGVtQW5kRXh0ZW50IDogbGlz
dCkgeworICAgICAgICBVTlVTRURfUEFSQU0oaXRlbUFuZEV4dGVudCk7CisgICAgICAgIG9ic2Vy
dmVkVW5leHBlY3RlZEl0ZW0gPSB0cnVlOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKGxpc3Qu
aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEobGlzdC5zaXplSW5CeXRlcygpLCAwVSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOworCisgICAgbGlzdC5hcHBlbmQ8
RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9yOjpi
bGFjayk7CisKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7
CisgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CisK
KyAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7Cisg
ICAgICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCkuYXNJbmxpbmUoKSwgQ29sb3I6OmJsYWNrKTsK
KyAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDAp
KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9HVChsaXN0LnNpemVJbkJ5dGVzKCksIDBVKTsKK30KKworVEVTVChEaXNwbGF5TGlzdFRlc3Rz
LCBJdGVtQnVmZmVyQ2xpZW50KQoreworICAgIFZlY3RvcjxTdHJva2VQYXRoPiBzdHJva2VQYXRo
SXRlbXM7CisgICAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50
aWZpZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAgIGNsYXNzIFN0
cm9rZVBhdGhSZWFkZXIgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgU3Ryb2tlUGF0aFJlYWRlcihjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4m
IGl0ZW1zKQorICAgICAgICAgICAgOiBtX2l0ZW1zKGl0ZW1zKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKKyAgICAgICAgewor
ICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CisgICAgICAgICAg
ICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU3Ryb2tlUGF0aChtX2l0
ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSk7CisgICAgICAgICAg
ICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CisgICAgICAgIH0KKworICAgICAgICBjb25z
dCBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CisgICAgfTsKKworICAgIGNsYXNzIFN0cm9r
ZVBhdGhXcml0ZXIgOiBwdWJsaWMgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgU3Ryb2tlUGF0aFdyaXRlcihWZWN0b3I8U3Ryb2tlUGF0aD4mIGl0ZW1zKQor
ICAgICAgICAgICAgOiBtX2l0ZW1zKGl0ZW1zKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXpl
X3QgY2FwYWNpdHkpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9MVChjYXBh
Y2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiB7IGds
b2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJD
YXBhY2l0eSB9OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbShJdGVtSGFuZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOworICAgICAgICAgICAgbV9pdGVtcy5h
cHBlbmQoaGFuZGxlLmdldDxTdHJva2VQYXRoPigpKTsKKyAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgpLCBzaXpl
b2Yoc2l6ZV90KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1f
aXRlbXM7CisgICAgfTsKKworICAgIERpc3BsYXlMaXN0IGxpc3Q7CisgICAgU3Ryb2tlUGF0aFdy
aXRlciB3cml0ZXIgeyBzdHJva2VQYXRoSXRlbXMgfTsKKyAgICBsaXN0LnNldEl0ZW1CdWZmZXJD
bGllbnQoJndyaXRlcik7CisKKyAgICBhdXRvIHBhdGggPSBjcmVhdGVDb21wbGV4UGF0aCgpOwor
ICAgIGxpc3QuYXBwZW5kPFNldElubGluZVN0cm9rZUNvbG9yPihDb2xvcjo6Ymx1ZSk7CisgICAg
bGlzdC5hcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7CisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5l
U3Ryb2tlQ29sb3I+KENvbG9yOjpyZWQpOworICAgIGxpc3QuYXBwZW5kPFN0cm9rZVBhdGg+KHBh
dGgpOworCisgICAgRGlzcGxheUxpc3Qgc2hhbGxvd0NvcHkge3sgSXRlbUJ1ZmZlckhhbmRsZSB7
IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGxpc3Quc2l6ZUluQnl0
ZXMoKSB9IH19OworICAgIFN0cm9rZVBhdGhSZWFkZXIgcmVhZGVyIHsgc3Ryb2tlUGF0aEl0ZW1z
IH07CisgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKKworICAg
IFZlY3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOworICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRl
bnRdIDogc2hhbGxvd0NvcHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaGFuZGxlLnR5cGUo
KSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKKyAgICBFWFBF
Q1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXNbMF0s
IEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcik7CisgICAgRVhQRUNUX0VRKGl0ZW1UeXBl
c1sxXSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXNbMl0s
IEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcik7CisgICAgRVhQRUNUX0VRKGl0ZW1UeXBl
c1szXSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413455</attachid>
            <date>2020-11-06 11:42:11 -0800</date>
            <delta_ts>2020-11-06 14:01:47 -0800</delta_ts>
            <desc>Fix minor ChangeLog typo</desc>
            <filename>bug-218425-20201106114210.patch</filename>
            <type>text/plain</type>
            <size>15622</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTI2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjEyNDRjMDNjYjdkNDMzYzBiYjk3NDY2NTMzYTk1ZTBk
ZGUwM2U2YS4uMTNmYjMzOTM5ZmViMDVhY2MxYjRiN2UzZDBhZjdjMGM3Yjc0ZmI5MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBBUEkgdGVzdHMgZm9yIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBhbmQgcmVsYXRlZCBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIG5ldyBB
UEkgdGVzdHM6CisgICAgICAgIC0gICBPbmUgdGhhdCBjb3ZlcnMgYmFzaWMgZGlzcGxheSBsaXN0
IGZ1bmN0aW9uYWxpdHkgKGkuZS4gYXBwZW5kaW5nIGl0ZW1zLCBjaGVja2luZyB3aGV0aGVyIGEg
ZGlzcGxheSBsaXN0IGlzCisgICAgICAgICAgICBlbXB0eSwgY2xlYXJpbmcgYSBkaXNwbGF5IGxp
c3QgYW5kIGl0ZXJhdGluZyBvdmVyIGl0ZW1zKS4KKyAgICAgICAgLSAgIEFub3RoZXIgdGhhdCBl
eGVyY2lzZXMgdGhlIGl0ZW0gYnVmZmVyIGNsaWVudCBob29rcyB0byBwcm92aWRlIGRhdGEgZm9y
IHdyaXRpbmcgYW5kIGVuY29kZSBhbmQgZGVjb2RlIG91dC0KKyAgICAgICAgICAgIG9mLWxpbmUg
ZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHRlc3QgdXNlcyB0b3kgUmVhZGVyL1dyaXRlciBjbGFz
c2VzIHRoYXQga25vdyBob3cgdG8gImVuY29kZSIgYW5kICJkZWNvZGUiCisgICAgICAgICAgICBg
U3Ryb2tlUGF0aGAgaXRlbXMgYnkgc3RvcmluZyBhbmQgcmVhZGluZyA4LWJ5dGUgaW5kaWNlcyBp
bnRvIGEgc2hhcmVkIGBWZWN0b3I8U3Ryb2tlUGF0aD5gLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNyZWF0ZUNvbXBsZXhQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIwLTExLTA2ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk0ODYuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDI2ZTRiNzlmNzY2MzFjOTNjODA3OWRjNTU2NzJmNmI5YzdhN2Q5YTguLjA5N2Jl
YmMxMjRhMzQ5ZTIzYjNiMzk0YjM2ZWMwNDBiZTRkZTlmYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDk4LDYgKzEwOTgsNyBAQAogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2RTIgLyog
UG9zZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDAxMEI4MTI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CiAJ
CUY0MDJGNTZDMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAyRjU2
QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICovOyB9
OwogCQlGNDA3RkUzOTFGMUQwREZDMDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDdGRTM4MUYxRDBE
RTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgKi87IH07CisJCUY0MDk0Q0M3MjU1NDVCRDUwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNwbGF5TGlz
dFRlc3RzLmNwcCAqLzsgfTsKIAkJRjQxMDZDNjkyMUFDQkY4NDAwNEI4OUExIC8qIFdLV2ViVmll
d0ZpcnN0UmVzcG9uZGVyVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDEwNkM2ODIxQUNCRjg0MDA0Qjg5QTEgLyogV0tXZWJWaWV3Rmlyc3RS
ZXNwb25kZXJUZXN0cy5tbSAqLzsgfTsKIAkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlCIC8qIHBs
YXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDE1MDg2QzFEQTA0MEMxMDA0NEJFOUIgLyogcGxheS1hdWRp
by1vbi1jbGljay5odG1sICovOyB9OwogCQlGNDE4QkUxNTFGNzFCN0RDMDAxOTcwRTYgLyogUm91
bmRlZFJlY3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAg
Ki87IH07CkBAIC0xOTU4LDcgKzE5NTksNyBAQAogCQk0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQg
LyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZMb2dnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25v
dXNUaW1lb3V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDQ4MTEwQzEyNTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgcGF0aCA9IFdlYlByZWZl
cmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ4MTEwQzEyNTNG
NDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZv
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZXF1ZXN0QWN0
aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEQ3
RTQ1MUVBNkM1NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1
MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4MjMsNiArMjgyNCw3IEBACiAJCUY0MDEwQjgyMjREQTI2N0YwMEE4NzZFMiAvKiBQb3NlQXND
bGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQb3NlQXNDbGFzcy5oOyBw
YXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Qb3NlQXNDbGFzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVy
YWN0aW9uVmlld1Byb3RvY29sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlXS0ludGVyYWN0
aW9uVmlld1Byb3RvY29sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA3RkUz
ODFGMUQwREU2MDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGVub3Jtb3VzLnN2Zzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQzYyNTU0NUJENTAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RUZXN0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA2QzY4MjFBQ0JGODQwMDRCODlB
MSAvKiBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3Rmlyc3RSZXNwb25kZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2su
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcw
RTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb3VuZGVkUmVj
dFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0ODIsNiArMzQ4NCw3
IEBACiAJCQkJMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdDIC8qIERGQUNvbWJpbmVyLmNwcCAqLywK
IAkJCQkyNjBCQTU3QTFCMUQyRUUyMDA0RkEwN0MgLyogREZBSGVscGVycy5oICovLAogCQkJCTI2
RjZFMUVGMUFEQzc0OUIwMERFNjk2QiAvKiBERkFNaW5pbWl6ZXIuY3BwICovLAorCQkJCUY0MDk0
Q0M2MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFRlc3RzLmNwcCAqLywKIAkJCQk5Mzkx
NUExNjI0REI2NkM3MDAxOUZGNDMgLyogRG9jdW1lbnRPcmRlci5jcHAgKi8sCiAJCQkJMzE1MTE4
MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgKi8sCiAJCQkJNTc5
NjUxRTYyMTZCRkQ1MzAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgKi8sCkBAIC01
MTIxLDYgKzUxMjQsNyBAQAogCQkJCTdDQ0U3RUVBMUE0MTFBRTYwMDQ0N0M0QyAvKiBEaWROb3RI
YW5kbGVLZXlEb3duLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFENTdBQzIxMURBNzQ2NUIwMEZG
MUJERSAvKiBEaWRSZW1vdmVGcmFtZUZyb21IaWVhcmNoeUluUGFnZUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZFQzJBODU0MjRDRTk3NUYwMEFEQkMzNSAvKiBEaXNhbGxvd1ZNRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQwOTRDQzcyNTU0NUJENTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzNCRDczMTgyM0E4NDY1MDAwMjBG
NDUwIC8qIERpc3BsYXlOYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RUU1MUIyMEE3OEQw
MDAwRTAyNEYzIC8qIERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlQWZ0ZXJDcmFzaC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTJEN0ZEMTkzMjI0MTkwODcwMDc4ODdGMSAvKiBEb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJl
NDlhMWE2NjVmZTE0NjViMDBmZTI0ZTU3MGYxNDU2YTlmN2ZlZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApA
QCAtMCwwICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OwordXNpbmcgbmFtZXNwYWNlIERpc3BsYXlMaXN0OworCitjb25zdGV4
cHIgc2l6ZV90IGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTI7CitzdGF0aWMgdWlu
dDhfdCBnbG9iYWxJdGVtQnVmZmVyW2dsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eV07CisKK3N0YXRp
YyBSZWY8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KCkKK3sKKyAgICBhdXRvIGdyYWRpZW50ID0g
R3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6Q29uaWNEYXRhIHsgeyAwLiwgMC4gfSwgMS4yNSB9
KTsKKyAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcjo6cmVkIH0pOworICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjUsIENvbG9yOjpncmVlbiB9KTsKKyAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC45LCBDb2xvcjo6Ymx1ZSB9KTsKKyAgICByZXR1cm4gZ3Jh
ZGllbnQ7Cit9CisKK3N0YXRpYyBQYXRoIGNyZWF0ZUNvbXBsZXhQYXRoKCkKK3sKKyAgICBQYXRo
IHBhdGg7CisgICAgcGF0aC5tb3ZlVG8oeyAxMC4sIDEwLiB9KTsKKyAgICBwYXRoLmFkZExpbmVU
byh7IDUwLiwgNTAuIH0pOworICAgIHBhdGguYWRkUXVhZEN1cnZlVG8oeyAxMDAuLCAxMDAuIH0s
IHsgMC4sIDIwMC4gfSk7CisgICAgcGF0aC5hZGRMaW5lVG8oeyAxMC4sIDEwLiB9KTsKKyAgICBy
ZXR1cm4gcGF0aDsKK30KKworVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKK3sK
KyAgICBEaXNwbGF5TGlzdCBsaXN0OworCisgICAgRVhQRUNUX1RSVUUobGlzdC5pc0VtcHR5KCkp
OworCisgICAgYXV0byBncmFkaWVudCA9IGNyZWF0ZUdyYWRpZW50KCk7CisgICAgYXV0byBwYXRo
ID0gY3JlYXRlQ29tcGxleFBhdGgoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTA7ICsr
aSkgeworICAgICAgICBsaXN0LmFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KDEuNSk7CisgICAg
ICAgIGxpc3QuYXBwZW5kPEZpbGxQYXRoPihwYXRoKTsKKyAgICAgICAgbGlzdC5hcHBlbmQ8Rmls
bFJlY3RXaXRoR3JhZGllbnQ+KEZsb2F0UmVjdCB7IDEuLCAxLiwgMTAuLCAxMC4gfSwgZ3JhZGll
bnQpOworICAgICAgICBsaXN0LmFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KENvbG9yOjpyZWQp
OworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgICAgICBsaXN0LmFwcGVuZDxTdHJv
a2VJbmxpbmVQYXRoPihJbmxpbmVQYXRoRGF0YSB7IExpbmVEYXRhIHt7IDAuLCAwLiB9LCB7IDEw
LiwgMTUuIH19fSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0Vt
cHR5KCkpOworCisgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7CisgICAg
Zm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudF0gOiBsaXN0KSB7CisgICAgICAgIHN3aXRjaCAoaGFu
ZGxlLnR5cGUoKSkgeworICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6
IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTZXRTdHJva2VUaGlja25lc3M+KCkpOwor
ICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigp
OworICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDog
eworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFBhdGg+KCkpOworICAgICAgICAgICAg
YXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoaXRlbS5wYXRoKCkucGxhdGZvcm1QYXRoKCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ6IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0RyYXdp
bmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0V2l0
aEdyYWRpZW50PigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PEZpbGxS
ZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBG
bG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikpOworICAgICAgICAgICAgRVhQRUNUX0VRKCZpdGVt
LmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogeworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOworICAgICAgICAgICAg
RVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7CisgICAgICAgICAg
ICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxl
LmlzPFN0cm9rZUlubGluZVBhdGg+KCkpOworICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRs
ZS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0aCA9
IGl0ZW0ucGF0aCgpOworICAgICAgICAgICAgYXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0YTxM
aW5lRGF0YT4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBvaW50
KDAsIDApKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShsaW5lLmVuZCwgRmxvYXRQb2ludCgxMC4s
IDE1LikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBk
ZWZhdWx0OiB7CisgICAgICAgICAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFWFBF
Q1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSk7CisgICAgRVhQRUNUX0dUKGxpc3Quc2l6
ZUluQnl0ZXMoKSwgMFUpOworCisgICAgbGlzdC5jbGVhcigpOworCisgICAgb2JzZXJ2ZWRVbmV4
cGVjdGVkSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0byBpdGVtQW5kRXh0ZW50IDogbGlzdCkg
eworICAgICAgICBVTlVTRURfUEFSQU0oaXRlbUFuZEV4dGVudCk7CisgICAgICAgIG9ic2VydmVk
VW5leHBlY3RlZEl0ZW0gPSB0cnVlOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKGxpc3QuaXNF
bXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEobGlzdC5zaXplSW5CeXRlcygpLCAwVSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOworCisgICAgbGlzdC5hcHBlbmQ8Rmls
bFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9yOjpibGFj
ayk7CisKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAgICAgICAg
RVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CisKKyAg
ICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CisgICAg
ICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCkuYXNJbmxpbmUoKSwgQ29sb3I6OmJsYWNrKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDApKTsK
KyAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9H
VChsaXN0LnNpemVJbkJ5dGVzKCksIDBVKTsKK30KKworVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJ
dGVtQnVmZmVyQ2xpZW50KQoreworICAgIFZlY3RvcjxTdHJva2VQYXRoPiBzdHJva2VQYXRoSXRl
bXM7CisgICAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAgIGNsYXNzIFN0cm9r
ZVBhdGhSZWFkZXIgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgU3Ryb2tlUGF0aFJlYWRlcihjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4mIGl0
ZW1zKQorICAgICAgICAgICAgOiBtX2l0ZW1zKGl0ZW1zKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKKyAgICAgICAgeworICAg
ICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CisgICAgICAgICAgICBu
ZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU3Ryb2tlUGF0aChtX2l0ZW1z
WypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSk7CisgICAgICAgICAgICBy
ZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBW
ZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CisgICAgfTsKKworICAgIGNsYXNzIFN0cm9rZVBh
dGhXcml0ZXIgOiBwdWJsaWMgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgU3Ryb2tlUGF0aFdyaXRlcihWZWN0b3I8U3Ryb2tlUGF0aD4mIGl0ZW1zKQorICAg
ICAgICAgICAgOiBtX2l0ZW1zKGl0ZW1zKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHkpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9MVChjYXBhY2l0
eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiB7IGdsb2Jh
bEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBh
Y2l0eSB9OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbShJdGVtSGFuZGxlIGhhbmRsZSkgY29uc3QgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOworICAgICAgICAgICAgbV9pdGVtcy5hcHBl
bmQoaGFuZGxlLmdldDxTdHJva2VQYXRoPigpKTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgpLCBzaXplb2Yo
c2l6ZV90KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRl
bXM7CisgICAgfTsKKworICAgIERpc3BsYXlMaXN0IGxpc3Q7CisgICAgU3Ryb2tlUGF0aFdyaXRl
ciB3cml0ZXIgeyBzdHJva2VQYXRoSXRlbXMgfTsKKyAgICBsaXN0LnNldEl0ZW1CdWZmZXJDbGll
bnQoJndyaXRlcik7CisKKyAgICBhdXRvIHBhdGggPSBjcmVhdGVDb21wbGV4UGF0aCgpOworICAg
IGxpc3QuYXBwZW5kPFNldElubGluZVN0cm9rZUNvbG9yPihDb2xvcjo6Ymx1ZSk7CisgICAgbGlz
dC5hcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7CisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5lU3Ry
b2tlQ29sb3I+KENvbG9yOjpyZWQpOworICAgIGxpc3QuYXBwZW5kPFN0cm9rZVBhdGg+KHBhdGgp
OworCisgICAgRGlzcGxheUxpc3Qgc2hhbGxvd0NvcHkge3sgSXRlbUJ1ZmZlckhhbmRsZSB7IGds
b2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGxpc3Quc2l6ZUluQnl0ZXMo
KSB9IH19OworICAgIFN0cm9rZVBhdGhSZWFkZXIgcmVhZGVyIHsgc3Ryb2tlUGF0aEl0ZW1zIH07
CisgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKKworICAgIFZl
Y3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOworICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnRd
IDogc2hhbGxvd0NvcHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoaGFuZGxlLnR5cGUoKSk7
CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1Rf
RVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXNbMF0sIEl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcik7CisgICAgRVhQRUNUX0VRKGl0ZW1UeXBlc1sx
XSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOworICAgIEVYUEVDVF9FUShpdGVtVHlwZXNbMl0sIEl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcik7CisgICAgRVhQRUNUX0VRKGl0ZW1UeXBlc1sz
XSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>