<?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>225599</bug_id>
          
          <creation_ts>2021-05-10 10:33:31 -0700</creation_ts>
          <short_desc>Remove the String::toInt family of functions</short_desc>
          <delta_ts>2021-05-11 21:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758537</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 10:33:31 -0700</bug_when>
    <thetext>Remove the String::toInt family of functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758538</commentid>
    <comment_count>1</comment_count>
      <attachid>428182</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 10:36:57 -0700</bug_when>
    <thetext>Created attachment 428182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758608</commentid>
    <comment_count>2</comment_count>
      <attachid>428196</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 13:05:42 -0700</bug_when>
    <thetext>Created attachment 428196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758627</commentid>
    <comment_count>3</comment_count>
      <attachid>428200</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 14:09:22 -0700</bug_when>
    <thetext>Created attachment 428200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758647</commentid>
    <comment_count>4</comment_count>
      <attachid>428202</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 14:34:59 -0700</bug_when>
    <thetext>Created attachment 428202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758662</commentid>
    <comment_count>5</comment_count>
      <attachid>428205</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 14:55:34 -0700</bug_when>
    <thetext>Created attachment 428205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758817</commentid>
    <comment_count>6</comment_count>
      <attachid>428245</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 22:31:07 -0700</bug_when>
    <thetext>Created attachment 428245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758818</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-10 22:32:02 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758824</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-10 23:08:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/77806799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758923</commentid>
    <comment_count>9</comment_count>
      <attachid>428281</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-11 09:31:26 -0700</bug_when>
    <thetext>Created attachment 428281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759045</commentid>
    <comment_count>10</comment_count>
      <attachid>428309</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-11 13:19:49 -0700</bug_when>
    <thetext>Created attachment 428309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759068</commentid>
    <comment_count>11</comment_count>
      <attachid>428312</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-11 14:45:47 -0700</bug_when>
    <thetext>Created attachment 428312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759124</commentid>
    <comment_count>12</comment_count>
      <attachid>428332</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-11 18:15:33 -0700</bug_when>
    <thetext>Created attachment 428332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759158</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-11 21:23:41 -0700</bug_when>
    <thetext>Committed r277355 (237613@main): &lt;https://commits.webkit.org/237613@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428182</attachid>
            <date>2021-05-10 10:36:57 -0700</date>
            <delta_ts>2021-05-10 13:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510103656.patch</filename>
            <type>text/plain</type>
            <size>23908</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkNzhiNDRmNjJmY2YzMjQ1Mzc2ZjAy
OWU4NmNmNDYxZTYxYzIzNDQuLjM4YmJhYjNiNzUxMWFjNWJlMmY5ZDQxNDgxNzc4N2M3NjU4YjAz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0ludCwK
KyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0U3Ry
aWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50MTYu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvSW50
NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludDY0
U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludFB0clN0
cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFj
dGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCiAyMDIxLTA1
LTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxm
b3JtPi5yZXF1ZXN0U3VibWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggNWFhMTZi
MGI3NDhiMTk4MzIxMmNmNTZjZDY5ZjJjZjc3OGJkY2ZmYi4uMzNiMGU1OTU4ZDgzOTU2M2E2NWUx
M2RjYTIwYTI3YmYzMzE5NGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEzNyw3
ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRv
bVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwogCi0gICAgaW50IHRvSW50
KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9
CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudG9Eb3VibGUob2spOyB9CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51
bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRmxvYXQob2spOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDg3Yzk2M2EzNTE3ZjkzZTExZWVlYWNlYTAwODhmNmJj
MWIzOTZiNDUuLjdkM2YzNDYzMWFjOGU3OTc1ZTlmNDQ4NzM1NTNjZWYxZWQ3OGQwM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtODExLDc2ICs4MTEsNiBAQCBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKENvZGVVbml0TWF0Y2hGdW5jdGlv
biBpc1doaXRlU3BhYwogICAgIHJldHVybiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFy
YWN0ZXJzVG9TcGFjZTxVQ2hhcj4oaXNXaGl0ZVNwYWNlKTsKIH0KIAotaW50IFN0cmluZ0ltcGw6
OnRvSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBTdHJpbmdJbXBsOjp0
b1VJbnRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAg
ICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBTdHJpbmdJbXBsOjp0
b0ludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xl
bmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgU3RyaW5nSW1w
bDo6dG9VSW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0
cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAo
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQg
U3RyaW5nSW1wbDo6dG9JbnQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
LX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6dG9VSW50KGJvb2wqIG9rKQotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQoY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50NjRfdCBTdHJpbmdJbXBsOjp0b0ludDY0KGJvb2wq
IG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dDY0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0ludDY0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCi11aW50NjRfdCBTdHJp
bmdJbXBsOjp0b1VJbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rKTsK
LSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwg
b2spOwotfQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0cihib29sKiBvaykKLXsKLSAg
ICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHIoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKGNo
YXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCiBkb3VibGUgU3RyaW5nSW1wbDo6dG9E
b3VibGUoYm9vbCogb2spCiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAppbmRleCBhZmRkM2UwMTdkNGM5OGIzNjdjM2E3OTQ2NGI1ZTIzNGE5YWIyZGVlLi4wMmE1
ZGFkMjczYmNiMjMyZWFjOGIxMGJkNTkzMGE1NWFmNWVjZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaApAQCAtMzkyLDE4ICszOTIsNiBAQCBwdWJsaWM6CiAgICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpOwogCi0gICAgaW50IHRv
SW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgdW5zaWdu
ZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAg
aW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci0gICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLSAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludChib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1bnNpZ25l
ZCB0b1VJbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
Ci0gICAgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJh
aWxpbmcgZ2FyYmFnZQotICAgIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gbnVsbHB0cik7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wq
IG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotCiAgICAgLy8gRklY
TUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9y
ICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgogICAgIC8vIExpa2UgdGhlIG5v
bi1zdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSByZXR1cm4gdGhlIHZhbHVlIHdoZW4gdGhl
cmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhl
c2Ugd2VyZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWJvdmUgZnVuY3Rpb25zIGluc3RlYWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCmlu
ZGV4IGYwYjNlZWY0MTk1YTMyMGJlYzI1MDZiNzRkYzk4NTdlZDRiZDgzMDcuLjA5ZjMwNGM0YjUx
ODAwNjAwMjVkNGNhYzQwOTg0YzdkZDA5MTAzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCkBAIC0xMTAsMzUgKzExMCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsCiAgICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBiYXNlLCBUcmFpbGluZ0p1
bmtQb2xpY3k6OkFsbG93KTsKIH0KIAotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0lu
dGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNl
SW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgU3RyaW5n
T3JTdHJpbmdWaWV3PiBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgU3RyaW5nT3JT
dHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBib29sKiBvaywgaW50IGJhc2UgPSAxMCkKLXsKLSAgICBh
dXRvIHJlc3VsdCA9IHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0cmluZ1ZpZXcsIGJhc2Up
OwotICAgIGlmIChvaykKLSAgICAgICAgKm9rID0gcmVzdWx0Lmhhc1ZhbHVlKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdC52YWx1ZU9yKDApOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3Zl
IHRvSW50ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8g
cGFyc2VJbnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVy
VHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UgPSAxMCkKLXsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8SW50ZWdyYWxUeXBlPihTdHJpbmdWaWV3IHsgZGF0
YSwgbGVuZ3RoIH0sIG9rLCBiYXNlKTsKLX0KLQotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92
ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRv
IHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUg
U3RyaW5nT3JTdHJpbmdWaWV3PiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBl
KGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywgaW50IGJhc2UgPSAxMCkKLXsK
LSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nVmlldywgYmFzZSk7
Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJl
bHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PEludGVncmFsVHlwZT4gdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVybiBwYXJzZUludGVn
ZXI8SW50ZWdyYWxUeXBlPihTdHJpbmdWaWV3IHsgZGF0YSwgbGVuZ3RoIH0sIGJhc2UpOwotfQot
CiB9CiAKIHVzaW5nIFdURjo6cGFyc2VJbnRlZ2VyOwogdXNpbmcgV1RGOjpwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazsKLXVzaW5nIFdURjo6dG9JbnRlZ3JhbFR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA4MGY4MGNiNzc3ZmRlMzc4N2E4YWE3MTJmNTY3OWY5
YTFhOWExZDEzLi4zY2IwMTgzYzgwMTFhZDhkYTgyYzBlOTQyYjc2OTM4OTgxYmQzZGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTMxMSwxNyArMzExLDYgQEAgU3RyaW5nIG5v
cm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHJlc3VsdC51bmRl
cmx5aW5nU3RyaW5nOwogfQogCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgbmFtZWQgcGFyc2VO
dW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/Ci0vLyBGSVhNRTogU2hvdWxkIHdlIHJlcGxhY2UgdGhl
IHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0aCB0aGlzIHN0eWxlPwotT3B0aW9uYWw8dWlu
dDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGJvb2wgb2sgPSBm
YWxzZTsKLSAgICBhdXRvIG51bWJlciA9IHRvSW50ZWdyYWxUeXBlPHVpbnQxNl90PihzdHJpbmcs
ICZvayk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gbnVtYmVyOwotfQotCiBib29sIGVxdWFsUmVzcGVjdGluZ051bGxpdHkoU3RyaW5nVmll
dyBhLCBTdHJpbmdWaWV3IGIpCiB7CiAgICAgaWYgKGEubV9jaGFyYWN0ZXJzID09IGIubV9jaGFy
YWN0ZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IGEzZjViMTE1ODJhNjJkYmVl
ZjcyYzFkOGEwZTcwMWFhYmE0YzExZTQuLjUwY2QxYTg5MDcwMjJkYjM1YTg4ZDk2ZjMzNDY4NjVi
MmU0MWJjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xNjgsMTEgKzE2OCw2IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJp
bmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQo
KSBjb25zdDsKLSAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7Ci0gICAgaW50IHRv
SW50U3RyaWN0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0
b1VJbnQ2NFN0cmljdCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludDY0X3Q+IHRvSW50NjRTdHJp
Y3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwogCiAg
ICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJik7CkBAIC0yNDYsOCAr
MjQxLDYgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBub3JtYWxpemVkTkZDKFN0cmluZ1ZpZXcpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyk7Ci0KIH0KIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTU4OCw0MCArNTgxLDYgQEAgaW5saW5lIGZsb2F0
IFN0cmluZ1ZpZXc6OnRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hh
cmFjdGVyc1RvRmxvYXQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7CiB9CiAK
LWlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQoKSBjb25zdAotewotICAgIGJvb2wgaXNWYWxp
ZDsKLSAgICByZXR1cm4gdG9JbnQoaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBpbnQgU3RyaW5nVmll
dzo6dG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3QKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1Zh
bGlkKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgJmlzVmFsaWQpOwotfQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0KGJv
b2wmIGlzVmFsaWQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7
Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5n
dGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIE9wdGlvbmFsPHVpbnQ2NF90PiBTdHJpbmdWaWV3
Ojp0b1VJbnQ2NFN0cmljdCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwotICAgIHVpbnQ2
NF90IHJlc3VsdCA9IGlzOEJpdCgpID8gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3Rl
cnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGlzVmFsaWQgPyBt
YWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLX0KLQotaW5saW5lIE9wdGlvbmFs
PGludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QoKSBjb25zdAotewotICAgIGJvb2wg
aXNWYWxpZDsKLSAgICBpbnQ2NF90IHJlc3VsdCA9IGlzOEJpdCgpID8gY2hhcmFjdGVyc1RvSW50
NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJhY3RlcnNU
b0ludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJl
dHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0K
IGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0
CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDFl
ZGJjODNhYzNjYWVmNTFlMDA2NGE3N2NiZDZmYTI3MWFkZTMwNzAuLjI0NTdjZWY2YzUzZmFhZGY3
NzQwYzljOTYxODdiZGFhZmI0OTQ4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAg
LTQ5MiwxMDYgKzQ5Miw2IEBAIFN0cmluZyBTdHJpbmc6Om51bWJlclRvU3RyaW5nRml4ZWRXaWR0
aChkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQogICAgIHJldHVybiBudW1i
ZXJUb0ZpeGVkV2lkdGhTdHJpbmcobnVtYmVyLCBkZWNpbWFsUGxhY2VzLCBidWZmZXIpOwogfQog
Ci1pbnQgU3RyaW5nOjp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludFN0
cmljdChvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZzo6dG9VSW50U3RyaWN0KGJvb2wq
IG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIHJldHVybiBtX2ltcGwtPnRvVUludFN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludDY0X3Qg
U3RyaW5nOjp0b0ludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBp
ZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjRTdHJp
Y3Qob2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBTdHJpbmc6OnRvVUludDY0U3RyaWN0KGJvb2wq
IG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIHJldHVybiBtX2ltcGwtPnRvVUludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotaW50cHRy
X3QgU3RyaW5nOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludFB0
clN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludCBTdHJpbmc6OnRvSW50KGJvb2wqIG9rKSBjb25z
dAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpv
ayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+
dG9JbnQob2spOwotfQotCi11bnNpZ25lZCBTdHJpbmc6OnRvVUludChib29sKiBvaykgY29uc3QK
LXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRv
VUludChvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nOjp0b0ludDY0KGJvb2wqIG9rKSBjb25zdAot
ewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9J
bnQ2NChvayk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZzo6dG9VSW50NjQoYm9vbCogb2spIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9r
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50
b1VJbnQ2NChvayk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHIoYm9vbCogb2spIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAg
Km9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBs
LT50b0ludFB0cihvayk7Ci19Ci0KIGRvdWJsZSBTdHJpbmc6OnRvRG91YmxlKGJvb2wqIG9rKSBj
b25zdAogewogICAgIGlmICghbV9pbXBsKSB7CkBAIC04OTIsMTI5ICs3OTIsNiBAQCBTdHJpbmcg
U3RyaW5nOjpmcm9tQ29kZVBvaW50KFVDaGFyMzIgY29kZVBvaW50KQogfQogCiAvLyBTdHJpbmcg
T3BlcmF0aW9ucwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyB1bnNp
Z25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgaSA9IDA7Ci0KLSAgICAvLyBBbGxvdyBs
ZWFkaW5nIHNwYWNlcy4KLSAgICBmb3IgKDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoIWlzU3BhY2VPck5ld2xpbmUoZGF0YVtpXSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgCi0gICAgLy8gQWxsb3cgc2lnbi4KLSAgICBpZiAoaSAhPSBsZW5ndGggJiYgKGRhdGFb
aV0gPT0gJysnIHx8IGRhdGFbaV0gPT0gJy0nKSkKLSAgICAgICAgKytpOwotICAgIAotICAgIC8v
IEFsbG93IGRpZ2l0cy4KLSAgICBmb3IgKDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoIWlzQVNDSUlEaWdpdChkYXRhW2ldKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIHJldHVybiBpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmlj
dChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQot
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1p
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IGNoYXJhY3Rl
cnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEs
IGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkK
LXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQot
Ci1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRy
X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNv
bnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnQoY29u
c3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0
IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxM
Q2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1Rv
VUludChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
KQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2
NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0
aCksIG9rLCAxMCk7Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0
cihjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludHB0cl90IGNoYXJh
Y3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2sp
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFRyYWlsaW5nSnVua1BvbGljeSBwb2xpY3k+
CiBzdGF0aWMgaW5saW5lIGRvdWJsZSB0b0RvdWJsZVR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNmU1NGFmMzg4NGRiNzJlYzI4OGVhNzg3ZmQxNWRmMDJk
OTFlYWJlZS4uOTc2ZmRjMTM4Y2M3ZjA5MzQ2YzdkZGQwM2FlMTUwYWZmOGY0NzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00MiwzMSArNDIsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
Ly8gRGVjbGFyYXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKLVdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVy
c1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9V
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNv
bnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwot
aW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotaW50cHRyX3QgY2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApOwotCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChj
b25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLXVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBjaGFyYWN0ZXJzVG9J
bnQ2NChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1XVEZfRVhQT1JU
X1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJz
VG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGln
bm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotCi0vLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0
aW9ucyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWls
aW5nIGdhcmJhZ2UuCi0vLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhl
c2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0vLyBJ
dCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhlc2Ugd2VyZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUg
YWJvdmUgZnVuY3Rpb25zIGluc3RlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOwogV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0
IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxw
dHIpOwpAQCAtMjgxLDIxICsyNTYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9y
KSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcyhjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3Q7CiAKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUlu
dFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3Qg
dG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IG51
bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0cihi
b29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IExpa2UgdGhlIHN0cmlj
dCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVyZSBp
cyB0cmFpbGluZyBnYXJiYWdlLgotICAgIC8vIExpa2UgdGhlIG5vbi1zdHJpY3QgZnVuY3Rpb25z
IGFib3ZlLCB0aGVzZSByZXR1cm4gdGhlIHZhbHVlIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2Fy
YmFnZS4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhlc2Ugd2VyZSBtb3JlIGNvbnNp
c3RlbnQgd2l0aCB0aGUgYWJvdmUgZnVuY3Rpb25zIGluc3RlYWQuCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7
CiAKQEAgLTY4MCwxNiArNjQwLDYgQEAgdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OmFw
cGVuZE51bWJlcjsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwogdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9GbG9hdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50NjQ7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ7
Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0cjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3Ry
aWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0OwogdXNpbmcgV1RGOjplbXB0eVN0cmluZzsKIHVzaW5nIFdURjo6bnVsbFN0
cmluZzsKIHVzaW5nIFdURjo6ZXF1YWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428196</attachid>
            <date>2021-05-10 13:05:42 -0700</date>
            <delta_ts>2021-05-10 14:10:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510130541.patch</filename>
            <type>text/plain</type>
            <size>44473</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkNzhiNDRmNjJmY2YzMjQ1Mzc2ZjAy
OWU4NmNmNDYxZTYxYzIzNDQuLjM4YmJhYjNiNzUxMWFjNWJlMmY5ZDQxNDgxNzc4N2M3NjU4YjAz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0ludCwK
KyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0U3Ry
aWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50MTYu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvSW50
NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludDY0
U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludFB0clN0
cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFj
dGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCiAyMDIxLTA1
LTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxm
b3JtPi5yZXF1ZXN0U3VibWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggNWFhMTZi
MGI3NDhiMTk4MzIxMmNmNTZjZDY5ZjJjZjc3OGJkY2ZmYi4uMzNiMGU1OTU4ZDgzOTU2M2E2NWUx
M2RjYTIwYTI3YmYzMzE5NGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEzNyw3
ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRv
bVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwogCi0gICAgaW50IHRvSW50
KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9
CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudG9Eb3VibGUob2spOyB9CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51
bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRmxvYXQob2spOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDg3Yzk2M2EzNTE3ZjkzZTExZWVlYWNlYTAwODhmNmJj
MWIzOTZiNDUuLjdkM2YzNDYzMWFjOGU3OTc1ZTlmNDQ4NzM1NTNjZWYxZWQ3OGQwM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtODExLDc2ICs4MTEsNiBAQCBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKENvZGVVbml0TWF0Y2hGdW5jdGlv
biBpc1doaXRlU3BhYwogICAgIHJldHVybiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFy
YWN0ZXJzVG9TcGFjZTxVQ2hhcj4oaXNXaGl0ZVNwYWNlKTsKIH0KIAotaW50IFN0cmluZ0ltcGw6
OnRvSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBTdHJpbmdJbXBsOjp0
b1VJbnRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAg
ICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBTdHJpbmdJbXBsOjp0
b0ludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xl
bmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgU3RyaW5nSW1w
bDo6dG9VSW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0
cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAo
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQg
U3RyaW5nSW1wbDo6dG9JbnQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
LX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6dG9VSW50KGJvb2wqIG9rKQotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQoY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50NjRfdCBTdHJpbmdJbXBsOjp0b0ludDY0KGJvb2wq
IG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dDY0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0ludDY0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCi11aW50NjRfdCBTdHJp
bmdJbXBsOjp0b1VJbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rKTsK
LSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwg
b2spOwotfQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0cihib29sKiBvaykKLXsKLSAg
ICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHIoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKGNo
YXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCiBkb3VibGUgU3RyaW5nSW1wbDo6dG9E
b3VibGUoYm9vbCogb2spCiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAppbmRleCBhZmRkM2UwMTdkNGM5OGIzNjdjM2E3OTQ2NGI1ZTIzNGE5YWIyZGVlLi4wMmE1
ZGFkMjczYmNiMjMyZWFjOGIxMGJkNTkzMGE1NWFmNWVjZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaApAQCAtMzkyLDE4ICszOTIsNiBAQCBwdWJsaWM6CiAgICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpOwogCi0gICAgaW50IHRv
SW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgdW5zaWdu
ZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAg
aW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci0gICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLSAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludChib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1bnNpZ25l
ZCB0b1VJbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
Ci0gICAgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJh
aWxpbmcgZ2FyYmFnZQotICAgIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gbnVsbHB0cik7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wq
IG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotCiAgICAgLy8gRklY
TUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9y
ICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgogICAgIC8vIExpa2UgdGhlIG5v
bi1zdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSByZXR1cm4gdGhlIHZhbHVlIHdoZW4gdGhl
cmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhl
c2Ugd2VyZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWJvdmUgZnVuY3Rpb25zIGluc3RlYWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCmlu
ZGV4IGYwYjNlZWY0MTk1YTMyMGJlYzI1MDZiNzRkYzk4NTdlZDRiZDgzMDcuLjA5ZjMwNGM0YjUx
ODAwNjAwMjVkNGNhYzQwOTg0YzdkZDA5MTAzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCkBAIC0xMTAsMzUgKzExMCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsCiAgICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBiYXNlLCBUcmFpbGluZ0p1
bmtQb2xpY3k6OkFsbG93KTsKIH0KIAotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0lu
dGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNl
SW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgU3RyaW5n
T3JTdHJpbmdWaWV3PiBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgU3RyaW5nT3JT
dHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBib29sKiBvaywgaW50IGJhc2UgPSAxMCkKLXsKLSAgICBh
dXRvIHJlc3VsdCA9IHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0cmluZ1ZpZXcsIGJhc2Up
OwotICAgIGlmIChvaykKLSAgICAgICAgKm9rID0gcmVzdWx0Lmhhc1ZhbHVlKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdC52YWx1ZU9yKDApOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3Zl
IHRvSW50ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8g
cGFyc2VJbnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVy
VHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UgPSAxMCkKLXsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8SW50ZWdyYWxUeXBlPihTdHJpbmdWaWV3IHsgZGF0
YSwgbGVuZ3RoIH0sIG9rLCBiYXNlKTsKLX0KLQotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92
ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRv
IHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUg
U3RyaW5nT3JTdHJpbmdWaWV3PiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBl
KGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywgaW50IGJhc2UgPSAxMCkKLXsK
LSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nVmlldywgYmFzZSk7
Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJl
bHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PEludGVncmFsVHlwZT4gdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVybiBwYXJzZUludGVn
ZXI8SW50ZWdyYWxUeXBlPihTdHJpbmdWaWV3IHsgZGF0YSwgbGVuZ3RoIH0sIGJhc2UpOwotfQot
CiB9CiAKIHVzaW5nIFdURjo6cGFyc2VJbnRlZ2VyOwogdXNpbmcgV1RGOjpwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazsKLXVzaW5nIFdURjo6dG9JbnRlZ3JhbFR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA4MGY4MGNiNzc3ZmRlMzc4N2E4YWE3MTJmNTY3OWY5
YTFhOWExZDEzLi4zY2IwMTgzYzgwMTFhZDhkYTgyYzBlOTQyYjc2OTM4OTgxYmQzZGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTMxMSwxNyArMzExLDYgQEAgU3RyaW5nIG5v
cm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHJlc3VsdC51bmRl
cmx5aW5nU3RyaW5nOwogfQogCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgbmFtZWQgcGFyc2VO
dW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/Ci0vLyBGSVhNRTogU2hvdWxkIHdlIHJlcGxhY2UgdGhl
IHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0aCB0aGlzIHN0eWxlPwotT3B0aW9uYWw8dWlu
dDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGJvb2wgb2sgPSBm
YWxzZTsKLSAgICBhdXRvIG51bWJlciA9IHRvSW50ZWdyYWxUeXBlPHVpbnQxNl90PihzdHJpbmcs
ICZvayk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gbnVtYmVyOwotfQotCiBib29sIGVxdWFsUmVzcGVjdGluZ051bGxpdHkoU3RyaW5nVmll
dyBhLCBTdHJpbmdWaWV3IGIpCiB7CiAgICAgaWYgKGEubV9jaGFyYWN0ZXJzID09IGIubV9jaGFy
YWN0ZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IGEzZjViMTE1ODJhNjJkYmVl
ZjcyYzFkOGEwZTcwMWFhYmE0YzExZTQuLjUwY2QxYTg5MDcwMjJkYjM1YTg4ZDk2ZjMzNDY4NjVi
MmU0MWJjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xNjgsMTEgKzE2OCw2IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJp
bmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQo
KSBjb25zdDsKLSAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7Ci0gICAgaW50IHRv
SW50U3RyaWN0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0
b1VJbnQ2NFN0cmljdCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludDY0X3Q+IHRvSW50NjRTdHJp
Y3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwogCiAg
ICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJik7CkBAIC0yNDYsOCAr
MjQxLDYgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBub3JtYWxpemVkTkZDKFN0cmluZ1ZpZXcpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyk7Ci0KIH0KIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTU4OCw0MCArNTgxLDYgQEAgaW5saW5lIGZsb2F0
IFN0cmluZ1ZpZXc6OnRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hh
cmFjdGVyc1RvRmxvYXQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7CiB9CiAK
LWlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQoKSBjb25zdAotewotICAgIGJvb2wgaXNWYWxp
ZDsKLSAgICByZXR1cm4gdG9JbnQoaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBpbnQgU3RyaW5nVmll
dzo6dG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3QKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1Zh
bGlkKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgJmlzVmFsaWQpOwotfQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0KGJv
b2wmIGlzVmFsaWQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7
Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5n
dGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIE9wdGlvbmFsPHVpbnQ2NF90PiBTdHJpbmdWaWV3
Ojp0b1VJbnQ2NFN0cmljdCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwotICAgIHVpbnQ2
NF90IHJlc3VsdCA9IGlzOEJpdCgpID8gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3Rl
cnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGlzVmFsaWQgPyBt
YWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLX0KLQotaW5saW5lIE9wdGlvbmFs
PGludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QoKSBjb25zdAotewotICAgIGJvb2wg
aXNWYWxpZDsKLSAgICBpbnQ2NF90IHJlc3VsdCA9IGlzOEJpdCgpID8gY2hhcmFjdGVyc1RvSW50
NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJhY3RlcnNU
b0ludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJl
dHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0K
IGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0
CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDFl
ZGJjODNhYzNjYWVmNTFlMDA2NGE3N2NiZDZmYTI3MWFkZTMwNzAuLjI0NTdjZWY2YzUzZmFhZGY3
NzQwYzljOTYxODdiZGFhZmI0OTQ4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAg
LTQ5MiwxMDYgKzQ5Miw2IEBAIFN0cmluZyBTdHJpbmc6Om51bWJlclRvU3RyaW5nRml4ZWRXaWR0
aChkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQogICAgIHJldHVybiBudW1i
ZXJUb0ZpeGVkV2lkdGhTdHJpbmcobnVtYmVyLCBkZWNpbWFsUGxhY2VzLCBidWZmZXIpOwogfQog
Ci1pbnQgU3RyaW5nOjp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludFN0
cmljdChvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZzo6dG9VSW50U3RyaWN0KGJvb2wq
IG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIHJldHVybiBtX2ltcGwtPnRvVUludFN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludDY0X3Qg
U3RyaW5nOjp0b0ludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBp
ZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjRTdHJp
Y3Qob2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBTdHJpbmc6OnRvVUludDY0U3RyaWN0KGJvb2wq
IG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIHJldHVybiBtX2ltcGwtPnRvVUludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotaW50cHRy
X3QgU3RyaW5nOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludFB0
clN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludCBTdHJpbmc6OnRvSW50KGJvb2wqIG9rKSBjb25z
dAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpv
ayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+
dG9JbnQob2spOwotfQotCi11bnNpZ25lZCBTdHJpbmc6OnRvVUludChib29sKiBvaykgY29uc3QK
LXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRv
VUludChvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nOjp0b0ludDY0KGJvb2wqIG9rKSBjb25zdAot
ewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9J
bnQ2NChvayk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZzo6dG9VSW50NjQoYm9vbCogb2spIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9r
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50
b1VJbnQ2NChvayk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHIoYm9vbCogb2spIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAg
Km9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBs
LT50b0ludFB0cihvayk7Ci19Ci0KIGRvdWJsZSBTdHJpbmc6OnRvRG91YmxlKGJvb2wqIG9rKSBj
b25zdAogewogICAgIGlmICghbV9pbXBsKSB7CkBAIC04OTIsMTI5ICs3OTIsNiBAQCBTdHJpbmcg
U3RyaW5nOjpmcm9tQ29kZVBvaW50KFVDaGFyMzIgY29kZVBvaW50KQogfQogCiAvLyBTdHJpbmcg
T3BlcmF0aW9ucwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyB1bnNp
Z25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgaSA9IDA7Ci0KLSAgICAvLyBBbGxvdyBs
ZWFkaW5nIHNwYWNlcy4KLSAgICBmb3IgKDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoIWlzU3BhY2VPck5ld2xpbmUoZGF0YVtpXSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgCi0gICAgLy8gQWxsb3cgc2lnbi4KLSAgICBpZiAoaSAhPSBsZW5ndGggJiYgKGRhdGFb
aV0gPT0gJysnIHx8IGRhdGFbaV0gPT0gJy0nKSkKLSAgICAgICAgKytpOwotICAgIAotICAgIC8v
IEFsbG93IGRpZ2l0cy4KLSAgICBmb3IgKDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICBp
ZiAoIWlzQVNDSUlEaWdpdChkYXRhW2ldKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIHJldHVybiBpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmlj
dChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQot
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1p
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IGNoYXJhY3Rl
cnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEs
IGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkK
LXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQot
Ci1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRy
X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNv
bnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnQoY29u
c3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0
IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxM
Q2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1Rv
VUludChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
KQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2
NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0
aCksIG9rLCAxMCk7Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0
cihjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLWludHB0cl90IGNoYXJh
Y3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2sp
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFRyYWlsaW5nSnVua1BvbGljeSBwb2xpY3k+
CiBzdGF0aWMgaW5saW5lIGRvdWJsZSB0b0RvdWJsZVR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNmU1NGFmMzg4NGRiNzJlYzI4OGVhNzg3ZmQxNWRmMDJk
OTFlYWJlZS4uOTc2ZmRjMTM4Y2M3ZjA5MzQ2YzdkZGQwM2FlMTUwYWZmOGY0NzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00MiwzMSArNDIsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
Ly8gRGVjbGFyYXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKLVdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVy
c1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9V
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNv
bnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwot
aW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotaW50cHRyX3QgY2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApOwotCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChj
b25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLXVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBjaGFyYWN0ZXJzVG9J
bnQ2NChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1XVEZfRVhQT1JU
X1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJz
VG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGln
bm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotCi0vLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0
aW9ucyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWls
aW5nIGdhcmJhZ2UuCi0vLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhl
c2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0vLyBJ
dCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhlc2Ugd2VyZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUg
YWJvdmUgZnVuY3Rpb25zIGluc3RlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOwogV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0
IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxw
dHIpOwpAQCAtMjgxLDIxICsyNTYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9y
KSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcyhjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3Q7CiAKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUlu
dFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3Qg
dG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IG51
bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0cihi
b29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IExpa2UgdGhlIHN0cmlj
dCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVyZSBp
cyB0cmFpbGluZyBnYXJiYWdlLgotICAgIC8vIExpa2UgdGhlIG5vbi1zdHJpY3QgZnVuY3Rpb25z
IGFib3ZlLCB0aGVzZSByZXR1cm4gdGhlIHZhbHVlIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2Fy
YmFnZS4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhlc2Ugd2VyZSBtb3JlIGNvbnNp
c3RlbnQgd2l0aCB0aGUgYWJvdmUgZnVuY3Rpb25zIGluc3RlYWQuCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7
CiAKQEAgLTY4MCwxNiArNjQwLDYgQEAgdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OmFw
cGVuZE51bWJlcjsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwogdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9GbG9hdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50NjQ7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ7
Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0cjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3Ry
aWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0OwogdXNpbmcgV1RGOjplbXB0eVN0cmluZzsKIHVzaW5nIFdURjo6bnVsbFN0
cmluZzsKIHVzaW5nIFdURjo6ZXF1YWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYTdkNmFhODM3NDFlZjM0MzlhYzkyNTE1ZmY4NjA4Mzc5YmM3
ZGMyNi4uMjcyMWY4YzI1NGE4NjkxNGUyY2M0MzI5MmI2MWYyODFiMmI2YzgxNyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDIxLTA1LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0OiBBZGRlZCBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
RGl0dG8uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIENvbnRhaW5zIHRlc3RzIG1vdmVkIGFu
ZCBhZGFwdGVkIGZyb20gdGhlIGZpbGVzIGJlbG93IHNvIHdlIGRvbid0CisgICAgICAgIGxvc2Ug
dGVzdCBjb3ZlcmFnZS4gV2UgYW5kIGFuZCBzaG91bGQgYWRkIG1hbnkgbW9yZSB0ZXN0cy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwOiBSZW1vdmVk
IHRlc3RzIGZvciBwYXJzZVVJbnQxNgorICAgICAgICBhbmQgU3RyaW5nVmlldzo6dG9JbnRTdHJp
Y3QuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwOiBS
ZW1vdmVkIHRlc3RzIGZvciBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbTogVXNlCisgICAgICAg
IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0
cmljdC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocy5tbTogRGl0dG8uCisKIDIwMjEtMDUtMDkgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIHVzZXMg
b2YgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKaW5kZXggNTdmOWY2NTdjMjA5MzliYjUzNTBmZTA4YjA0ODg3OGM3MmJiYzE4
Zi4uZTQ0Y2I0YmI3MzJlMDY1N2I1MGRkZDc4OWJmZGQ5NDcxNDE5OWEyNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CkBAIC05Myw2ICs5Myw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMK
ICAgICBUZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nT3BlcmF0
b3JzLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdQYXJzaW5nQnVmZmVyLmNwcAorICAgIFRlc3Rz
L1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdW
aWV3LmNwcAogICAgIFRlc3RzL1dURi9TeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcAogICAgIFRl
c3RzL1dURi9UZXh0QnJlYWtJdGVyYXRvci5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWE0OTUxMmZmZDNlYWE5NzhlNWY2Y2IwOGQ2M2UwYTUzODJkMWY1Mi4uZTBlZmM3MzBjYzhkYTFm
Mzg2MGMxZjg5OWQ3YWNkMjM0ZTYyYzFjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgz
MSw2ICs4MzEsNyBAQAogCQk5MzFDMjgxRTIyQkM1NzlBMDAxRDk4QzQgLyogb3BlbmRhdGFiYXNl
LWFsd2F5cy1leGlzdHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzFDMjgxQjIyQkM1NTgzMDAxRDk4QzQgLyogb3BlbmRhdGFiYXNl
LWFsd2F5cy1leGlzdHMuaHRtbCAqLzsgfTsKIAkJOTMyOUFBMjkxREUzRjgxRTAwM0FCRDA3IC8q
IFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgKi87IH07CiAJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZBRiAvKiBmb2N1cy1pbnB1dHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzU3NUM1NTFEMzAzNjZFMDAwRDYwNEQgLyogZm9jdXMtaW5wdXRzLmh0bWwgKi87IH07CisJ
CTkzMzJFRjk0MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzJFRjkz
MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcCAqLzsgfTsK
IAkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYg
LyogSGFzaGVyLmNwcCAqLzsgfTsKIAkJOTM0MjU4OUMyNTVCNjA5QjAwNTlFRUREIC8qIFNwZWVj
aFJlY29nbml0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICov
OyB9OwogCQk5MzQyNTg5RTI1NUI2QTEyMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNl
ci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUQyNTVCNjZBMDAwNTlFRUREIC8qIHNw
ZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sICovOyB9OwpA
QCAtODY4LDggKzg2OSw4IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vj
b3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJ
CTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1RjkxODEw
MDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYxNERDOEU1
QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4
NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1l
c19CdW5kbGUuY3BwICovOyB9OwotCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxl
ZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1t
ICovOyB9OwogCQk5M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQ0RCMzMy
NjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsgfTsKKwkJOTUwOTVGMjAy
NjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAg
LyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTUwRTRDQzEyNTJFNzUyNDAwNzE2
NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3Vw
cG9ydC5tbSAqLzsgfTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZp
ZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0g
Ki87IH07CkBAIC0yNTEwLDYgKzI1MTEsNyBAQAogCQk5MzFDMjgxQzIyQkM1NUE3MDAxRDk4QzQg
LyogV2ViU1FMQmFzaWNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViU1FMQmFzaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzI5QUEy
ODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90SGFu
ZGxlS2V5RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWRO
b3RIYW5kbGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMkVG
OTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzFCMUZDQjc2MTgwMDMy
RUNENiAvKiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0MjU4OUIyNTVCNjA5
QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlv
bi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY0LDggKzI1NjYsOCBAQAogCQk5
M0Y1NkRBODFFNUY5MTgxMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3QubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdTbmFwc2hvdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGN0U4NkIxNERDOEU0RDAwQzg0QTk5IC8qIE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2RTE0REM4RTVCMDBDODRB
OTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW1wbGVkUGFnZVRvcENvbG9yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZDREIzMzI2MzYzMTU2MDA0NkREN0Qg
LyogU29ydGVkQXJyYXlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU29ydGVkQXJyYXlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTA5
NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBp
T1NTdHlsdXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gaU9TU3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUz
QUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVBNTI0OTQyNTgx
QTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDQ1Niw2ICs0NDU4LDcgQEAKIAkJCQkyNkYxQjQ0MzE1Q0E0
MzRGMDBEMUU0QkYgLyogU3RyaW5nSW1wbC5jcHAgKi8sCiAJCQkJQzAxMzYzQzcxM0MzOTk3MzAw
RUYzOTY0IC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgKi8sCiAJCQkJN0NENzBDNEUyNEE0MzZFRTAw
RTYxMDQwIC8qIFN0cmluZ1BhcnNpbmdCdWZmZXIuY3BwICovLAorCQkJCTkzMzJFRjkzMjY0OUJC
NjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcCAqLywKIAkJCQk3Qzc0
RDQyRDE4ODIyOEYzMDBFNUVENTcgLyogU3RyaW5nVmlldy5jcHAgKi8sCiAJCQkJNTU5N0Y4MzQx
RDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovLAogCQkJCTkz
MjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCkBAIC01
MjEwLDYgKzUyMTMsNyBAQAogCQkJCTdDODNERjM3MUQwQTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdJ
bXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjM4MUQwQTU5MEMwMEZFQkNGMyAvKiBT
dHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENzBDNEYyNEE0MzZFRTAw
RTYxMDQwIC8qIFN0cmluZ1BhcnNpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTMz
MkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGM0ExRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ1ZpZXcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNo
cm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNDAxRDBBNTkw
QzAwRkVCQ0YzIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjNmM5ZTlmYmNmOWRmZTQ5OGI1NTYwZTg3NWU3Y2Vh
MGQxYzdkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RG
LCBQYXJzZUludGVnZXIpCit7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNU
X0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIiIpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgcGFyc2VJbnRlZ2VyPGludD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdl
cjxpbnQ+KCIxIikpOworICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVnZXI8aW50PigiMyIpKTsK
KyAgICBFWFBFQ1RfRVEoLTMsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMyIpKTsKKyAgICBFWFBFQ1Rf
RVEoMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoLTEy
MzQ1LCBwYXJzZUludGVnZXI8aW50PigiLTEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgyMTQ3NDgz
NjQ3LCBwYXJzZUludGVnZXI8aW50PigiMjE0NzQ4MzY0NyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RG
OjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1Rf
RVEoLTIxNDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDgiKSk7Cisg
ICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIi0yMTQ3NDgzNjQ5
IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCJ4MSIp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIiAxIikpOworICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxeCIpKTsKKworICAgIEVYUEVD
VF9FUSgwVSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiMCIpKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjMiKSk7CisgICAgRVhQRUNUX0VR
KDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiMTIzNDUiKSk7CisgICAgRVhQ
RUNUX0VRKDY1NTM1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiNjU1MzUiKSk7Cisg
ICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiLTEiKSk7
CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiLTMi
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPHVpbnQxNl90Pigi
NjU1MzYiKSk7Cit9CisKK1RFU1QoV1RGLCBQYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
aykKK3sKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxscHRyKSkpOworICAg
IEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oIiIpKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8aW50PigiMSIpKTsKKyAgICBFWFBFQ1RfRVEoMywgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoLTMsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0zIikpOworICAgIEVYUEVDVF9FUSgxMjM0
NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMTIzNDUiKSk7CisgICAg
RVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
LTEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ3IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51
bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjIxNDc0ODM2NDgi
KSk7CisgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVs
bG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDki
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4oIiAxIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxeCIpKTsKKworICAgIEVYUEVDVF9FUSgwVSwg
MFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIwIikpOwor
ICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
dWludDE2X3Q+KCIzIikpOworICAgIEVYUEVDVF9FUSgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMTIzNDUiKSk7CisgICAgRVhQRUNUX0VR
KDY1NTM1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+
KCI2NTUzNSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51
bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTMiKSk7
CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8dWludDE2X3Q+KCI2NTUzNiIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmll
dy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAppbmRl
eCA0NGEyZGUzMDExNGU5NzIxNTE5NTg3YTBmNmUzMjczZTRlOWRlYmJhLi44NGVjNWRhZjJlNDNi
ZWE5YzQ4NTI3Y2EyNWNkZmQ4MjlhZjA3ZjQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdWaWV3LmNwcApAQCAtOTkwLDM3ICs5OTAsNCBAQCBURVNUKFdURiwgU3Ry
aW5nVmlld0lzQWxsQVNDSUkpCiAgICAgRVhQRUNUX1RSVUUoU3RyaW5nVmlldyhTdHJpbmcoYml0
d2lzZV9jYXN0PGNvbnN0IFVDaGFyKj4odSJIZWxsbyIpKSkuaXNBbGxBU0NJSSgpKTsKIH0KIAot
VEVTVChXVEYsIFN0cmluZ1ZpZXdQYXJzZVVJbnQxNikKLXsKLSAgICBFWFBFQ1RfRVEoMFUsICpX
VEY6OnBhcnNlVUludDE2KCIwIikpOwotICAgIEVYUEVDVF9FUSgzVSwgKldURjo6cGFyc2VVSW50
MTYoIjMiKSk7Ci0gICAgRVhQRUNUX0VRKDEyMzQ1VSwgKldURjo6cGFyc2VVSW50MTYoIjEyMzQ1
IikpOwotICAgIEVYUEVDVF9FUSg2NTUzNVUsICpXVEY6OnBhcnNlVUludDE2KCI2NTUzNSIpKTsK
LSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiLTEiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoIVdURjo6cGFyc2VVSW50MTYoIi0zIikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNl
VUludDE2KCI2NTUzNiIpKTsKLX0KLQotVEVTVChXVEYsIFN0cmluZ1ZpZXdUb0ludFN0cmljdCkK
LXsKLSAgICBhdXRvIHRlc3QgPSBbXShBU0NJSUxpdGVyYWwgc3RyaW5nKSB7Ci0gICAgICAgIGJv
b2wgaXNWYWxpZCA9IGZhbHNlOwotICAgICAgICBpbnQgcmVzdWx0ID0gU3RyaW5nVmlldyhzdHJp
bmcpLnRvSW50U3RyaWN0KGlzVmFsaWQpOwotICAgICAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VP
cHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgRVhQRUNUX0VRKDAs
ICp0ZXN0KCIwIl9zKSk7Ci0gICAgRVhQRUNUX0VRKDMsICp0ZXN0KCIzIl9zKSk7Ci0gICAgRVhQ
RUNUX0VRKC0zLCAqdGVzdCgiLTMiX3MpKTsKLSAgICBFWFBFQ1RfRVEoMTIzNDUsICp0ZXN0KCIx
MjM0NSJfcykpOwotICAgIEVYUEVDVF9FUSgtMTIzNDUsICp0ZXN0KCItMTIzNDUiX3MpKTsKLSAg
ICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSA9PSAyMTQ3NDgzNjQ3KSB7Ci0g
ICAgICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCAqdGVzdCgiMjE0NzQ4MzY0NyJfcykpOwotICAg
ICAgICBFWFBFQ1RfVFJVRSghdGVzdCgiMjE0NzQ4MzY0OCJfcykpOwotICAgIH0KLSAgICBpZiAo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSA9PSAtMjE0NzQ4MzY0OCkgewotICAgICAg
ICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsICp0ZXN0KCItMjE0NzQ4MzY0OCJfcykpOwotICAgICAg
ICBFWFBFQ1RfVFJVRSghdGVzdCgiLTIxNDc0ODM2NDkiX3MpKTsKLSAgICB9Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
VEZTdHJpbmcuY3BwCmluZGV4IDgwOGE2NDM0NDBkMTUwMGJiOGU4ZTkyM2Q0OGVhNWI0MTFkYTEy
MzUuLjBlMGU5YzdmODg3ZjNlYWY3YzQ3NzVhMDE0ZjFlNmNjYThkNDEwZjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtMjg3LDU4ICsyODcsNiBA
QCBURVNUKFdURiwgU3RyaW5nSXNvbGF0ZWRDb3B5KQogICAgIEVYUEVDVF9GQUxTRShvcmlnaW5h
bC5pbXBsKCkgPT0gY29weS5pbXBsKCkpOwogfQogCi1URVNUKFdURiwgU3RyaW5nVG9JbnQpCi17
Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygpLnRvSW50
KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIGVtcHR5U3RyaW5nKCkudG9JbnQoKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIGVtcHR5U3RyaW5nKCkudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAiKS50b0ludCgpKTsKLSAgICBF
WFBFQ1RfRVEoMCwgU3RyaW5nKCIwIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2sp
OwotCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9F
USgxLCBTdHJpbmcoIjEiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgU3RyaW5nKCIyMTQ3NDgzNjQ3IikudG9JbnQoKSk7Ci0g
ICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIFN0cmluZygiMjE0NzQ4MzY0NyIpLnRvSW50KCZvaykp
OwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjIxNDc0
ODM2NDgiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIyMTQ3NDgzNjQ4Iiku
dG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgtMjE0
NzQ4MzY0OCwgU3RyaW5nKCItMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgt
MjE0NzQ4MzY0OCwgU3RyaW5nKCItMjE0NzQ4MzY0OCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVD
VF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIi0yMTQ3NDgzNjQ5IikudG9J
bnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiLTIxNDc0ODM2NDkiKS50b0ludCgmb2sp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgLy8gZmFpbCBpZiB3ZSBzZWUgbGVhZGlu
ZyBqdW5rCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygieDEiKS50b0ludCgpKTsKLSAgICBFWFBF
Q1RfRVEoMCwgU3RyaW5nKCJ4MSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7
Ci0KLSAgICAvLyBzdWNjZWVkIGlmIHdlIHNlZSBsZWFkaW5nIHNwYWNlcwotICAgIEVYUEVDVF9F
USgxLCBTdHJpbmcoIiAxIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiIDEi
KS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICAvLyBzaWxlbnRseSBp
Z25vcmUgdHJhaWxpbmcganVuawotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjF4IikudG9JbnQo
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMXgiKS50b0ludCgmb2spKTsKLSAgICBFWFBF
Q1RfVFJVRShvayk7Ci19Ci0KIFRFU1QoV1RGLCBTdHJpbmdUb0RvdWJsZSkKIHsKICAgICBib29s
IG9rID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCA3YWE0YzlkOTc1OGQ2
OGQzODZmM2EwOTI0Y2UwMjZiMzg2ZGUyYWM5Li40NjIwOGIxYmZjMTBjNmE2NDYxOTkxMGNiZDUw
YjI0NWRjN2I0ZGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IHN0YXRpYyBib29sIGRvbmU7CkBAIC0xNTA2LDggKzE1MDcsOCBAQCBURVNUKFVSTFNjaGVtZUhh
bmRsZXIsIFJhbmdlcykKIAogICAgICAgICBhdXRvIHJhbmdlQmVnaW5TdHJpbmcgPSByZXF1ZXN0
UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAt
IGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSk7CiAgICAgICAgIGF1dG8gcmFuZ2VFbmRTdHJp
bmcgPSByZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQgLSBkYXNoIC0g
MSk7Ci0gICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHJhbmdlQmVnaW5TdHJpbmcudG9VSW50NjRT
dHJpY3QoKTsKLSAgICAgICAgYXV0byByYW5nZUVuZCA9IHJhbmdlRW5kU3RyaW5nID09ICIqIiA/
IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHJhbmdlRW5kU3RyaW5nLnRvVUludDY0U3RyaWN0KCk7Cisg
ICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmFuZ2VCZWdp
blN0cmluZykudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byByYW5nZUVuZCA9IHJhbmdlRW5kU3Ry
aW5nID09ICIqIiA/IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4o
cmFuZ2VFbmRTdHJpbmcpLnZhbHVlT3IoMCk7CiAKICAgICAgICAgYXV0byByZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToyMDYgSFRUUFZlcnNp
b246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7CiAgICAgICAgICAgICBAIkNvbnRlbnQtUmFu
Z2UiIDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJieXRlcyAlbGx1LSVsbHUvJWx1Iiwg
cmFuZ2VCZWdpbiwgcmFuZ2VFbmQsICh1bnNpZ25lZCBsb25nKVt2aWRlb0RhdGEgbGVuZ3RoXV0s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IGZkYzVkNmNhY2U2
ODQ3Y2E2NjQxZjQ5MTk0MjY1NGQxOTJlNjkzYzguLjY1MmI3ZmZmMWVmZWRlY2EwMGMxZmNiYmVh
YzRmMzdiMjBjMWRmZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0YXRpYyBib29sIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZTsKQEAgLTc3MCw4ICs3NzEsOCBAQCBURVNUKFdlYktpdCwgTWVkaWFDYWNoZSkK
ICAgICAgICAgICAgIGF1dG8gZW5kID0gcmVxdWVzdC5maW5kKCdccicsIGRhc2gpOwogICAgICAg
ICAgICAgQVNTRVJUKGVuZCAhPSBub3RGb3VuZCk7CiAKLSAgICAgICAgICAgIGF1dG8gcmFuZ2VC
ZWdpbiA9ICpyZXF1ZXN0LnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRh
c2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpLnRvVUludDY0U3RyaWN0KCk7Ci0gICAg
ICAgICAgICBhdXRvIHJhbmdlRW5kID0gKnJlcXVlc3Quc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQg
LSBkYXNoIC0gMSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VCZWdp
biA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmVxdWVzdC5zdWJzdHJpbmcoYmVnaW4gKyByYW5n
ZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKSkudmFs
dWUoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHJlcXVlc3Quc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQgLSBkYXNoIC0gMSkpLnZhbHVlKCk7CiAK
ICAgICAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZUhlYWRlclN0cmluZyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OgogICAgICAgICAgICAgICAgIEAiSFRUUC8xLjEgMjA2IFBhcnRpYWwg
Q29udGVudFxyXG4iCg==
</data>
<flag name="commit-queue"
          id="449059"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428200</attachid>
            <date>2021-05-10 14:09:22 -0700</date>
            <delta_ts>2021-05-10 15:56:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510140921.patch</filename>
            <type>text/plain</type>
            <size>46540</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkNzhiNDRmNjJmY2YzMjQ1Mzc2ZjAy
OWU4NmNmNDYxZTYxYzIzNDQuLjM4YmJhYjNiNzUxMWFjNWJlMmY5ZDQxNDgxNzc4N2M3NjU4YjAz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0ludCwK
KyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0U3Ry
aWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50MTYu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvSW50
NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludDY0
U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludFB0clN0
cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFj
dGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCiAyMDIxLTA1
LTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxm
b3JtPi5yZXF1ZXN0U3VibWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZGRlNGVlZDg0ZjIzMGYzMjAwMWNh
ZjliMjgxNDlhZGM4MWMzNzk2Li41MmUxNjcyOTRkMjc4NDRlOTliMWZhOGY0NTFmYTM1ZGQ0NjEw
YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBm
YW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJl
c3BvbnNlUmVjZWl2ZWQpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NC4KKwogMjAyMS0wNS0x
MCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGZvciBhc3NlcnQgY3Jhc2ggaW4gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlckRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IDVhYTE2YjBiNzQ4YjE5
ODMyMTJjZjU2Y2Q2OWYyY2Y3NzhiZGNmZmIuLjMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEy
N2JmMzMxOTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0xMzcsNyArMTM3LDYg
QEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcg
Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKIAotICAgIGludCB0b0ludChib29sKiBv
ayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQogICAgIGRv
dWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBudWxscHRyKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9rKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcAppbmRleCA4N2M5NjNhMzUxN2Y5M2UxMWVlZWFjZWEwMDg4ZjZiYzFiMzk2YjQ1
Li43ZDNmMzQ2MzFhYzhlNzk3NWU5ZjQ0ODczNTUzY2VmMWVkNzhkMDNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKQEAgLTgxMSw3NiArODExLDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShDb2RlVW5pdE1hdGNoRnVuY3Rpb24gaXNXaGl0
ZVNwYWMKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1Rv
U3BhY2U8VUNoYXI+KGlzV2hpdGVTcGFjZSk7CiB9CiAKLWludCBTdHJpbmdJbXBsOjp0b0ludFN0
cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzMTYoKSwg
bV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6dG9VSW50U3Ry
aWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY2hhcmFjdGVyczE2KCks
IG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NFN0
cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9r
LCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZ0ltcGw6OnRvVUlu
dDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJh
Y3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBTdHJpbmdJbXBs
Ojp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0clN0cmlj
dChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IFN0cmluZ0lt
cGw6OnRvSW50KGJvb2wqIG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVu
c2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
LCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQoY2hhcmFjdGVyczE2KCksIG1fbGVu
Z3RoLCBvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NChib29sKiBvaykKLXsK
LSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFy
YWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChj
aGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotdWludDY0X3QgU3RyaW5nSW1wbDo6
dG9VSW50NjQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0K
LQotaW50cHRyX3QgU3RyaW5nSW1wbDo6dG9JbnRQdHIoYm9vbCogb2spCi17Ci0gICAgaWYgKGlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0cihjaGFyYWN0ZXJz
MTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQogZG91YmxlIFN0cmluZ0ltcGw6OnRvRG91YmxlKGJv
b2wqIG9rKQogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggYWZkZDNlMDE3ZDRjOThiMzY3YzNhNzk0NjRiNWUyMzRhOWFiMmRlZS4uMDJhNWRhZDI3M2Jj
YjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
QEAgLTM5MiwxOCArMzkyLDYgQEAgcHVibGljOgogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNo
YXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGludCB0b0ludFN0cmlj
dChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIHVuc2lnbmVkIHRvVUlu
dFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIGludDY0X3Qg
dG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIHVp
bnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSBu
dWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi0gICAgdW5zaWduZWQgdG9VSW50
KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIGlu
dDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdh
cmJhZ2UKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IG51
bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQogICAgIC8vIEZJWE1FOiBMaWtl
IHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdo
ZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0
IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRy
YWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUg
bW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAppbmRleCBmMGIz
ZWVmNDE5NWEzMjBiZWMyNTA2Yjc0ZGM5ODU3ZWQ0YmQ4MzA3Li4wOWYzMDRjNGI1MTgwMDYwMDI1
ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtMTEwLDM1ICsxMTAsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbAogICAgIHJldHVybiBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcu
Y2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5
OjpBbGxvdyk7CiB9CiAKLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5
cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIu
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5n
Vmlldz4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IFN0cmluZ09yU3RyaW5nVmll
dyYgc3RyaW5nVmlldywgYm9vbCogb2ssIGludCBiYXNlID0gMTApCi17Ci0gICAgYXV0byByZXN1
bHQgPSBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmdWaWV3LCBiYXNlKTsKLSAgICBp
ZiAob2spCi0gICAgICAgICpvayA9IHJlc3VsdC5oYXNWYWx1ZSgpOwotICAgIHJldHVybiByZXN1
bHQudmFsdWVPcigwKTsKLX0KLQotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVn
cmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50
ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0
aCB9LCBvaywgYmFzZSk7Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRl
Z3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUlu
dGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIFN0cmluZ09y
U3RyaW5nVmlldz4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiB0b0ludGVncmFsVHlwZShjb25zdCBT
dHJpbmdPclN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0
dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0cmluZ1ZpZXcsIGJhc2UpOwotfQotCi0v
LyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ug
d2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5h
bWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3Jh
bFR5cGU+IHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgaW50IGJhc2UgPSAxMCkKLXsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVn
cmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBiYXNlKTsKLX0KLQogfQogCiB1
c2luZyBXVEY6OnBhcnNlSW50ZWdlcjsKIHVzaW5nIFdURjo6cGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms7Ci11c2luZyBXVEY6OnRvSW50ZWdyYWxUeXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggODBmODBjYjc3N2ZkZTM3ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQx
My4uM2NiMDE4M2M4MDExYWQ4ZGE4MmMwZTk0MmI3NjkzODk4MWJkM2RjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMTEsMTcgKzMxMSw2IEBAIFN0cmluZyBub3JtYWxpemVk
TkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5kZXJseWluZ1N0
cmluZzsKIH0KIAotLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVp
bnQxNl90PiBpbnN0ZWFkPwotLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBm
YW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KLU9wdGlvbmFsPHVpbnQxNl90PiBw
YXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0g
ICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5nLCAmb2spOwot
ICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51
bWJlcjsKLX0KLQogYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3Ry
aW5nVmlldyBiKQogewogICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hhcmFjdGVycykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBhM2Y1YjExNTgyYTYyZGJlZWY3MmMxZDhh
MGU3MDFhYWJhNGMxMWU0Li41MGNkMWE4OTA3MDIyZGIzNWE4OGQ5NmYzMzQ2ODY1YjJlNDFiY2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTY4LDExICsxNjgsNiBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nVmlldyYp
IGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCi0gICAgaW50IHRvSW50KCkgY29uc3Q7
Ci0gICAgaW50IHRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwotICAgIGludCB0b0ludFN0cmlj
dChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdG9VSW50NjRT
dHJpY3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiB0b0ludDY0U3RyaWN0KCkgY29u
c3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1wbCYpOwpAQCAtMjQ2LDggKzI0MSw2IEBA
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFs
aXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBub3JtYWxp
emVkTkZDKGNvbnN0IFN0cmluZyYpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWlu
dDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOwotCiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CkBAIC01ODgsNDAgKzU4MSw2IEBAIGlubGluZSBmbG9hdCBTdHJpbmdW
aWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCi1pbmxpbmUg
aW50IFN0cmluZ1ZpZXc6OnRvSW50KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAg
cmV0dXJuIHRvSW50KGlzVmFsaWQpOwotfQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50
KGJvb2wmIGlzVmFsaWQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1Zh
bGlkKTsKLX0KLQotaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1Zh
bGlkKSBjb25zdAotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNW
YWxpZCk7Ci19Ci0KLWlubGluZSBPcHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50
NjRTdHJpY3QoKSBjb25zdAotewotICAgIGJvb2wgaXNWYWxpZDsKLSAgICB1aW50NjRfdCByZXN1
bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMx
NigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlv
bmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0KLWlubGluZSBPcHRpb25hbDxpbnQ2NF90
PiBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7
Ci0gICAgaW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9JbnQ2NFN0
cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNW
YWxpZCA/IG1ha2VPcHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotfQotCiBpbmxpbmUg
U3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewogICAg
IGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAxZWRiYzgzYWMz
Y2FlZjUxZTAwNjRhNzdjYmQ2ZmEyNzFhZGUzMDcwLi4yNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2
MTg3YmRhYWZiNDk0OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00OTIsMTA2
ICs0OTIsNiBAQCBTdHJpbmcgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKICAgICByZXR1cm4gbnVtYmVyVG9GaXhl
ZFdpZHRoU3RyaW5nKG51bWJlciwgZGVjaW1hbFBsYWNlcywgYnVmZmVyKTsKIH0KIAotaW50IFN0
cmluZzo6dG9JbnRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICgh
bV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRTdHJpY3Qob2ss
IGJhc2UpOwotfQotCi11bnNpZ25lZCBTdHJpbmc6OnRvVUludFN0cmljdChib29sKiBvaywgaW50
IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAg
ICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1
cm4gbV9pbXBsLT50b1VJbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZzo6
dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lt
cGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludDY0U3RyaWN0KG9rLCBi
YXNlKTsKLX0KLQotdWludDY0X3QgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdChib29sKiBvaywgaW50
IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAg
ICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1
cm4gbV9pbXBsLT50b1VJbnQ2NFN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0cmlu
Zzo6dG9JbnRQdHJTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICgh
bV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHJTdHJpY3Qo
b2ssIGJhc2UpOwotfQotCi1pbnQgU3RyaW5nOjp0b0ludChib29sKiBvaykgY29uc3QKLXsKLSAg
ICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50KG9r
KTsKLX0KLQotdW5zaWduZWQgU3RyaW5nOjp0b1VJbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQob2sp
OwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBp
ZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjQob2sp
OwotfQotCi11aW50NjRfdCBTdHJpbmc6OnRvVUludDY0KGJvb2wqIG9rKSBjb25zdAotewotICAg
IGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNl
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50NjQo
b2spOwotfQotCi1pbnRwdHJfdCBTdHJpbmc6OnRvSW50UHRyKGJvb2wqIG9rKSBjb25zdAotewot
ICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZh
bHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQ
dHIob2spOwotfQotCiBkb3VibGUgU3RyaW5nOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKIHsK
ICAgICBpZiAoIW1faW1wbCkgewpAQCAtODkyLDEyOSArNzkyLDYgQEAgU3RyaW5nIFN0cmluZzo6
ZnJvbUNvZGVQb2ludChVQ2hhcjMyIGNvZGVQb2ludCkKIH0KIAogLy8gU3RyaW5nIE9wZXJhdGlv
bnMKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90IGkgPSAwOwotCi0gICAgLy8gQWxsb3cgbGVhZGluZyBz
cGFjZXMuCi0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1Nw
YWNlT3JOZXdsaW5lKGRhdGFbaV0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAot
ICAgIC8vIEFsbG93IHNpZ24uCi0gICAgaWYgKGkgIT0gbGVuZ3RoICYmIChkYXRhW2ldID09ICcr
JyB8fCBkYXRhW2ldID09ICctJykpCi0gICAgICAgICsraTsKLSAgICAKLSAgICAvLyBBbGxvdyBk
aWdpdHMuCi0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoZGF0YVtpXSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1
cm4gaTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVy
c1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3Ro
LCBvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwot
fQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBj
aGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90
PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2
NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBi
YXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0
IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
LX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVy
c1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3Ro
KSwgb2ssIDEwKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29u
c3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
PFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNU
b0ludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNo
YXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11
aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1
aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9J
bnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgogc3RhdGlj
IGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCmluZGV4IDZlNTRhZjM4ODRkYjcyZWMyODhlYTc4N2ZkMTVkZjAyZDkxZWFiZWUu
Ljk3NmZkYzEzOGNjN2YwOTM0NmM3ZGRkMDNhZTE1MGFmZjhmNDc0NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaApAQCAtNDIsMzEgKzQyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xh
cmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNo
YXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxs
cHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmlj
dChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNv
bnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwot
V1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3Qg
VUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90
IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0
cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9
IDEwKTsKLQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFy
YWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11aW50
NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRF
IHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFy
YWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRy
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRy
YWlsaW5nIGdhcmJhZ2UKLQotLy8gRklYTUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJv
dmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJi
YWdlLgotLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVy
biB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gSXQgd291bGQg
YmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgogV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9E
b3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0
ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKQEAg
LTI4MSwyMSArMjU2LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8
U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0
eUVudHJpZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3Qo
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0
U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRv
SW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVu
c2lnbmVkIHRvVUludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBj
b25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rp
b25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxp
bmcgZ2FyYmFnZS4KLSAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwg
dGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0g
ICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdp
dGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBk
b3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCkBAIC02
ODAsMTYgKzY0MCw2IEBAIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1i
ZXI7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVy
c1RvRmxvYXQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50OwotdXNpbmcg
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0
cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9VSW50NjQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0
cmljdDsKIHVzaW5nIFdURjo6ZW1wdHlTdHJpbmc7CiB1c2luZyBXVEY6Om51bGxTdHJpbmc7CiB1
c2luZyBXVEY6OmVxdWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCBjMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4YzJlLi45M2Ix
YWI2MWQyN2RiMzc0ZWNjMmVjNDVjNjg2YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAyNSwxMCArMTAyNSw4IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uCiAgICAgLy8gUGFjayByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBo
dHRwLWhlYWRlcnMgc3RydWN0dXJlLgogICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0cnVjdHVyZV9u
ZXdfZW1wdHkoInJlc3BvbnNlLWhlYWRlcnMiKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFk
ZXIgOiByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgYm9vbCBvayA9IGZh
bHNlOwotICAgICAgICB1aW50NjRfdCBjb252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52YWx1ZS50b1VJ
bnQ2NCgmb2spOwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3Nl
dChoZWFkZXJzLmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQs
IGNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkVmFs
dWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oaGVhZGVyLnZh
bHVlKSkKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRl
ci5rZXkudXRmOCgpLmRhdGEoKSwgR19UWVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZhbHVlLCBudWxs
cHRyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVy
cy5nZXQoKSwgaGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5HLCBoZWFkZXIu
dmFsdWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNhNzNlNTBkNDZlODljMDk2MzNiM2Y3
YjlkYjBiN2MwMjhhM2I3ZWYuLmJlNzg0ZDlmNTRmODk2YjE5NmMzZGEyZTNlZjAyZjk3YzRkMDI1
MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAyMS0wNS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dDogQWRkZWQgU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5j
cHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICBDb250YWlucyB0
ZXN0cyBtb3ZlZCBhbmQgYWRhcHRlZCBmcm9tIHRoZSBmaWxlcyBiZWxvdyBzbyB3ZSBkb24ndAor
ICAgICAgICBsb3NlIHRlc3QgY292ZXJhZ2UuIFdlIGFuZCBhbmQgc2hvdWxkIGFkZCBtYW55IG1v
cmUgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3
LmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgcGFyc2VVSW50MTYKKyAgICAgICAgYW5kIFN0cmluZ1Zp
ZXc6OnRvSW50U3RyaWN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RG
U3RyaW5nLmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06
IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nVmll
dzo6dG9VSW50NjRTdHJpY3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06IERpdHRvLgorCiAyMDIxLTA1LTEw
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIE9iakMgQVBJIHNpbWlsYXIgdG8gV0tCdW5kbGVQYWdlQ29weUdyb3VwSWRlbnRpZmllcgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggNTdmOWY2NTdjMjA5MzliYjUzNTBmZTA4
YjA0ODg3OGM3MmJiYzE4Zi4uZTQ0Y2I0YmI3MzJlMDY1N2I1MGRkZDc4OWJmZGQ5NDcxNDE5OWEy
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC05Myw2ICs5Myw3IEBAIHNldChU
ZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKICAgICBUZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdQYXJzaW5nQnVmZmVy
LmNwcAorICAgIFRlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcAogICAgIFRl
c3RzL1dURi9TdHJpbmdWaWV3LmNwcAogICAgIFRlc3RzL1dURi9TeW5jaHJvbml6ZWRGaXhlZFF1
ZXVlLmNwcAogICAgIFRlc3RzL1dURi9UZXh0QnJlYWtJdGVyYXRvci5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZmNkZWFiNGY0OWQ3Nzk5N2QwYjEzZGE4MmFkZGNjYzI5ZTczYzNiMy4u
MjlkN2ZiYzIyMTlhM2QyMmVhNGRjNTk2NjFmM2E2MWNmYzEwOTFiMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTgzMSw2ICs4MzEsNyBAQAogCQk5MzFDMjgxRTIyQkM1NzlBMDAxRDk4QzQg
Lyogb3BlbmRhdGFiYXNlLWFsd2F5cy1leGlzdHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDMjgxQjIyQkM1NTgzMDAxRDk4QzQg
Lyogb3BlbmRhdGFiYXNlLWFsd2F5cy1leGlzdHMuaHRtbCAqLzsgfTsKIAkJOTMyOUFBMjkxREUz
RjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBU
ZXh0QnJlYWtJdGVyYXRvci5jcHAgKi87IH07CiAJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZBRiAv
KiBmb2N1cy1pbnB1dHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzU3NUM1NTFEMzAzNjZFMDAwRDYwNEQgLyogZm9jdXMtaW5wdXRz
Lmh0bWwgKi87IH07CisJCTkzMzJFRjk0MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzMzJFRjkzMjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmNwcCAqLzsgfTsKIAkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNENjMxQjFG
Q0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNwcCAqLzsgfTsKIAkJOTM0MjU4OUMyNTVCNjA5QjAw
NTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJl
Y29nbml0aW9uLm1tICovOyB9OwogCQk5MzQyNTg5RTI1NUI2QTEyMDA1OUVFREQgLyogc3BlZWNo
cmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUQyNTVCNjZB
MDAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5j
ZS5odG1sICovOyB9OwpAQCAtODY4LDggKzg2OSw4IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNF
REU4NCAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUu
ZHlsaWIgKi87IH07CiAJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFw
c2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJ
OTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovOyB9OwotCQk5NTA5NUYyMDI2MkZGRkE1MDAw
MEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29y
dGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsg
fTsKKwkJOTUwOTVGMjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2
MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTUwRTRD
QzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYg
LyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsgfTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4Qjcz
IC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2
MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmll
d1RoZW1lQ29sb3IubW0gKi87IH07CkBAIC0yNTExLDYgKzI1MTIsNyBAQAogCQk5MzFDMjgxQzIy
QkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViU1FMQmFzaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgz
QjEgLyogRGlkTm90SGFuZGxlS2V5RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaWROb3RIYW5kbGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2
MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBz
cGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24t
cGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY1LDgg
KzI1NjcsOCBAQAogCQk5M0Y1NkRBODFFNUY5MTgxMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNo
b3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdT
bmFwc2hvdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGN0U4NkIxNERDOEU0
RDAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGcmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2
RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVz
X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9w
Q29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZDREIzMzI2
MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU29ydGVkQXJyYXlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdl
VG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1
MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gaU9TU3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ2MSw2ICs0NDYzLDcgQEAKIAkJ
CQkyNkYxQjQ0MzE1Q0E0MzRGMDBEMUU0QkYgLyogU3RyaW5nSW1wbC5jcHAgKi8sCiAJCQkJQzAx
MzYzQzcxM0MzOTk3MzAwRUYzOTY0IC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgKi8sCiAJCQkJN0NE
NzBDNEUyNEE0MzZFRTAwRTYxMDQwIC8qIFN0cmluZ1BhcnNpbmdCdWZmZXIuY3BwICovLAorCQkJ
CTkzMzJFRjkzMjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNw
cCAqLywKIAkJCQk3Qzc0RDQyRDE4ODIyOEYzMDBFNUVENTcgLyogU3RyaW5nVmlldy5jcHAgKi8s
CiAJCQkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUu
Y3BwICovLAogCQkJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgKi8sCkBAIC01MjE1LDYgKzUyMTgsNyBAQAogCQkJCTdDODNERjM3MUQwQTU5MEMwMEZF
QkNGMyAvKiBTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjM4MUQwQTU5
MEMwMEZFQkNGMyAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NE
NzBDNEYyNEE0MzZFRTAwRTYxMDQwIC8qIFN0cmluZ1BhcnNpbmdCdWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJOTMzMkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGM0ExRDBBNTkwQzAwRkVCQ0Yz
IC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTU5N0Y4MzYxRDk1OTZDODAw
NjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RGNDAxRDBBNTkwQzAwRkVCQ0YzIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjNmM5ZTlmYmNmOWRmZTQ5
OGI1NTYwZTg3NWU3Y2VhMGQxYzdkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCkBAIC0wLDAgKzEs
ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK1RFU1QoV1RGLCBQYXJzZUludGVnZXIpCit7CisgICAgRVhQRUNUX0VRKFdURjo6bnVs
bG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIp
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIiIpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgcGFyc2VJbnRlZ2VyPGludD4oIjAiKSk7CisgICAgRVhQRUNUX0VR
KDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxIikpOworICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVn
ZXI8aW50PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoLTMsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMyIp
KTsKKyAgICBFWFBFQ1RfRVEoMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxMjM0NSIpKTsKKyAg
ICBFWFBFQ1RfRVEoLTEyMzQ1LCBwYXJzZUludGVnZXI8aW50PigiLTEyMzQ1IikpOworICAgIEVY
UEVDVF9FUSgyMTQ3NDgzNjQ3LCBwYXJzZUludGVnZXI8aW50PigiMjE0NzQ4MzY0NyIpKTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiMjE0NzQ4MzY0OCIp
KTsKKyAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXI8aW50PigiLTIx
NDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGlu
dD4oIi0yMTQ3NDgzNjQ5IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlcjxpbnQ+KCJ4MSIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIiAx
IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxeCIp
KTsKKworICAgIEVYUEVDVF9FUSgwVSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiMCIp
KTsKKyAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjMiKSk7
CisgICAgRVhQRUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiMTIz
NDUiKSk7CisgICAgRVhQRUNUX0VRKDY1NTM1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90
PigiNjU1MzUiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPHVp
bnQxNl90PigiLTEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2Vy
PHVpbnQxNl90PigiLTMiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyPHVpbnQxNl90PigiNjU1MzYiKSk7Cit9CisKK1RFU1QoV1RGLCBQYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuaykKK3sKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihu
dWxscHRyKSkpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4oIiIpKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMSIpKTsKKyAgICBFWFBFQ1RfRVEoMywg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMyIpKTsKKyAgICBFWFBFQ1Rf
RVEoLTMsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0zIikpOworICAg
IEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
MTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8aW50PigiLTEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ3IikpOworICAgIEVY
UEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oIjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDgiKSk7CisgICAgRVhQ
RUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigiLTIxNDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIiAxIikpOworICAgIEVYUEVDVF9F
USgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxeCIpKTsKKworICAg
IEVYUEVDVF9FUSgwVSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWlu
dDE2X3Q+KCIwIikpOworICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIzIikpOworICAgIEVYUEVDVF9FUSgxMjM0NVUsIDBV
ICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMTIzNDUiKSk7
CisgICAgRVhQRUNUX0VRKDY1NTM1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8dWludDE2X3Q+KCI2NTUzNSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIi0xIikpOworICAgIEVY
UEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVp
bnQxNl90PigiLTMiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCI2NTUzNiIpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdWaWV3LmNwcAppbmRleCA0NGEyZGUzMDExNGU5NzIxNTE5NTg3YTBmNmUzMjczZTRlOWRlYmJh
Li44NGVjNWRhZjJlNDNiZWE5YzQ4NTI3Y2EyNWNkZmQ4MjlhZjA3ZjQzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcApAQCAtOTkwLDM3ICs5OTAsNCBA
QCBURVNUKFdURiwgU3RyaW5nVmlld0lzQWxsQVNDSUkpCiAgICAgRVhQRUNUX1RSVUUoU3RyaW5n
VmlldyhTdHJpbmcoYml0d2lzZV9jYXN0PGNvbnN0IFVDaGFyKj4odSJIZWxsbyIpKSkuaXNBbGxB
U0NJSSgpKTsKIH0KIAotVEVTVChXVEYsIFN0cmluZ1ZpZXdQYXJzZVVJbnQxNikKLXsKLSAgICBF
WFBFQ1RfRVEoMFUsICpXVEY6OnBhcnNlVUludDE2KCIwIikpOwotICAgIEVYUEVDVF9FUSgzVSwg
KldURjo6cGFyc2VVSW50MTYoIjMiKSk7Ci0gICAgRVhQRUNUX0VRKDEyMzQ1VSwgKldURjo6cGFy
c2VVSW50MTYoIjEyMzQ1IikpOwotICAgIEVYUEVDVF9FUSg2NTUzNVUsICpXVEY6OnBhcnNlVUlu
dDE2KCI2NTUzNSIpKTsKLSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiLTEiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIi0zIikpOwotICAgIEVYUEVDVF9U
UlVFKCFXVEY6OnBhcnNlVUludDE2KCI2NTUzNiIpKTsKLX0KLQotVEVTVChXVEYsIFN0cmluZ1Zp
ZXdUb0ludFN0cmljdCkKLXsKLSAgICBhdXRvIHRlc3QgPSBbXShBU0NJSUxpdGVyYWwgc3RyaW5n
KSB7Ci0gICAgICAgIGJvb2wgaXNWYWxpZCA9IGZhbHNlOwotICAgICAgICBpbnQgcmVzdWx0ID0g
U3RyaW5nVmlldyhzdHJpbmcpLnRvSW50U3RyaWN0KGlzVmFsaWQpOwotICAgICAgICByZXR1cm4g
aXNWYWxpZCA/IG1ha2VPcHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotICAgIH07Ci0g
ICAgRVhQRUNUX0VRKDAsICp0ZXN0KCIwIl9zKSk7Ci0gICAgRVhQRUNUX0VRKDMsICp0ZXN0KCIz
Il9zKSk7Ci0gICAgRVhQRUNUX0VRKC0zLCAqdGVzdCgiLTMiX3MpKTsKLSAgICBFWFBFQ1RfRVEo
MTIzNDUsICp0ZXN0KCIxMjM0NSJfcykpOwotICAgIEVYUEVDVF9FUSgtMTIzNDUsICp0ZXN0KCIt
MTIzNDUiX3MpKTsKLSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSA9PSAy
MTQ3NDgzNjQ3KSB7Ci0gICAgICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCAqdGVzdCgiMjE0NzQ4
MzY0NyJfcykpOwotICAgICAgICBFWFBFQ1RfVFJVRSghdGVzdCgiMjE0NzQ4MzY0OCJfcykpOwot
ICAgIH0KLSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSA9PSAtMjE0NzQ4
MzY0OCkgewotICAgICAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsICp0ZXN0KCItMjE0NzQ4MzY0
OCJfcykpOwotICAgICAgICBFWFBFQ1RfVFJVRSghdGVzdCgiLTIxNDc0ODM2NDkiX3MpKTsKLSAg
ICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCmluZGV4IDgwOGE2NDM0NDBkMTUwMGJiOGU4ZTky
M2Q0OGVhNWI0MTFkYTEyMzUuLjBlMGU5YzdmODg3ZjNlYWY3YzQ3NzVhMDE0ZjFlNmNjYThkNDEw
ZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAt
Mjg3LDU4ICsyODcsNiBAQCBURVNUKFdURiwgU3RyaW5nSXNvbGF0ZWRDb3B5KQogICAgIEVYUEVD
VF9GQUxTRShvcmlnaW5hbC5pbXBsKCkgPT0gY29weS5pbXBsKCkpOwogfQogCi1URVNUKFdURiwg
U3RyaW5nVG9JbnQpCi17Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotCi0gICAgRVhQRUNUX0VRKDAs
IFN0cmluZygpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS50b0ludCgmb2sp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIGVtcHR5U3RyaW5n
KCkudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIGVtcHR5U3RyaW5nKCkudG9JbnQoJm9rKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAiKS50
b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIwIikudG9JbnQoJm9rKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50KCkp
OwotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjEiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1Rf
VFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgU3RyaW5nKCIyMTQ3NDgzNjQ3
IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIFN0cmluZygiMjE0NzQ4MzY0
NyIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgw
LCBTdHJpbmcoIjIxNDc0ODM2NDgiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCIyMTQ3NDgzNjQ4IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAg
IEVYUEVDVF9FUSgtMjE0NzQ4MzY0OCwgU3RyaW5nKCItMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwot
ICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0OCwgU3RyaW5nKCItMjE0NzQ4MzY0OCIpLnRvSW50KCZv
aykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIi0y
MTQ3NDgzNjQ5IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiLTIxNDc0ODM2
NDkiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgLy8gZmFpbCBp
ZiB3ZSBzZWUgbGVhZGluZyBqdW5rCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygieDEiKS50b0lu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJ4MSIpLnRvSW50KCZvaykpOwotICAgIEVY
UEVDVF9GQUxTRShvayk7Ci0KLSAgICAvLyBzdWNjZWVkIGlmIHdlIHNlZSBsZWFkaW5nIHNwYWNl
cwotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIiAxIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VR
KDEsIFN0cmluZygiIDEiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAg
ICAvLyBzaWxlbnRseSBpZ25vcmUgdHJhaWxpbmcganVuawotICAgIEVYUEVDVF9FUSgxLCBTdHJp
bmcoIjF4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMXgiKS50b0ludCgm
b2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci19Ci0KIFRFU1QoV1RGLCBTdHJpbmdUb0RvdWJs
ZSkKIHsKICAgICBib29sIG9rID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRl
eCA3YWE0YzlkOTc1OGQ2OGQzODZmM2EwOTI0Y2UwMjZiMzg2ZGUyYWM5Li40NjIwOGIxYmZjMTBj
NmE2NDYxOTkxMGNiZDUwYjI0NWRjN2I0ZGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9X
ZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIHN0YXRpYyBib29sIGRvbmU7CkBAIC0xNTA2LDggKzE1MDcsOCBAQCBU
RVNUKFVSTFNjaGVtZUhhbmRsZXIsIFJhbmdlcykKIAogICAgICAgICBhdXRvIHJhbmdlQmVnaW5T
dHJpbmcgPSByZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5s
ZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSk7CiAgICAgICAgIGF1
dG8gcmFuZ2VFbmRTdHJpbmcgPSByZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGRhc2ggKyAx
LCBlbmQgLSBkYXNoIC0gMSk7Ci0gICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHJhbmdlQmVnaW5T
dHJpbmcudG9VSW50NjRTdHJpY3QoKTsKLSAgICAgICAgYXV0byByYW5nZUVuZCA9IHJhbmdlRW5k
U3RyaW5nID09ICIqIiA/IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHJhbmdlRW5kU3RyaW5nLnRvVUlu
dDY0U3RyaWN0KCk7CisgICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50
NjRfdD4ocmFuZ2VCZWdpblN0cmluZykudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byByYW5nZUVu
ZCA9IHJhbmdlRW5kU3RyaW5nID09ICIqIiA/IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHBhcnNlSW50
ZWdlcjx1aW50NjRfdD4ocmFuZ2VFbmRTdHJpbmcpLnZhbHVlT3IoMCk7CiAKICAgICAgICAgYXV0
byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29k
ZToyMDYgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7CiAgICAgICAgICAg
ICBAIkNvbnRlbnQtUmFuZ2UiIDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJieXRlcyAl
bGx1LSVsbHUvJWx1IiwgcmFuZ2VCZWdpbiwgcmFuZ2VFbmQsICh1bnNpZ25lZCBsb25nKVt2aWRl
b0RhdGEgbGVuZ3RoXV0sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmlu
ZGV4IGZkYzVkNmNhY2U2ODQ3Y2E2NjQxZjQ5MTk0MjY1NGQxOTJlNjkzYzguLjY1MmI3ZmZmMWVm
ZWRlY2EwMGMxZmNiYmVhYzRmMzdiMjBjMWRmZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0YXRpYyBi
b29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKQEAgLTc3MCw4ICs3NzEsOCBAQCBURVNUKFdlYktp
dCwgTWVkaWFDYWNoZSkKICAgICAgICAgICAgIGF1dG8gZW5kID0gcmVxdWVzdC5maW5kKCdccics
IGRhc2gpOwogICAgICAgICAgICAgQVNTRVJUKGVuZCAhPSBub3RGb3VuZCk7CiAKLSAgICAgICAg
ICAgIGF1dG8gcmFuZ2VCZWdpbiA9ICpyZXF1ZXN0LnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0
ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpLnRvVUludDY0
U3RyaWN0KCk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlRW5kID0gKnJlcXVlc3Quc3Vic3RyaW5n
KGRhc2ggKyAxLCBlbmQgLSBkYXNoIC0gMSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgICAg
IGF1dG8gcmFuZ2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmVxdWVzdC5zdWJzdHJp
bmcoYmVnaW4gKyByYW5nZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVz
Lmxlbmd0aCgpKSkudmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSBwYXJzZUlu
dGVnZXI8dWludDY0X3Q+KHJlcXVlc3Quc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQgLSBkYXNoIC0g
MSkpLnZhbHVlKCk7CiAKICAgICAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZUhlYWRlclN0cmlu
ZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OgogICAgICAgICAgICAgICAgIEAiSFRUUC8x
LjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCg==
</data>
<flag name="commit-queue"
          id="449078"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428202</attachid>
            <date>2021-05-10 14:34:59 -0700</date>
            <delta_ts>2021-05-10 15:40:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510143458.patch</filename>
            <type>text/plain</type>
            <size>47463</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkNzhiNDRmNjJmY2YzMjQ1Mzc2ZjAy
OWU4NmNmNDYxZTYxYzIzNDQuLjM4YmJhYjNiNzUxMWFjNWJlMmY5ZDQxNDgxNzc4N2M3NjU4YjAz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0ludCwK
KyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0U3Ry
aWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50MTYu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvSW50
NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludDY0
U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludFB0clN0
cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFj
dGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCiAyMDIxLTA1
LTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxm
b3JtPi5yZXF1ZXN0U3VibWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZGRlNGVlZDg0ZjIzMGYzMjAwMWNh
ZjliMjgxNDlhZGM4MWMzNzk2Li4zM2IwMzQ0ZGZiYmVhZDJhZTU4ODU2OGE2NzExZWJhZWZjYjc5
NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBm
YW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHQ6OnZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPHVpbnQ2NF90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50NjQuCisKIDIwMjEtMDUtMTAg
IEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBm
b3IgYXNzZXJ0IGNyYXNoIGluIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXJEYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCA1YWExNmIwYjc0OGIxOTgz
MjEyY2Y1NmNkNjlmMmNmNzc4YmRjZmZiLi4zM2IwZTU5NThkODM5NTYzYTY1ZTEzZGNhMjBhMjdi
ZjMzMTk0YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMTM3LDcgKzEzNyw2IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7IH0KICAgICBkb3Vi
bGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50
b0RvdWJsZShvayk7IH0KICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gbnVsbHB0cikgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKaW5kZXggODdjOTYzYTM1MTdmOTNlMTFlZWVhY2VhMDA4OGY2YmMxYjM5NmI0NS4u
N2QzZjM0NjMxYWM4ZTc5NzVlOWY0NDg3MzU1M2NlZjFlZDc4ZDAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCkBAIC04MTEsNzYgKzgxMSw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIGlzV2hpdGVT
cGFjCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1Nw
YWNlPFVDaGFyPihpc1doaXRlU3BhY2UpOwogfQogCi1pbnQgU3RyaW5nSW1wbDo6dG9JbnRTdHJp
Y3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2ssIGJh
c2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1f
bGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludFN0cmlj
dChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gY2hhcmFjdGVyc1RvVUludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2ssIGJh
c2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZ0ltcGw6OnRvSW50NjRTdHJp
Y3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigp
LCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBTdHJpbmdJbXBsOjp0b1VJbnQ2
NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
LCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6
dG9JbnRQdHJTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkK
LSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3Qo
Y2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBTdHJpbmdJbXBs
Ojp0b0ludChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCi11bnNp
Z25lZCBTdHJpbmdJbXBsOjp0b1VJbnQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
b2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgb2spOwotfQotCi1pbnQ2NF90IFN0cmluZ0ltcGw6OnRvSW50NjQoYm9vbCogb2spCi17Ci0g
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjQoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjQoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZ0ltcGw6OnRv
VUludDY0KGJvb2wqIG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9VSW50NjQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0K
LWludHB0cl90IFN0cmluZ0ltcGw6OnRvSW50UHRyKGJvb2wqIG9rKQotewotICAgIGlmIChpczhC
aXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHIoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KIGRvdWJsZSBTdHJpbmdJbXBsOjp0b0RvdWJsZShib29s
KiBvaykKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IGFmZGQzZTAxN2Q0Yzk4YjM2N2MzYTc5NDY0YjVlMjM0YTlhYjJkZWUuLjAyYTVkYWQyNzNiY2Iy
MzJlYWM4YjEwYmQ1OTMwYTU1YWY1ZWNmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0zOTIsMTggKzM5Miw2IEBAIHB1YmxpYzoKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFy
MzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICB1bnNpZ25lZCB0b1VJbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICBpbnQ2NF90IHRv
SW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICB1aW50
NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwot
ICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIHVuc2lnbmVkIHRvVUludChi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnQ2
NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi0gICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi0gICAgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxs
cHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi0KICAgICAvLyBGSVhNRTogTGlrZSB0
aGUgc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVu
IHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBm
dW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFp
bGluZyBnYXJiYWdlLgogICAgIC8vIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGVzZSB3ZXJlIG1v
cmUgY29uc2lzdGVudCB3aXRoIHRoZSBhYm92ZSBmdW5jdGlvbnMgaW5zdGVhZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKaW5kZXggZjBiM2Vl
ZjQxOTVhMzIwYmVjMjUwNmI3NGRjOTg1N2VkNGJkODMwNy4uMDlmMzA0YzRiNTE4MDA2MDAyNWQ0
Y2FjNDA5ODRjN2RkMDkxMDNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmgKQEAgLTExMCwzNSArMTEwLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50ZWdyYWxUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWwKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeTo6
QWxsb3cpOwogfQogCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdyYWxUeXBl
IGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRlZ2VyLgot
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBTdHJpbmdPclN0cmluZ1Zp
ZXc+IEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcm
IHN0cmluZ1ZpZXcsIGJvb2wqIG9rLCBpbnQgYmFzZSA9IDEwKQotewotICAgIGF1dG8gcmVzdWx0
ID0gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nVmlldywgYmFzZSk7Ci0gICAgaWYg
KG9rKQotICAgICAgICAqb2sgPSByZXN1bHQuaGFzVmFsdWUoKTsKLSAgICByZXR1cm4gcmVzdWx0
LnZhbHVlT3IoMCk7Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3Jh
bFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVn
ZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxJbnRlZ3JhbFR5cGU+KFN0cmluZ1ZpZXcgeyBkYXRhLCBsZW5ndGgg
fSwgb2ssIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdy
YWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRl
Z2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBTdHJpbmdPclN0
cmluZ1ZpZXc+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gdG9JbnRlZ3JhbFR5cGUoY29uc3QgU3Ry
aW5nT3JTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVy
biBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmdWaWV3LCBiYXNlKTsKLX0KLQotLy8g
RklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdl
IGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1l
IEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxU
eXBlPiB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3Jh
bFR5cGU+KFN0cmluZ1ZpZXcgeyBkYXRhLCBsZW5ndGggfSwgYmFzZSk7Ci19Ci0KIH0KIAogdXNp
bmcgV1RGOjpwYXJzZUludGVnZXI7CiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rOwotdXNpbmcgV1RGOjp0b0ludGVncmFsVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCmluZGV4IDgwZjgwY2I3NzdmZGUzNzg3YThhYTcxMmY1Njc5ZjlhMWE5YTFkMTMu
LjNjYjAxODNjODAxMWFkOGRhODJjMGU5NDJiNzY5Mzg5ODFiZDNkY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcApAQCAtMzExLDE3ICszMTEsNiBAQCBTdHJpbmcgbm9ybWFsaXplZE5G
Qyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcmVzdWx0LnVuZGVybHlpbmdTdHJp
bmc7CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBuYW1lZCBwYXJzZU51bWJlcjx1aW50
MTZfdD4gaW5zdGVhZD8KLS8vIEZJWE1FOiBTaG91bGQgd2UgcmVwbGFjZSB0aGUgdG9JbnQgZmFt
aWx5IG9mIGZ1bmN0aW9ucyB3aXRoIHRoaXMgc3R5bGU/Ci1PcHRpb25hbDx1aW50MTZfdD4gcGFy
c2VVSW50MTYoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAg
IGF1dG8gbnVtYmVyID0gdG9JbnRlZ3JhbFR5cGU8dWludDE2X3Q+KHN0cmluZywgJm9rKTsKLSAg
ICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBudW1i
ZXI7Ci19Ci0KIGJvb2wgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmlu
Z1ZpZXcgYikKIHsKICAgICBpZiAoYS5tX2NoYXJhY3RlcnMgPT0gYi5tX2NoYXJhY3RlcnMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYTNmNWIxMTU4MmE2MmRiZWVmNzJjMWQ4YTBl
NzAxYWFiYTRjMTFlNC4uNTBjZDFhODkwNzAyMmRiMzVhODhkOTZmMzM0Njg2NWIyZTQxYmNhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTE2OCwxMSArMTY4LDYgQEAgcHVibGljOgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAotICAgIGludCB0b0ludCgpIGNvbnN0Owot
ICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCYgaXNWYWxpZCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRvVUludDY0U3Ry
aWN0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gdG9JbnQ2NFN0cmljdCgpIGNvbnN0
OwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAKICAgICBzdGF0aWMg
dm9pZCBpbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmKTsKQEAgLTI0Niw4ICsyNDEsNiBAQCBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIG5vcm1hbGl6
ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbm9ybWFsaXpl
ZE5GQyhjb25zdCBTdHJpbmcmKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQx
Nl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKLQogfQogCiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZy5oPgpAQCAtNTg4LDQwICs1ODEsNiBAQCBpbmxpbmUgZmxvYXQgU3RyaW5nVmll
dzo6dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzVG9G
bG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKIH0KIAotaW5saW5lIGlu
dCBTdHJpbmdWaWV3Ojp0b0ludCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwotICAgIHJl
dHVybiB0b0ludChpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludChi
b29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxp
ZCk7Ci19Ci0KLWlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxp
ZCkgY29uc3QKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJz
VG9JbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1
cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOwotfQotCi1pbmxpbmUgT3B0aW9uYWw8dWludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvVUludDY0
U3RyaWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgdWludDY0X3QgcmVzdWx0
ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9s
ZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25h
bChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotfQotCi1pbmxpbmUgT3B0aW9uYWw8aW50NjRfdD4g
U3RyaW5nVmlldzo6dG9JbnQ2NFN0cmljdCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwot
ICAgIGludDY0X3QgcmVzdWx0ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChj
aGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGlzVmFs
aWQgPyBtYWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLX0KLQogaW5saW5lIFN0
cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggMWVkYmM4M2FjM2Nh
ZWY1MWUwMDY0YTc3Y2JkNmZhMjcxYWRlMzA3MC4uMjQ1N2NlZjZjNTNmYWFkZjc3NDBjOWM5NjE4
N2JkYWFmYjQ5NDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNDkyLDEwNiAr
NDkyLDYgQEAgU3RyaW5nIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSBu
dW1iZXIsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpCiAgICAgcmV0dXJuIG51bWJlclRvRml4ZWRX
aWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcik7CiB9CiAKLWludCBTdHJp
bmc6OnRvSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50U3RyaWN0KG9rLCBi
YXNlKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nOjp0b1VJbnRTdHJpY3QoYm9vbCogb2ssIGludCBi
YXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IG1faW1wbC0+dG9VSW50U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBTdHJpbmc6OnRv
SW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBs
KSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnQ2NFN0cmljdChvaywgYmFz
ZSk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZzo6dG9VSW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBi
YXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IG1faW1wbC0+dG9VSW50NjRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBTdHJpbmc6
OnRvSW50UHRyU3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50UHRyU3RyaWN0KG9r
LCBiYXNlKTsKLX0KLQotaW50IFN0cmluZzo6dG9JbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludChvayk7
Ci19Ci0KLXVuc2lnbmVkIFN0cmluZzo6dG9VSW50KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlm
ICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50KG9rKTsK
LX0KLQotaW50NjRfdCBTdHJpbmc6OnRvSW50NjQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludDY0KG9rKTsK
LX0KLQotdWludDY0X3QgU3RyaW5nOjp0b1VJbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBp
ZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvVUludDY0KG9r
KTsKLX0KLQotaW50cHRyX3QgU3RyaW5nOjp0b0ludFB0cihib29sKiBvaykgY29uc3QKLXsKLSAg
ICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50UHRy
KG9rKTsKLX0KLQogZG91YmxlIFN0cmluZzo6dG9Eb3VibGUoYm9vbCogb2spIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ltcGwpIHsKQEAgLTg5MiwxMjkgKzc5Miw2IEBAIFN0cmluZyBTdHJpbmc6OmZy
b21Db2RlUG9pbnQoVUNoYXIzMiBjb2RlUG9pbnQpCiB9CiAKIC8vIFN0cmluZyBPcGVyYXRpb25z
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHVuc2lnbmVkIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIHNpemVfdCBpID0gMDsKLQotICAgIC8vIEFsbG93IGxlYWRpbmcgc3Bh
Y2VzLgotICAgIGZvciAoOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShkYXRhW2ldKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAg
ICAvLyBBbGxvdyBzaWduLgotICAgIGlmIChpICE9IGxlbmd0aCAmJiAoZGF0YVtpXSA9PSAnKycg
fHwgZGF0YVtpXSA9PSAnLScpKQotICAgICAgICArK2k7Ci0gICAgCi0gICAgLy8gQWxsb3cgZGln
aXRzLgotICAgIGZvciAoOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNBU0NJ
SURpZ2l0KGRhdGFbaV0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IGNoYXJhY3RlcnNU
b0ludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0K
LQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFz
ZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBv
aywgYmFzZSk7Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBM
Q2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19
Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90
IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRw
dHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IGNoYXJhY3RlcnNU
b0ludFB0clN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwg
bGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxlbmd0aCks
IG9rLCAxMCk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxV
Q2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9J
bnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50NjRfdCBjaGFy
YWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2sp
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEs
IGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEw
KTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWlu
dDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hh
cj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50
UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeT4KIHN0YXRpYyBp
bmxpbmUgZG91YmxlIHRvRG91YmxlVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCA2ZTU0YWYzODg0ZGI3MmVjMjg4ZWE3ODdmZDE1ZGYwMmQ5MWVhYmVlLi45
NzZmZGMxMzhjYzdmMDkzNDZjN2RkZDAzYWUxNTBhZmY4ZjQ3NDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTQyLDMxICs0Miw2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAvLyBEZWNsYXJh
dGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3Ry
aWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
Y29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBP
UlRfUFJJVkFURSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1pbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAx
MCk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
LXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0
IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51
bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLVdURl9FWFBPUlRfUFJJVkFURSB1
aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50cHRyX3QgY2hhcmFj
dGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCi0KLS8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3Zl
LCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFn
ZS4KLS8vIExpa2UgdGhlIG5vbi1zdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSByZXR1cm4g
dGhlIHZhbHVlIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLS8vIEl0IHdvdWxkIGJl
IGJldHRlciBpZiB0aGVzZSB3ZXJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBhYm92ZSBmdW5j
dGlvbnMgaW5zdGVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91
YmxlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFjdGVy
c1RvRmxvYXQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CkBAIC0y
ODEsMjEgKzI1Niw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0
cmluZz4gc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NFN0
cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApIGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0lu
dChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNp
Z25lZCB0b1VJbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gbnVsbHB0cikgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0g
bnVsbHB0cikgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0aW9u
cyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWlsaW5n
IGdhcmJhZ2UuCi0gICAgLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRo
ZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotICAg
IC8vIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGVzZSB3ZXJlIG1vcmUgY29uc2lzdGVudCB3aXRo
IHRoZSBhYm92ZSBmdW5jdGlvbnMgaW5zdGVhZC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKIApAQCAtNjgw
LDE2ICs2NDAsNiBAQCB1c2luZyBXVEY6OlN0cmluZzsKIHVzaW5nIFdURjo6YXBwZW5kTnVtYmVy
OwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3VibGU7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNU
b0Zsb2F0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50NjRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDsKLXVzaW5nIFdU
Rjo6Y2hhcmFjdGVyc1RvSW50UHRyOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvVUludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Q7Ci11c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJp
Y3Q7CiB1c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjpudWxsU3RyaW5nOwogdXNp
bmcgV1RGOjplcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwCmluZGV4IDE2YzY3YTAwNTUzNzBmMTAzNmFlMjczM2E1MDUyZDIyOGE2MzBlOTku
LmE2NWViY2IyODA5MmMxZmJkOWI4NDYzOGJkZjg4ZTdhNjJlYzRiM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtMTgzLDcgKzE4Myw4
IEBAIHVuc2lnbmVkIEdMQ29udGV4dDo6dmVyc2lvbigpCiAgICAgICAgICAgICB2ZXJzaW9uRGln
aXRzID0gdmVyc2lvblN0cmluZ0NvbXBvbmVudHNbMF0uc3BsaXQoJy4nKTsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fdmVyc2lvbiA9IHZlcnNpb25EaWdpdHNbMF0udG9VSW50KCkgKiAxMDAgKyB2
ZXJzaW9uRGlnaXRzWzFdLnRvVUludCgpICogMTA7CisgICAgICAgIG1fdmVyc2lvbiA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2ZXJzaW9uRGlnaXRzWzBdKS52
YWx1ZU9yKDApICogMTAwCisgICAgICAgICAgICArIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPHVuc2lnbmVkPih2ZXJzaW9uRGlnaXRzWzFdKS52YWx1ZU9yKDApICogMTA7CiAgICAg
fQogICAgIHJldHVybiBtX3ZlcnNpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IGMxMjRlNzhkMjdkMmE1NzgzZjZiOGM0ZTAzOGE3ZjExNmMz
MjhjMmUuLjkzYjFhYjYxZDI3ZGIzNzRlY2MyZWM0NWM2ODZjMmE3YTE4YzU4MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xMDI1LDEwICsxMDI1
LDggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICAvLyBQYWNrIHJlc3BvbnNlIGhlYWRl
cnMgaW4gdGhlIGh0dHAtaGVhZGVycyBzdHJ1Y3R1cmUuCiAgICAgaGVhZGVycy5yZXNldChnc3Rf
c3RydWN0dXJlX25ld19lbXB0eSgicmVzcG9uc2UtaGVhZGVycyIpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhlYWRlciA6IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAgICBi
b29sIG9rID0gZmFsc2U7Ci0gICAgICAgIHVpbnQ2NF90IGNvbnZlcnRlZFZhbHVlID0gaGVhZGVy
LnZhbHVlLnRvVUludDY0KCZvayk7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgIGdzdF9z
dHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXkudXRmOCgpLmRhdGEoKSwgR19U
WVBFX1VJTlQ2NCwgY29udmVydGVkVmFsdWUsIG51bGxwdHIpOworICAgICAgICBpZiAoYXV0byBj
b252ZXJ0ZWRWYWx1ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90
PihoZWFkZXIudmFsdWUpKQorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5n
ZXQoKSwgaGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfVUlOVDY0LCAqY29udmVydGVk
VmFsdWUsIG51bGxwdHIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnc3Rfc3RydWN0dXJl
X3NldChoZWFkZXJzLmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9TVFJJ
TkcsIGhlYWRlci52YWx1ZS51dGY4KCkuZGF0YSgpLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2E3M2U1MGQ0NmU4
OWMwOTYzM2IzZjdiOWRiMGI3YzAyOGEzYjdlZi4uYmU3ODRkOWY1NGY4OTZiMTk2YzNkYTJlM2Vm
MDJmOTdjNGQwMjUyYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTEwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9m
IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OiBBZGRlZCBTdHJpbmdUb0ludGVnZXJD
b252ZXJzaW9uLmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcDogQWRkZWQuCisgICAgICAg
IENvbnRhaW5zIHRlc3RzIG1vdmVkIGFuZCBhZGFwdGVkIGZyb20gdGhlIGZpbGVzIGJlbG93IHNv
IHdlIGRvbid0CisgICAgICAgIGxvc2UgdGVzdCBjb3ZlcmFnZS4gV2UgYW5kIGFuZCBzaG91bGQg
YWRkIG1hbnkgbW9yZSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1ZpZXcuY3BwOiBSZW1vdmVkIHRlc3RzIGZvciBwYXJzZVVJbnQxNgorICAgICAgICBh
bmQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9XVEZTdHJpbmcuY3BwOiBSZW1vdmVkIHRlc3RzIGZvciBTdHJpbmc6OnRvSW50Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZCBv
ZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbTogRGl0dG8uCisK
IDIwMjEtMDUtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgT2JqQyBBUEkgc2ltaWxhciB0byBXS0J1bmRsZVBhZ2VDb3B5R3JvdXBJ
ZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2Y5ZjY1N2MyMDkz
OWJiNTM1MGZlMDhiMDQ4ODc4YzcyYmJjMThmLi5lNDRjYjRiYjczMmUwNjU3YjUwZGRkNzg5YmZk
ZDk0NzE0MTk5YTI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTkzLDYgKzkz
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAog
ICAgIFRlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1Bh
cnNpbmdCdWZmZXIuY3BwCisgICAgVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
Y3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgVGVzdHMvV1RGL1N5bmNocm9u
aXplZEZpeGVkUXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNwcApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmY2RlYWI0ZjQ5ZDc3OTk3ZDBiMTNkYTgyYWRkY2Nj
MjllNzNjM2IzLi4yOWQ3ZmJjMjIxOWEzZDIyZWE0ZGM1OTY2MWYzYTYxY2ZjMTA5MWIxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMxLDYgKzgzMSw3IEBACiAJCTkzMUMyODFFMjJCQzU3
OUEwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUMyODFCMjJCQzU1
ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sICovOyB9OwogCQk5
MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgxRTAw
M0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3MTA0
NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBm
b2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsKKwkJOTMzMkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uY3BwICovOyB9OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyog
SGFzaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovOyB9OwogCQk5MzQyNTg5
QzI1NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQg
LyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi87IH07CiAJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVE
RCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQy
NTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9u
LXBlcnNpc3RlbmNlLmh0bWwgKi87IH07CkBAIC04NjgsOCArODY5LDggQEAKIAkJOTNGNTZEQTcx
RTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyog
bGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1t
ICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIw
MjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIw
IC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gKi87IH07CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2
REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlN
YXAuY3BwICovOyB9OworCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VU
b3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9
OwogCQk5NTBFNENDMTI1MkU3NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1
MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBE
NjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4
QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUy
NTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkg
LyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsKQEAgLTI1MTEsNiArMjUxMiw3IEBACiAJ
CTkzMUMyODFDMjJCQzU1QTcwMDFEOThDNCAvKiBXZWJTUUxCYXNpY3MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTUUxCYXNpY3MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0QnJl
YWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzE0MDdCMTdC
NDQxOTAwMEYwODNCMSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpZE5vdEhhbmRsZUtleURvd24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMzRDYzMUIxRkNCNzYxODAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25p
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0MjU4OUQyNTVCNjZBMDAw
NTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNwZWVjaHJlY29nbml0aW9uLXVzZXIt
cGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1NjUsOCArMjU2Nyw4IEBACiAJCTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dl
YlZpZXdTbmFwc2hvdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2ViVmlld1NuYXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3
RTg2QjE0REM4RTREMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJh
bWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRjdFODZFMTREQzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2Ft
cGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUw
RTRDQzAyNTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVD
b2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmll
d1RoZW1lQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDYxLDYgKzQ0
NjMsNyBAQAogCQkJCTI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCAq
LywKIAkJCQlDMDEzNjNDNzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCAq
LywKIAkJCQk3Q0Q3MEM0RTI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1ZmZlci5j
cHAgKi8sCisJCQkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uY3BwICovLAogCQkJCTdDNzRENDJEMTg4MjI4RjMwMEU1RUQ1NyAvKiBTdHJpbmdW
aWV3LmNwcCAqLywKIAkJCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVk
Rml4ZWRRdWV1ZS5jcHAgKi8sCiAJCQkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRC
cmVha0l0ZXJhdG9yLmNwcCAqLywKQEAgLTUyMTUsNiArNTIxOCw3IEBACiAJCQkJN0M4M0RGMzcx
RDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RGMzgxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0Q3MEM0RjI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzQTFEMEE1
OTBDMDBGRUJDRjMgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NTk3Rjgz
NjFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREY0MDFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdHNDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGM2Yzll
OWZiY2Y5ZGZlNDk4YjU1NjBlODc1ZTdjZWEwZDFjN2RlCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAK
QEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFBhcnNlSW50ZWdlcikKK3sKKyAgICBFWFBFQ1Rf
RVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8
aW50PigiIikpOworICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXI8aW50PigiMCIpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIjEiKSk7CisgICAgRVhQRUNUX0VRKDMs
IHBhcnNlSW50ZWdlcjxpbnQ+KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJbnRlZ2Vy
PGludD4oIi0zIikpOworICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIjEy
MzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMTIzNDUi
KSk7CisgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+KCIyMTQ3NDgz
NjQ3IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIy
MTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBhcnNlSW50ZWdl
cjxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVn
ZXI8aW50PigiIDEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2Vy
PGludD4oIjF4IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVnZXI8dWlu
dDE2X3Q+KCIwIikpOworICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQx
Nl90PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSArICpwYXJzZUludGVnZXI8dWlu
dDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVn
ZXI8dWludDE2X3Q+KCI2NTUzNSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0
LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKK30KKworVEVTVChXVEYsIFBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQoreworICAgIEVYUEVDVF9FUShXVEY6Om51bGxv
cHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIikpOworICAgIEVYUEVDVF9FUSgwLCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIwIikpOworICAgIEVYUEVDVF9F
USgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxIikpOworICAgIEVY
UEVDVF9FUSgzLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIzIikpOwor
ICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
LTMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoLTEyMzQ1LCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKDIxNDc0
ODM2NDcsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjIxNDc0ODM2NDci
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8aW50PigiMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDcg
LSAxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OCIp
KTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0
LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIDEiKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjF4
IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjMiKSk7CisgICAgRVhQRUNUX0VR
KDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+
KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVDVF9FUShXVEY6
Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTEi
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2IikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IDQ0YTJkZTMwMTE0ZTk3MjE1MTk1ODdhMGY2ZTMy
NzNlNGU5ZGViYmEuLjg0ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFmMDdmNDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC05OTAs
MzcgKzk5MCw0IEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3SXNBbGxBU0NJSSkKICAgICBFWFBFQ1Rf
VFJVRShTdHJpbmdWaWV3KFN0cmluZyhiaXR3aXNlX2Nhc3Q8Y29uc3QgVUNoYXIqPih1IkhlbGxv
IikpKS5pc0FsbEFTQ0lJKCkpOwogfQogCi1URVNUKFdURiwgU3RyaW5nVmlld1BhcnNlVUludDE2
KQotewotICAgIEVYUEVDVF9FUSgwVSwgKldURjo6cGFyc2VVSW50MTYoIjAiKSk7Ci0gICAgRVhQ
RUNUX0VRKDNVLCAqV1RGOjpwYXJzZVVJbnQxNigiMyIpKTsKLSAgICBFWFBFQ1RfRVEoMTIzNDVV
LCAqV1RGOjpwYXJzZVVJbnQxNigiMTIzNDUiKSk7Ci0gICAgRVhQRUNUX0VRKDY1NTM1VSwgKldU
Rjo6cGFyc2VVSW50MTYoIjY1NTM1IikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNlVUlu
dDE2KCItMSIpKTsKLSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiLTMiKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIjY1NTM2IikpOwotfQotCi1URVNUKFdU
RiwgU3RyaW5nVmlld1RvSW50U3RyaWN0KQotewotICAgIGF1dG8gdGVzdCA9IFtdKEFTQ0lJTGl0
ZXJhbCBzdHJpbmcpIHsKLSAgICAgICAgYm9vbCBpc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGlu
dCByZXN1bHQgPSBTdHJpbmdWaWV3KHN0cmluZykudG9JbnRTdHJpY3QoaXNWYWxpZCk7Ci0gICAg
ICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7
Ci0gICAgfTsKLSAgICBFWFBFQ1RfRVEoMCwgKnRlc3QoIjAiX3MpKTsKLSAgICBFWFBFQ1RfRVEo
MywgKnRlc3QoIjMiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTMsICp0ZXN0KCItMyJfcykpOwotICAg
IEVYUEVDVF9FUSgxMjM0NSwgKnRlc3QoIjEyMzQ1Il9zKSk7Ci0gICAgRVhQRUNUX0VRKC0xMjM0
NSwgKnRlc3QoIi0xMjM0NSJfcykpOwotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpID09IDIxNDc0ODM2NDcpIHsKLSAgICAgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsICp0
ZXN0KCIyMTQ3NDgzNjQ3Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCIyMTQ3NDgz
NjQ4Il9zKSk7Ci0gICAgfQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigp
ID09IC0yMTQ3NDgzNjQ4KSB7Ci0gICAgICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0OCwgKnRlc3Qo
Ii0yMTQ3NDgzNjQ4Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCItMjE0NzQ4MzY0
OSJfcykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggODA4YTY0MzQ0MGQx
NTAwYmI4ZThlOTIzZDQ4ZWE1YjQxMWRhMTIzNS4uMGUwZTljN2Y4ODdmM2VhZjdjNDc3NWEwMTRm
MWU2Y2NhOGQ0MTBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V1RGU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJp
bmcuY3BwCkBAIC0yODcsNTggKzI4Nyw2IEBAIFRFU1QoV1RGLCBTdHJpbmdJc29sYXRlZENvcHkp
CiAgICAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsLmltcGwoKSA9PSBjb3B5LmltcGwoKSk7CiB9CiAK
LVRFU1QoV1RGLCBTdHJpbmdUb0ludCkKLXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0KLSAgICBF
WFBFQ1RfRVEoMCwgU3RyaW5nKCkudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygp
LnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwg
ZW1wdHlTdHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgZW1wdHlTdHJpbmcoKS50
b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIFN0
cmluZygiMCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAiKS50b0ludCgm
b2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIx
IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50KCZvaykpOwot
ICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBTdHJpbmco
IjIxNDc0ODM2NDciKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgU3RyaW5n
KCIyMTQ3NDgzNjQ3IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAg
RVhQRUNUX0VRKDAsIFN0cmluZygiMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9F
USgwLCBTdHJpbmcoIjIxNDc0ODM2NDgiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2spOwotCi0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3NDgzNjQ4Iiku
dG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3NDgzNjQ4
IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDAs
IFN0cmluZygiLTIxNDc0ODM2NDkiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCItMjE0NzQ4MzY0OSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAg
ICAvLyBmYWlsIGlmIHdlIHNlZSBsZWFkaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCJ4MSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIikudG9JbnQoJm9r
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIC8vIHN1Y2NlZWQgaWYgd2Ugc2VlIGxl
YWRpbmcgc3BhY2VzCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiIDEiKS50b0ludCgpKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVF
KG9rKTsKLQotICAgIC8vIHNpbGVudGx5IGlnbm9yZSB0cmFpbGluZyBqdW5rCi0gICAgRVhQRUNU
X0VRKDEsIFN0cmluZygiMXgiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIx
eCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLX0KLQogVEVTVChXVEYsIFN0
cmluZ1RvRG91YmxlKQogewogICAgIGJvb2wgb2sgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxl
ci0xLm1tCmluZGV4IDdhYTRjOWQ5NzU4ZDY4ZDM4NmYzYTA5MjRjZTAyNmIzODZkZTJhYzkuLjQ2
MjA4YjFiZmMxMGM2YTY0NjE5OTEwY2JkNTBiMjQ1ZGM3YjRkYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgZG9uZTsKQEAgLTE1MDYsOCAr
MTUwNyw4IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgUmFuZ2VzKQogCiAgICAgICAgIGF1dG8g
cmFuZ2VCZWdpblN0cmluZyA9IHJlcXVlc3RSYW5nZVN0cmluZy5zdWJzdHJpbmcoYmVnaW4gKyBy
YW5nZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKTsK
ICAgICAgICAgYXV0byByYW5nZUVuZFN0cmluZyA9IHJlcXVlc3RSYW5nZVN0cmluZy5zdWJzdHJp
bmcoZGFzaCArIDEsIGVuZCAtIGRhc2ggLSAxKTsKLSAgICAgICAgYXV0byByYW5nZUJlZ2luID0g
cmFuZ2VCZWdpblN0cmluZy50b1VJbnQ2NFN0cmljdCgpOwotICAgICAgICBhdXRvIHJhbmdlRW5k
ID0gcmFuZ2VFbmRTdHJpbmcgPT0gIioiID8gW3ZpZGVvRGF0YSBsZW5ndGhdIDogcmFuZ2VFbmRT
dHJpbmcudG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgYXV0byByYW5nZUJlZ2luID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ2NF90PihyYW5nZUJlZ2luU3RyaW5nKS52YWx1ZU9yKDApOworICAgICAgICBh
dXRvIHJhbmdlRW5kID0gcmFuZ2VFbmRTdHJpbmcgPT0gIioiID8gW3ZpZGVvRGF0YSBsZW5ndGhd
IDogcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihyYW5nZUVuZFN0cmluZykudmFsdWVPcigwKTsKIAog
ICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8i
XSBzdGF0dXNDb2RlOjIwNiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsK
ICAgICAgICAgICAgIEAiQ29udGVudC1SYW5nZSIgOiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImJ5dGVzICVsbHUtJWxsdS8lbHUiLCByYW5nZUJlZ2luLCByYW5nZUVuZCwgKHVuc2lnbmVk
IGxvbmcpW3ZpZGVvRGF0YSBsZW5ndGhdXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0KaW5kZXggZmRjNWQ2Y2FjZTY4NDdjYTY2NDFmNDkxOTQyNjU0ZDE5MmU2OTNjOC4u
NjUyYjdmZmYxZWZlZGVjYTAwYzFmY2JiZWFjNGYzN2IyMGMxZGZlZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Rl
cXVlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOwpAQCAtNzcwLDggKzc3MSw4IEBA
IFRFU1QoV2ViS2l0LCBNZWRpYUNhY2hlKQogICAgICAgICAgICAgYXV0byBlbmQgPSByZXF1ZXN0
LmZpbmQoJ1xyJywgZGFzaCk7CiAgICAgICAgICAgICBBU1NFUlQoZW5kICE9IG5vdEZvdW5kKTsK
IAotICAgICAgICAgICAgYXV0byByYW5nZUJlZ2luID0gKnJlcXVlc3Quc3Vic3RyaW5nKGJlZ2lu
ICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgo
KSkudG9VSW50NjRTdHJpY3QoKTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSAqcmVxdWVz
dC5zdWJzdHJpbmcoZGFzaCArIDEsIGVuZCAtIGRhc2ggLSAxKS50b1VJbnQ2NFN0cmljdCgpOwor
ICAgICAgICAgICAgYXV0byByYW5nZUJlZ2luID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihyZXF1
ZXN0LnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAt
IHJhbmdlQnl0ZXMubGVuZ3RoKCkpKS52YWx1ZSgpOworICAgICAgICAgICAgYXV0byByYW5nZUVu
ZCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmVxdWVzdC5zdWJzdHJpbmcoZGFzaCArIDEsIGVu
ZCAtIGRhc2ggLSAxKSkudmFsdWUoKTsKIAogICAgICAgICAgICAgTlNTdHJpbmcgKnJlc3BvbnNl
SGVhZGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICAg
ICAgQCJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIK
</data>
<flag name="commit-queue"
          id="449074"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428205</attachid>
            <date>2021-05-10 14:55:34 -0700</date>
            <delta_ts>2021-05-10 22:31:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510145534.patch</filename>
            <type>text/plain</type>
            <size>47693</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkNzhiNDRmNjJmY2YzMjQ1Mzc2ZjAy
OWU4NmNmNDYxZTYxYzIzNDQuLjM4YmJhYjNiNzUxMWFjNWJlMmY5ZDQxNDgxNzc4N2M3NjU4YjAz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0ludCwK
KyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0U3Ry
aWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50MTYu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvSW50
NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludDY0
U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludFB0clN0
cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFj
dGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCiAyMDIxLTA1
LTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxm
b3JtPi5yZXF1ZXN0U3VibWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZGRlNGVlZDg0ZjIzMGYzMjAwMWNh
ZjliMjgxNDlhZGM4MWMzNzk2Li4zM2IwMzQ0ZGZiYmVhZDJhZTU4ODU2OGE2NzExZWJhZWZjYjc5
NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBm
YW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHQ6OnZlcnNpb24pOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPHVpbnQ2NF90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50NjQuCisKIDIwMjEtMDUtMTAg
IEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBm
b3IgYXNzZXJ0IGNyYXNoIGluIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXJEYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCA1YWExNmIwYjc0OGIxOTgz
MjEyY2Y1NmNkNjlmMmNmNzc4YmRjZmZiLi4zM2IwZTU5NThkODM5NTYzYTY1ZTEzZGNhMjBhMjdi
ZjMzMTk0YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMTM3LDcgKzEzNyw2IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7IH0KICAgICBkb3Vi
bGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50
b0RvdWJsZShvayk7IH0KICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gbnVsbHB0cikgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKaW5kZXggODdjOTYzYTM1MTdmOTNlMTFlZWVhY2VhMDA4OGY2YmMxYjM5NmI0NS4u
N2QzZjM0NjMxYWM4ZTc5NzVlOWY0NDg3MzU1M2NlZjFlZDc4ZDAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCkBAIC04MTEsNzYgKzgxMSw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIGlzV2hpdGVT
cGFjCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1Nw
YWNlPFVDaGFyPihpc1doaXRlU3BhY2UpOwogfQogCi1pbnQgU3RyaW5nSW1wbDo6dG9JbnRTdHJp
Y3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2ssIGJh
c2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1f
bGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludFN0cmlj
dChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gY2hhcmFjdGVyc1RvVUludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2ssIGJh
c2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZ0ltcGw6OnRvSW50NjRTdHJp
Y3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigp
LCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11aW50NjRfdCBTdHJpbmdJbXBsOjp0b1VJbnQ2
NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
LCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6
dG9JbnRQdHJTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIGlmIChpczhCaXQoKSkK
LSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2ssIGJhc2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3Qo
Y2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBTdHJpbmdJbXBs
Ojp0b0ludChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwotfQotCi11bnNp
Z25lZCBTdHJpbmdJbXBsOjp0b1VJbnQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
b2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgb2spOwotfQotCi1pbnQ2NF90IFN0cmluZ0ltcGw6OnRvSW50NjQoYm9vbCogb2spCi17Ci0g
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjQoY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIG9rKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjQoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZ0ltcGw6OnRv
VUludDY0KGJvb2wqIG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9VSW50NjQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0K
LWludHB0cl90IFN0cmluZ0ltcGw6OnRvSW50UHRyKGJvb2wqIG9rKQotewotICAgIGlmIChpczhC
aXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRQdHIoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KIGRvdWJsZSBTdHJpbmdJbXBsOjp0b0RvdWJsZShib29s
KiBvaykKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IGFmZGQzZTAxN2Q0Yzk4YjM2N2MzYTc5NDY0YjVlMjM0YTlhYjJkZWUuLjAyYTVkYWQyNzNiY2Iy
MzJlYWM4YjEwYmQ1OTMwYTU1YWY1ZWNmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0zOTIsMTggKzM5Miw2IEBAIHB1YmxpYzoKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFy
MzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICB1bnNpZ25lZCB0b1VJbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICBpbnQ2NF90IHRv
SW50NjRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLSAgICB1aW50
NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwot
ICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIHVuc2lnbmVkIHRvVUludChi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnQ2
NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi0gICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi0gICAgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxs
cHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi0KICAgICAvLyBGSVhNRTogTGlrZSB0
aGUgc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVu
IHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBm
dW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFp
bGluZyBnYXJiYWdlLgogICAgIC8vIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGVzZSB3ZXJlIG1v
cmUgY29uc2lzdGVudCB3aXRoIHRoZSBhYm92ZSBmdW5jdGlvbnMgaW5zdGVhZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKaW5kZXggZjBiM2Vl
ZjQxOTVhMzIwYmVjMjUwNmI3NGRjOTg1N2VkNGJkODMwNy4uMDlmMzA0YzRiNTE4MDA2MDAyNWQ0
Y2FjNDA5ODRjN2RkMDkxMDNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmgKQEAgLTExMCwzNSArMTEwLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50ZWdyYWxUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWwKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeTo6
QWxsb3cpOwogfQogCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdyYWxUeXBl
IGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRlZ2VyLgot
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBTdHJpbmdPclN0cmluZ1Zp
ZXc+IEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcm
IHN0cmluZ1ZpZXcsIGJvb2wqIG9rLCBpbnQgYmFzZSA9IDEwKQotewotICAgIGF1dG8gcmVzdWx0
ID0gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nVmlldywgYmFzZSk7Ci0gICAgaWYg
KG9rKQotICAgICAgICAqb2sgPSByZXN1bHQuaGFzVmFsdWUoKTsKLSAgICByZXR1cm4gcmVzdWx0
LnZhbHVlT3IoMCk7Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3Jh
bFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVn
ZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxJbnRlZ3JhbFR5cGU+KFN0cmluZ1ZpZXcgeyBkYXRhLCBsZW5ndGgg
fSwgb2ssIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdy
YWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRl
Z2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBTdHJpbmdPclN0
cmluZ1ZpZXc+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gdG9JbnRlZ3JhbFR5cGUoY29uc3QgU3Ry
aW5nT3JTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBpbnQgYmFzZSA9IDEwKQotewotICAgIHJldHVy
biBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmdWaWV3LCBiYXNlKTsKLX0KLQotLy8g
RklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdl
IGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1l
IEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxU
eXBlPiB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3Jh
bFR5cGU+KFN0cmluZ1ZpZXcgeyBkYXRhLCBsZW5ndGggfSwgYmFzZSk7Ci19Ci0KIH0KIAogdXNp
bmcgV1RGOjpwYXJzZUludGVnZXI7CiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rOwotdXNpbmcgV1RGOjp0b0ludGVncmFsVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCmluZGV4IDgwZjgwY2I3NzdmZGUzNzg3YThhYTcxMmY1Njc5ZjlhMWE5YTFkMTMu
LjNjYjAxODNjODAxMWFkOGRhODJjMGU5NDJiNzY5Mzg5ODFiZDNkY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcApAQCAtMzExLDE3ICszMTEsNiBAQCBTdHJpbmcgbm9ybWFsaXplZE5G
Qyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcmVzdWx0LnVuZGVybHlpbmdTdHJp
bmc7CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBuYW1lZCBwYXJzZU51bWJlcjx1aW50
MTZfdD4gaW5zdGVhZD8KLS8vIEZJWE1FOiBTaG91bGQgd2UgcmVwbGFjZSB0aGUgdG9JbnQgZmFt
aWx5IG9mIGZ1bmN0aW9ucyB3aXRoIHRoaXMgc3R5bGU/Ci1PcHRpb25hbDx1aW50MTZfdD4gcGFy
c2VVSW50MTYoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAg
IGF1dG8gbnVtYmVyID0gdG9JbnRlZ3JhbFR5cGU8dWludDE2X3Q+KHN0cmluZywgJm9rKTsKLSAg
ICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBudW1i
ZXI7Ci19Ci0KIGJvb2wgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmlu
Z1ZpZXcgYikKIHsKICAgICBpZiAoYS5tX2NoYXJhY3RlcnMgPT0gYi5tX2NoYXJhY3RlcnMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYTNmNWIxMTU4MmE2MmRiZWVmNzJjMWQ4YTBl
NzAxYWFiYTRjMTFlNC4uNTBjZDFhODkwNzAyMmRiMzVhODhkOTZmMzM0Njg2NWIyZTQxYmNhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTE2OCwxMSArMTY4LDYgQEAgcHVibGljOgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAotICAgIGludCB0b0ludCgpIGNvbnN0Owot
ICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCYgaXNWYWxpZCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRvVUludDY0U3Ry
aWN0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gdG9JbnQ2NFN0cmljdCgpIGNvbnN0
OwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAKICAgICBzdGF0aWMg
dm9pZCBpbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmKTsKQEAgLTI0Niw4ICsyNDEsNiBAQCBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIG5vcm1hbGl6
ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbm9ybWFsaXpl
ZE5GQyhjb25zdCBTdHJpbmcmKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQx
Nl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKLQogfQogCiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZy5oPgpAQCAtNTg4LDQwICs1ODEsNiBAQCBpbmxpbmUgZmxvYXQgU3RyaW5nVmll
dzo6dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzVG9G
bG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKIH0KIAotaW5saW5lIGlu
dCBTdHJpbmdWaWV3Ojp0b0ludCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwotICAgIHJl
dHVybiB0b0ludChpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludChi
b29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxp
ZCk7Ci19Ci0KLWlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxp
ZCkgY29uc3QKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJz
VG9JbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1
cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOwotfQotCi1pbmxpbmUgT3B0aW9uYWw8dWludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvVUludDY0
U3RyaWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgdWludDY0X3QgcmVzdWx0
ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9s
ZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25h
bChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotfQotCi1pbmxpbmUgT3B0aW9uYWw8aW50NjRfdD4g
U3RyaW5nVmlldzo6dG9JbnQ2NFN0cmljdCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpc1ZhbGlkOwot
ICAgIGludDY0X3QgcmVzdWx0ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChj
aGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGlzVmFs
aWQgPyBtYWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLX0KLQogaW5saW5lIFN0
cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggMWVkYmM4M2FjM2Nh
ZWY1MWUwMDY0YTc3Y2JkNmZhMjcxYWRlMzA3MC4uMjQ1N2NlZjZjNTNmYWFkZjc3NDBjOWM5NjE4
N2JkYWFmYjQ5NDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNDkyLDEwNiAr
NDkyLDYgQEAgU3RyaW5nIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSBu
dW1iZXIsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpCiAgICAgcmV0dXJuIG51bWJlclRvRml4ZWRX
aWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcik7CiB9CiAKLWludCBTdHJp
bmc6OnRvSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50U3RyaWN0KG9rLCBi
YXNlKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nOjp0b1VJbnRTdHJpY3QoYm9vbCogb2ssIGludCBi
YXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IG1faW1wbC0+dG9VSW50U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBTdHJpbmc6OnRv
SW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBs
KSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnQ2NFN0cmljdChvaywgYmFz
ZSk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZzo6dG9VSW50NjRTdHJpY3QoYm9vbCogb2ssIGludCBi
YXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IG1faW1wbC0+dG9VSW50NjRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBTdHJpbmc6
OnRvSW50UHRyU3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50UHRyU3RyaWN0KG9r
LCBiYXNlKTsKLX0KLQotaW50IFN0cmluZzo6dG9JbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludChvayk7
Ci19Ci0KLXVuc2lnbmVkIFN0cmluZzo6dG9VSW50KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlm
ICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50KG9rKTsK
LX0KLQotaW50NjRfdCBTdHJpbmc6OnRvSW50NjQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludDY0KG9rKTsK
LX0KLQotdWludDY0X3QgU3RyaW5nOjp0b1VJbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBp
ZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvVUludDY0KG9r
KTsKLX0KLQotaW50cHRyX3QgU3RyaW5nOjp0b0ludFB0cihib29sKiBvaykgY29uc3QKLXsKLSAg
ICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50UHRy
KG9rKTsKLX0KLQogZG91YmxlIFN0cmluZzo6dG9Eb3VibGUoYm9vbCogb2spIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ltcGwpIHsKQEAgLTg5MiwxMjkgKzc5Miw2IEBAIFN0cmluZyBTdHJpbmc6OmZy
b21Db2RlUG9pbnQoVUNoYXIzMiBjb2RlUG9pbnQpCiB9CiAKIC8vIFN0cmluZyBPcGVyYXRpb25z
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHVuc2lnbmVkIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIHNpemVfdCBpID0gMDsKLQotICAgIC8vIEFsbG93IGxlYWRpbmcgc3Bh
Y2VzLgotICAgIGZvciAoOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShkYXRhW2ldKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAg
ICAvLyBBbGxvdyBzaWduLgotICAgIGlmIChpICE9IGxlbmd0aCAmJiAoZGF0YVtpXSA9PSAnKycg
fHwgZGF0YVtpXSA9PSAnLScpKQotICAgICAgICArK2k7Ci0gICAgCi0gICAgLy8gQWxsb3cgZGln
aXRzLgotICAgIGZvciAoOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNBU0NJ
SURpZ2l0KGRhdGFbaV0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IGNoYXJhY3RlcnNU
b0ludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0K
LQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFz
ZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBv
aywgYmFzZSk7Ci19Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBM
Q2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19
Ci0KLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90
IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRw
dHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IGNoYXJhY3RlcnNU
b0ludFB0clN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwg
bGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxlbmd0aCks
IG9rLCAxMCk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxV
Q2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9J
bnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50NjRfdCBjaGFy
YWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2sp
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEs
IGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEw
KTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWlu
dDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hh
cj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50
UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeT4KIHN0YXRpYyBp
bmxpbmUgZG91YmxlIHRvRG91YmxlVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCA2ZTU0YWYzODg0ZGI3MmVjMjg4ZWE3ODdmZDE1ZGYwMmQ5MWVhYmVlLi45
NzZmZGMxMzhjYzdmMDkzNDZjN2RkZDAzYWUxNTBhZmY4ZjQ3NDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTQyLDMxICs0Miw2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAvLyBEZWNsYXJh
dGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3Ry
aWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
Y29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBP
UlRfUFJJVkFURSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1pbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAx
MCk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
LXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0
IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51
bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLVdURl9FWFBPUlRfUFJJVkFURSB1
aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50cHRyX3QgY2hhcmFj
dGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCi0KLS8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3Zl
LCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFn
ZS4KLS8vIExpa2UgdGhlIG5vbi1zdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSByZXR1cm4g
dGhlIHZhbHVlIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLS8vIEl0IHdvdWxkIGJl
IGJldHRlciBpZiB0aGVzZSB3ZXJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBhYm92ZSBmdW5j
dGlvbnMgaW5zdGVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91
YmxlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFjdGVy
c1RvRmxvYXQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CkBAIC0y
ODEsMjEgKzI1Niw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0
cmluZz4gc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NFN0
cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApIGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0lu
dChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNp
Z25lZCB0b1VJbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gbnVsbHB0cikgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0g
bnVsbHB0cikgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0aW9u
cyBhYm92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWlsaW5n
IGdhcmJhZ2UuCi0gICAgLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRo
ZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotICAg
IC8vIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGVzZSB3ZXJlIG1vcmUgY29uc2lzdGVudCB3aXRo
IHRoZSBhYm92ZSBmdW5jdGlvbnMgaW5zdGVhZC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKIApAQCAtNjgw
LDE2ICs2NDAsNiBAQCB1c2luZyBXVEY6OlN0cmluZzsKIHVzaW5nIFdURjo6YXBwZW5kTnVtYmVy
OwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3VibGU7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNU
b0Zsb2F0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50NjRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDsKLXVzaW5nIFdU
Rjo6Y2hhcmFjdGVyc1RvSW50UHRyOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvVUludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Q7Ci11c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJp
Y3Q7CiB1c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjpudWxsU3RyaW5nOwogdXNp
bmcgV1RGOjplcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwCmluZGV4IDE2YzY3YTAwNTUzNzBmMTAzNmFlMjczM2E1MDUyZDIyOGE2MzBlOTku
LmNlN2E0MzllMmQxYjFlYzZmNDNiYTE5MTZlZDYxOTk5ZjlhNTg5NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtMTksOCArMTksMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIFVTRShPUEVOR0wpIHx8IFVTRShPUEVOR0xf
RVMpCisKICNpbmNsdWRlICJHTENvbnRleHQuaCIKKwogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVj
aWZpYy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
IAogI2lmIFVTRShFR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCkBAIC0xODMsNyArMTg2
LDggQEAgdW5zaWduZWQgR0xDb250ZXh0Ojp2ZXJzaW9uKCkKICAgICAgICAgICAgIHZlcnNpb25E
aWdpdHMgPSB2ZXJzaW9uU3RyaW5nQ29tcG9uZW50c1swXS5zcGxpdCgnLicpOwogICAgICAgICB9
CiAKLSAgICAgICAgbV92ZXJzaW9uID0gdmVyc2lvbkRpZ2l0c1swXS50b1VJbnQoKSAqIDEwMCAr
IHZlcnNpb25EaWdpdHNbMV0udG9VSW50KCkgKiAxMDsKKyAgICAgICAgbV92ZXJzaW9uID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMF0p
LnZhbHVlT3IoMCkgKiAxMDAKKyAgICAgICAgICAgICsgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMV0pLnZhbHVlT3IoMCkgKiAxMDsKICAg
ICB9CiAgICAgcmV0dXJuIG1fdmVyc2lvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYzEyNGU3OGQyN2QyYTU3ODNmNmI4YzRlMDM4YTdmMTE2
YzMyOGMyZS4uOTNiMWFiNjFkMjdkYjM3NGVjYzJlYzQ1YzY4NmMyYTdhMThjNTgzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTEwMjUsMTAgKzEw
MjUsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIC8vIFBhY2sgcmVzcG9uc2UgaGVh
ZGVycyBpbiB0aGUgaHR0cC1oZWFkZXJzIHN0cnVjdHVyZS4KICAgICBoZWFkZXJzLnJlc2V0KGdz
dF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJyZXNwb25zZS1oZWFkZXJzIikpOwogICAgIGZvciAoY29u
c3QgYXV0byYgaGVhZGVyIDogcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSB7Ci0gICAgICAg
IGJvb2wgb2sgPSBmYWxzZTsKLSAgICAgICAgdWludDY0X3QgY29udmVydGVkVmFsdWUgPSBoZWFk
ZXIudmFsdWUudG9VSW50NjQoJm9rKTsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgZ3N0
X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5nZXQoKSwgaGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBH
X1RZUEVfVUlOVDY0LCBjb252ZXJ0ZWRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChhdXRv
IGNvbnZlcnRlZFZhbHVlID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0
X3Q+KGhlYWRlci52YWx1ZSkpCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChoZWFkZXJz
LmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQsICpjb252ZXJ0
ZWRWYWx1ZSwgbnVsbHB0cik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1
cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXkudXRmOCgpLmRhdGEoKSwgR19UWVBFX1NU
UklORywgaGVhZGVyLnZhbHVlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYTczZTUwZDQ2
ZTg5YzA5NjMzYjNmN2I5ZGIwYjdjMDI4YTNiN2VmLi5iZTc4NGQ5ZjU0Zjg5NmIxOTZjM2RhMmUz
ZWYwMmY5N2M0ZDAyNTJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkg
b2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFN0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgQ29udGFpbnMgdGVzdHMgbW92ZWQgYW5kIGFkYXB0ZWQgZnJvbSB0aGUgZmlsZXMgYmVsb3cg
c28gd2UgZG9uJ3QKKyAgICAgICAgbG9zZSB0ZXN0IGNvdmVyYWdlLiBXZSBhbmQgYW5kIHNob3Vs
ZCBhZGQgbWFueSBtb3JlIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nVmlldy5jcHA6IFJlbW92ZWQgdGVzdHMgZm9yIHBhcnNlVUludDE2CisgICAgICAg
IGFuZCBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dURlN0cmluZy5jcHA6IFJlbW92ZWQgdGVzdHMgZm9yIFN0cmluZzo6dG9JbnQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PiBpbnN0ZWFk
IG9mIFN0cmluZ1ZpZXc6OnRvVUludDY0U3RyaWN0LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOiBEaXR0by4K
KwogMjAyMS0wNS0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFkZCBPYmpDIEFQSSBzaW1pbGFyIHRvIFdLQnVuZGxlUGFnZUNvcHlHcm91
cElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDU3ZjlmNjU3YzIw
OTM5YmI1MzUwZmUwOGIwNDg4NzhjNzJiYmMxOGYuLmU0NGNiNGJiNzMyZTA2NTdiNTBkZGQ3ODli
ZmRkOTQ3MTQxOTlhMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtOTMsNiAr
OTMsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3Bw
CiAgICAgVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5n
UGFyc2luZ0J1ZmZlci5jcHAKKyAgICBUZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKICAgICBUZXN0cy9XVEYvU3luY2hy
b25pemVkRml4ZWRRdWV1ZS5jcHAKICAgICBUZXN0cy9XVEYvVGV4dEJyZWFrSXRlcmF0b3IuY3Bw
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRj
Y2MyOWU3M2MzYjMuLjI5ZDdmYmMyMjE5YTNkMjJlYTRkYzU5NjYxZjNhNjFjZmMxMDkxYjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzEsNiArODMxLDcgQEAKIAkJOTMxQzI4MUUyMkJD
NTc5QTAwMUQ5OEM0IC8qIG9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQzI4MUIyMkJD
NTU4MzAwMUQ5OEM0IC8qIG9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgKi87IH07CiAJ
CTkzMjlBQTI5MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFF
MDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcx
MDQ3MDA1REZGQUYgLyogZm9jdXMtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8q
IGZvY3VzLWlucHV0cy5odG1sICovOyB9OworCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyog
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5jcHAgKi87IH07CiAJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAv
KiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMzRDYzMUIxRkNCNzYxODAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgKi87IH07CiAJCTkzNDI1
ODlDMjU1QjYwOUIwMDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODlCMjU1QjYwOUEwMDU5RUVE
RCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSAqLzsgfTsKIAkJOTM0MjU4OUUyNTVCNkExMjAwNTlF
RUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NDI1ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Np
b24tcGVyc2lzdGVuY2UuaHRtbCAqLzsgfTsKQEAgLTg2OCw4ICs4NjksOCBAQAogCQk5M0Y1NkRB
NzFFNUY5MTc0MDAzRURFODQgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAv
KiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0Y1NkRBOTFFNUY5MTlEMDAzRURFODQgLyog
V0tXZWJWaWV3U25hcHNob3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y1NkRBODFFNUY5MTgxMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3Qu
bW0gKi87IH07CiAJCTkzRjdFODZGMTREQzhFNUMwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjdFODZFMTREQzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAqLzsgfTsKLQkJOTUwOTVG
MjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5
MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAw
NDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJh
eU1hcC5jcHAgKi87IH07CisJCTk1MDk1RjIwMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFn
ZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gKi87
IH07CiAJCTk1MEU0Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRDQzAyNTJF
NzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07CiAJCTk1M0FCQjM1MjVD
MEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBENjgxMDA0
QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OwogCQk5NUE1MjQ5
NTI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QTUyNDk0MjU4MUExMEQwMDQ2MUZF
OSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tICovOyB9OwpAQCAtMjUxMSw2ICsyNTEyLDcgQEAK
IAkJOTMxQzI4MUMyMkJDNTVBNzAwMUQ5OEM0IC8qIFdlYlNRTEJhc2ljcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNRTEJhc2ljcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVh
a0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRC
cmVha0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMTQwN0Ix
N0I0NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlkTm90SGFuZGxlS2V5RG93bi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMzJFRjkzMjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNDI1ODlCMjU1QjYwOUEwMDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29n
bml0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQyNTg5RDI1NUI2NkEw
MDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic3BlZWNocmVjb2duaXRpb24tdXNl
ci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjU2NSw4ICsyNTY3LDggQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBT
YW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBs
ZWRQYWdlVG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTYW1wbGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVt
ZUNvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3VGhlbWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NjEsNiAr
NDQ2Myw3IEBACiAJCQkJMjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3Bw
ICovLAogCQkJCUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3Bw
ICovLAogCQkJCTdDRDcwQzRFMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVy
LmNwcCAqLywKKwkJCQk5MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5jcHAgKi8sCiAJCQkJN0M3NEQ0MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmlu
Z1ZpZXcuY3BwICovLAogCQkJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6
ZWRGaXhlZFF1ZXVlLmNwcCAqLywKIAkJCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4
dEJyZWFrSXRlcmF0b3IuY3BwICovLApAQCAtNTIxNSw2ICs1MjE4LDcgQEAKIAkJCQk3QzgzREYz
NzFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREYzODFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRDcwQzRGMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzMzJFRjk0MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNBMUQw
QTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU1OTdG
ODM2MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjQwMUQwQTU5MEMwMEZFQkNGMyAvKiBUZXN0c0NvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YzZj
OWU5ZmJjZjlkZmU0OThiNTU2MGU4NzVlN2NlYTBkMWM3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNw
cApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgUGFyc2VJbnRlZ2VyKQoreworICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihudWxscHRyKSkpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50ZWdlcjxpbnQ+KCIwIikpOwor
ICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXI8aW50PigiMSIpKTsKKyAgICBFWFBFQ1RfRVEo
MywgcGFyc2VJbnRlZ2VyPGludD4oIjMiKSk7CisgICAgRVhQRUNUX0VRKC0zLCBwYXJzZUludGVn
ZXI8aW50PigiLTMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXI8aW50Pigi
MTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIi0xMjM0
NSIpKTsKKyAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0
ODM2NDciKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4o
IjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRl
Z2VyPGludD4oIi0yMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBh
cnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50
ZWdlcjxpbnQ+KCIgMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVn
ZXI8aW50PigiMXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXI8dWlu
dDE2X3Q+KCIzIikpOworICAgIEVYUEVDVF9FUSgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50
ZWdlcjx1aW50MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBh
cnNlSW50ZWdlcjx1aW50MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQs
IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxv
cHQsIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjY1NTM2IikpOworfQorCitURVNUKFdURiwgUGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bmspCit7CisgICAgRVhQRUNUX0VRKFdURjo6bnVs
bG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKDAs
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjAiKSk7CisgICAgRVhQRUNU
X0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEiKSk7CisgICAg
RVhQRUNUX0VRKDMsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjMiKSk7
CisgICAgRVhQRUNUX0VRKC0zLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0xMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoMjE0
NzQ4MzY0NywgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0
NyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0
NyAtIDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0yMTQ3NDgzNjQ4
IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPGludD4oIi0yMTQ3NDgzNjQ5IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxv
cHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIngxIikpOworICAgIEVY
UEVDVF9FUSgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIgMSIpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
MXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQxNl90PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMyIpKTsKKyAgICBFWFBFQ1Rf
RVEoMTIzNDVVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzUiKSk7CisgICAgRVhQRUNUX0VRKFdU
Rjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIt
MSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQs
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYiKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKaW5kZXggNDRhMmRlMzAxMTRlOTcyMTUxOTU4N2EwZjZl
MzI3M2U0ZTlkZWJiYS4uODRlYzVkYWYyZTQzYmVhOWM0ODUyN2NhMjVjZGZkODI5YWYwN2Y0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTk5
MCwzNyArOTkwLDQgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdJc0FsbEFTQ0lJKQogICAgIEVYUEVD
VF9UUlVFKFN0cmluZ1ZpZXcoU3RyaW5nKGJpdHdpc2VfY2FzdDxjb25zdCBVQ2hhcio+KHUiSGVs
bG8iKSkpLmlzQWxsQVNDSUkoKSk7CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdWaWV3UGFyc2VVSW50
MTYpCi17Ci0gICAgRVhQRUNUX0VRKDBVLCAqV1RGOjpwYXJzZVVJbnQxNigiMCIpKTsKLSAgICBF
WFBFQ1RfRVEoM1UsICpXVEY6OnBhcnNlVUludDE2KCIzIikpOwotICAgIEVYUEVDVF9FUSgxMjM0
NVUsICpXVEY6OnBhcnNlVUludDE2KCIxMjM0NSIpKTsKLSAgICBFWFBFQ1RfRVEoNjU1MzVVLCAq
V1RGOjpwYXJzZVVJbnQxNigiNjU1MzUiKSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VV
SW50MTYoIi0xIikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNlVUludDE2KCItMyIpKTsK
LSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiNjU1MzYiKSk7Ci19Ci0KLVRFU1Qo
V1RGLCBTdHJpbmdWaWV3VG9JbnRTdHJpY3QpCi17Ci0gICAgYXV0byB0ZXN0ID0gW10oQVNDSUlM
aXRlcmFsIHN0cmluZykgewotICAgICAgICBib29sIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAg
aW50IHJlc3VsdCA9IFN0cmluZ1ZpZXcoc3RyaW5nKS50b0ludFN0cmljdChpc1ZhbGlkKTsKLSAg
ICAgICAgcmV0dXJuIGlzVmFsaWQgPyBtYWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9w
dDsKLSAgICB9OwotICAgIEVYUEVDVF9FUSgwLCAqdGVzdCgiMCJfcykpOwotICAgIEVYUEVDVF9F
USgzLCAqdGVzdCgiMyJfcykpOwotICAgIEVYUEVDVF9FUSgtMywgKnRlc3QoIi0zIl9zKSk7Ci0g
ICAgRVhQRUNUX0VRKDEyMzQ1LCAqdGVzdCgiMTIzNDUiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTEy
MzQ1LCAqdGVzdCgiLTEyMzQ1Il9zKSk7Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkgPT0gMjE0NzQ4MzY0NykgewotICAgICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0Nywg
KnRlc3QoIjIxNDc0ODM2NDciX3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIjIxNDc0
ODM2NDgiX3MpKTsKLSAgICB9Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWlu
KCkgPT0gLTIxNDc0ODM2NDgpIHsKLSAgICAgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCAqdGVz
dCgiLTIxNDc0ODM2NDgiX3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIi0yMTQ3NDgz
NjQ5Il9zKSk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRleCA4MDhhNjQzNDQw
ZDE1MDBiYjhlOGU5MjNkNDhlYTViNDExZGExMjM1Li4wZTBlOWM3Zjg4N2YzZWFmN2M0Nzc1YTAx
NGYxZTZjY2E4ZDQxMGYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0
cmluZy5jcHAKQEAgLTI4Nyw1OCArMjg3LDYgQEAgVEVTVChXVEYsIFN0cmluZ0lzb2xhdGVkQ29w
eSkKICAgICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWwuaW1wbCgpID09IGNvcHkuaW1wbCgpKTsKIH0K
IAotVEVTVChXVEYsIFN0cmluZ1RvSW50KQotewotICAgIGJvb2wgb2sgPSBmYWxzZTsKLQotICAg
IEVYUEVDVF9FUSgwLCBTdHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCkudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgw
LCBlbXB0eVN0cmluZygpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBlbXB0eVN0cmluZygp
LnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwg
U3RyaW5nKCIwIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMCIpLnRvSW50
KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmco
IjEiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIxIikudG9JbnQoJm9rKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIFN0cmlu
ZygiMjE0NzQ4MzY0NyIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBTdHJp
bmcoIjIxNDc0ODM2NDciKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIyMTQ3NDgzNjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNU
X0VRKDAsIFN0cmluZygiMjE0NzQ4MzY0OCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxT
RShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2NDgi
KS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2
NDgiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEo
MCwgU3RyaW5nKCItMjE0NzQ4MzY0OSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJp
bmcoIi0yMTQ3NDgzNjQ5IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQot
ICAgIC8vIGZhaWwgaWYgd2Ugc2VlIGxlYWRpbmcganVuawotICAgIEVYUEVDVF9FUSgwLCBTdHJp
bmcoIngxIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygieDEiKS50b0ludCgm
b2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgLy8gc3VjY2VlZCBpZiB3ZSBzZWUg
bGVhZGluZyBzcGFjZXMKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCkpOwot
ICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIiAxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2spOwotCi0gICAgLy8gc2lsZW50bHkgaWdub3JlIHRyYWlsaW5nIGp1bmsKLSAgICBFWFBF
Q1RfRVEoMSwgU3RyaW5nKCIxeCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmco
IjF4IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotfQotCiBURVNUKFdURiwg
U3RyaW5nVG9Eb3VibGUpCiB7CiAgICAgYm9vbCBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0KaW5kZXggN2FhNGM5ZDk3NThkNjhkMzg2ZjNhMDkyNGNlMDI2YjM4NmRlMmFjOS4u
NDYyMDhiMWJmYzEwYzZhNjQ2MTk5MTBjYmQ1MGIyNDVkYzdiNGRjNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBkb25lOwpAQCAtMTUwNiw4
ICsxNTA3LDggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAgYXV0
byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdpbiAr
IHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkp
OwogICAgICAgICBhdXRvIHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0
cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVnaW4g
PSByYW5nZUJlZ2luU3RyaW5nLnRvVUludDY0U3RyaWN0KCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VF
bmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiByYW5nZUVu
ZFN0cmluZy50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJz
ZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAg
IGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0
aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1ZU9yKDApOwog
CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3Jn
LyJdIHN0YXR1c0NvZGU6MjA2IEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpA
ewogICAgICAgICAgICAgQCJDb250ZW50LVJhbmdlIiA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiYnl0ZXMgJWxsdS0lbGx1LyVsdSIsIHJhbmdlQmVnaW4sIHJhbmdlRW5kLCAodW5zaWdu
ZWQgbG9uZylbdmlkZW9EYXRhIGxlbmd0aF1dLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbQppbmRleCBmZGM1ZDZjYWNlNjg0N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5M2M4
Li42NTJiN2ZmZjFlZmVkZWNhMDBjMWZjYmJlYWM0ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8
V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
RGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CkBAIC03NzAsOCArNzcxLDgg
QEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVl
c3QuZmluZCgnXHInLCBkYXNoKTsKICAgICAgICAgICAgIEFTU0VSVChlbmQgIT0gbm90Rm91bmQp
OwogCi0gICAgICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSAqcmVxdWVzdC5zdWJzdHJpbmcoYmVn
aW4gKyByYW5nZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0
aCgpKS50b1VJbnQ2NFN0cmljdCgpOwotICAgICAgICAgICAgYXV0byByYW5nZUVuZCA9ICpyZXF1
ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJl
cXVlc3Quc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2lu
IC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSkpLnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHJhbmdl
RW5kID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwg
ZW5kIC0gZGFzaCAtIDEpKS52YWx1ZSgpOwogCiAgICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9u
c2VIZWFkZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAg
ICAgICBAIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428245</attachid>
            <date>2021-05-10 22:31:07 -0700</date>
            <delta_ts>2021-05-11 09:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210510223106.patch</filename>
            <type>text/plain</type>
            <size>49958</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4OTkxMjgzMTBlZDE0MzIzZjgyOWFi
ZWFkM2FkOWUwYjExMWNhNGEuLmNmNWFlYzAyN2EzODEyOGNjOTZiOTUzNDAyMzYwZGZjZGMwYzlm
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBEZWxldGVkIFN0cmluZ1ZpZXc6OnRvSW50
LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdCwgU3RyaW5nVmlldzo6dG9VSW50NjRT
dHJpY3QsCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QsIGFuZCBwYXJzZVVJbnQx
Ni4gQ2hhbmdlZCB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgdGhhdCB0YWtlcyBhIGNvbnN0IGNo
YXIqIHRvIHdvcmsgd2hlbiBwYXNzZWQgbnVsbHB0ci4gU3RyaW5nVmlldyBoYXMKKyAgICAgICAg
YSBudWxsIHZhbHVlLCBhbmQgY29udmVydGluZyBhIG51bGwgY29uc3QgY2hhciogc2hvdWxkIHBy
b2R1Y2UgdGhhdC4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9JbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnRvVUludFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZzo6dG9JbnQ2NFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmlu
Zzo6dG9VSW50NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6
OnRvSW50UHRyU3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b0ludCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9VSW50IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludDY0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b1VJbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZzo6dG9JbnRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9VSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEZWxldGVkIHRoZSBhYm92ZSBmdW5jdGlvbnMu
CisKIDIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIG1hY09TIFJlbGVhc2Ugd2syIF0gaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJl
Y29yZHMtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBpcyBmbGFreSBjcmFzaGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUzOTVlM2YzODdjNjE4NjRjYjUzZjcwZWI0YmRlMTY2YzRlOWZiZjcuLjE0Yjg1MzNlNDgy
M2ZiNGU0ODUxYzJmYTE4ZmNkNWM4MzNjODhhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0wNS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbik6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvVUludC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Y2hlY2tlZFN0cmlu
Z09mZnNldEF0IGNvbnN0KTogRml4IGNvZGUgdGhhdCB3YXMKKyAgICAgICAgYXNzdW1pbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgd2FzIHNpZ25lZCB0byBjb21waWxlIHdpdGhvdXQgYSB3YXJu
aW5nCisgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCdzIHNpZ25lZCBvciB1bnNpZ25l
ZC4gVGhpcyB3YXMgbWFraW5nIEdUSworICAgICAgICBidWlsZHMgaGF2ZSB0b25zIGFuZCB0b25z
IG9mIHdhcm5pbmdzLCB3aGljaCB3YXMgZGlzdHJhY3Rpbmcgd2hpbGUKKyAgICAgICAgd29ya2lu
ZyBvbiB0aGUgb3RoZXIgZml4ZXMgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NC4KKwogMjAyMS0wNS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGltbWVkaWF0ZSBhY3Rpb24gZ2Vz
dHVyZXMgdG8gYmVnaW4gd2hlbiBmb3JjZSBjbGlja2luZyB0ZXh0IGluc2lkZSBpbWFnZSBvdmVy
bGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkMTFhZTVlNjA5N2UzYzhiZmI3NWQ5OGVkOTdhMjJlZTlkNjMwZGU3
Li4wOGZmYjdjOGFlNTIyMGViYWE3YjU2MmI4NjIwNWMxN2ZkYzE2OWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
d2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxp
YXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUpOiBVc2UKKyAgICAgICAgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5n
Ojp0b1VJbnQ2NC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JpcHRNZXNzYWdl
Q2xpZW50OjpkaWRQb3N0TWVzc2FnZSk6IERpdHRvLgorCiAyMDIxLTA1LTEwICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWxsb3cgaW1t
ZWRpYXRlIGFjdGlvbiBnZXN0dXJlcyB0byBiZWdpbiB3aGVuIGZvcmNlIGNsaWNraW5nIHRleHQg
aW5zaWRlIGltYWdlIG92ZXJsYXlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IDVhYTE2
YjBiNzQ4YjE5ODMyMTJjZjU2Y2Q2OWYyY2Y3NzhiZGNmZmIuLjMzYjBlNTk1OGQ4Mzk1NjNhNjVl
MTNkY2EyMGEyN2JmMzMxOTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0xMzcs
NyArMTM3LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0
b21TdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKIAotICAgIGludCB0b0lu
dChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsg
fQogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBu
dWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9rKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4N2M5NjNhMzUxN2Y5M2UxMWVlZWFjZWEwMDg4ZjZi
YzFiMzk2YjQ1Li43ZDNmMzQ2MzFhYzhlNzk3NWU5ZjQ0ODczNTUzY2VmMWVkNzhkMDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTgxMSw3NiArODExLDYgQEAgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gaXNXaGl0ZVNwYWMKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hh
cmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlzV2hpdGVTcGFjZSk7CiB9CiAKLWludCBTdHJpbmdJbXBs
Ojp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVu
Z3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6
dG9VSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVu
Z3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY2hhcmFj
dGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1wbDo6
dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9s
ZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZ0lt
cGw6OnRvVUludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgo
KSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0U3Ry
aWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBT
dHJpbmdJbXBsOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYg
KGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dFB0clN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50
IFN0cmluZ0ltcGw6OnRvSW50KGJvb2wqIG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwot
ICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7
Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludChib29sKiBvaykKLXsKLSAgICBpZiAo
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50KGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NChib29s
KiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9J
bnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJz
VG9JbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotdWludDY0X3QgU3Ry
aW5nSW1wbDo6dG9VSW50NjQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7
Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgs
IG9rKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6dG9JbnRQdHIoYm9vbCogb2spCi17Ci0g
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0cihj
aGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQogZG91YmxlIFN0cmluZ0ltcGw6OnRv
RG91YmxlKGJvb2wqIG9rKQogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggYWZkZDNlMDE3ZDRjOThiMzY3YzNhNzk0NjRiNWUyMzRhOWFiMmRlZS4uMDJh
NWRhZDI3M2JjYjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTM5MiwxOCArMzkyLDYgQEAgcHVibGljOgogICAgIFVDaGFyIG9wZXJhdG9y
W10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGludCB0
b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIHVuc2ln
bmVkIHRvVUludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAg
IGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCk7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9v
bCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi0gICAgdW5zaWdu
ZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQotICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRy
YWlsaW5nIGdhcmJhZ2UKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IG51bGxwdHIp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQogICAgIC8vIEZJ
WE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZv
ciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBMaWtlIHRoZSBu
b24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRo
ZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRo
ZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApp
bmRleCBmMGIzZWVmNDE5NWEzMjBiZWMyNTA2Yjc0ZGM5ODU3ZWQ0YmQ4MzA3Li4wOWYzMDRjNGI1
MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtMTEwLDM1ICsxMTAsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbAogICAgIHJldHVybiBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBl
PihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgYmFzZSwgVHJhaWxpbmdK
dW5rUG9saWN5OjpBbGxvdyk7CiB9CiAKLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9J
bnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJz
ZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIFN0cmlu
Z09yU3RyaW5nVmlldz4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IFN0cmluZ09y
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgYm9vbCogb2ssIGludCBiYXNlID0gMTApCi17Ci0gICAg
YXV0byByZXN1bHQgPSBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmdWaWV3LCBiYXNl
KTsKLSAgICBpZiAob2spCi0gICAgICAgICpvayA9IHJlc3VsdC5oYXNWYWx1ZSgpOwotICAgIHJl
dHVybiByZXN1bHQudmFsdWVPcigwKTsKLX0KLQotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92
ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRv
IHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlID0gMTApCi17
Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRh
dGEsIGxlbmd0aCB9LCBvaywgYmFzZSk7Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1v
dmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0
byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1l
IFN0cmluZ09yU3RyaW5nVmlldz4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiB0b0ludGVncmFsVHlw
ZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIGludCBiYXNlID0gMTApCi17
Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0cmluZ1ZpZXcsIGJhc2Up
OwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50ZWdyYWxUeXBlIGVudGly
ZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJbnRlZ2VyLgotdGVtcGxh
dGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25h
bDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgaW50IGJhc2UgPSAxMCkKLXsKLSAgICByZXR1cm4gcGFyc2VJbnRl
Z2VyPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBiYXNlKTsKLX0K
LQogfQogCiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlcjsKIHVzaW5nIFdURjo6cGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms7Ci11c2luZyBXVEY6OnRvSW50ZWdyYWxUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggODBmODBjYjc3N2ZkZTM3ODdhOGFhNzEyZjU2Nzlm
OWExYTlhMWQxMy4uM2NiMDE4M2M4MDExYWQ4ZGE4MmMwZTk0MmI3NjkzODk4MWJkM2RjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMTEsMTcgKzMxMSw2IEBAIFN0cmluZyBu
b3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5k
ZXJseWluZ1N0cmluZzsKIH0KIAotLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNl
TnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFkPwotLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRo
ZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KLU9wdGlvbmFsPHVp
bnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBib29sIG9rID0g
ZmFsc2U7Ci0gICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5n
LCAmb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG51bWJlcjsKLX0KLQogYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1Zp
ZXcgYSwgU3RyaW5nVmlldyBiKQogewogICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hh
cmFjdGVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBhM2Y1YjExNTgyYTYyZGJl
ZWY3MmMxZDhhMGU3MDFhYWJhNGMxMWU0Li5mZWZjNDgyNjAwYjA5MWMyZjhhZjU5MzY1ZmMyNTZi
NWViZTY0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTY4LDExICsxNjgsNiBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCi0gICAgaW50IHRvSW50
KCkgY29uc3Q7Ci0gICAgaW50IHRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwotICAgIGludCB0
b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
dG9VSW50NjRTdHJpY3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiB0b0ludDY0U3Ry
aWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsKIAog
ICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1wbCYpOwpAQCAtMjQ2LDgg
KzI0MSw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJp
bmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0
aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOwotCiB9CiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zNTIsNyArMzQ1LDcgQEAgaW5saW5lIFN0cmlu
Z1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCkKIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVy
cykKIHsKLSAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFy
YWN0ZXJzKSwgc3RybGVuKGNoYXJhY3RlcnMpKTsKKyAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVycyA/IHN0cmxlbihjaGFy
YWN0ZXJzKSA6IDApOwogfQogCiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01ODgsNDAgKzU4MSw2IEBAIGlu
bGluZSBmbG9hdCBTdHJpbmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiAgICAg
cmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOwogfQogCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KCkgY29uc3QKLXsKLSAgICBi
b29sIGlzVmFsaWQ7Ci0gICAgcmV0dXJuIHRvSW50KGlzVmFsaWQpOwotfQotCi1pbmxpbmUgaW50
IFN0cmluZ1ZpZXc6OnRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzOEJp
dCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJhY3RlcnM4KCksIG1fbGVu
Z3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0lu
dFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
JmlzVmFsaWQpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBPcHRpb25hbDx1aW50NjRfdD4g
U3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAotewotICAgIGJvb2wgaXNWYWxpZDsK
LSAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmlj
dChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvVUludDY0
U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBp
c1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0KLWlubGlu
ZSBPcHRpb25hbDxpbnQ2NF90PiBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0KCkgY29uc3QKLXsK
LSAgICBib29sIGlzVmFsaWQ7Ci0gICAgaW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBj
aGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlk
KTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxs
b3B0OwotfQotCiBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cAppbmRleCAxZWRiYzgzYWMzY2FlZjUxZTAwNjRhNzdjYmQ2ZmEyNzFhZGUzMDcwLi4yNDU3Y2Vm
NmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwCkBAIC00OTIsMTA2ICs0OTIsNiBAQCBTdHJpbmcgU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0ZpeGVkV2lkdGgoZG91YmxlIG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKICAgICBy
ZXR1cm4gbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwgZGVjaW1hbFBsYWNlcywgYnVm
ZmVyKTsKIH0KIAotaW50IFN0cmluZzo6dG9JbnRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBj
b25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAg
ICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1w
bC0+dG9JbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBTdHJpbmc6OnRvVUludFN0
cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAg
ICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnRTdHJpY3Qob2ssIGJhc2UpOwotfQot
Ci1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9r
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50
b0ludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgU3RyaW5nOjp0b1VJbnQ2NFN0
cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAg
ICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQ2NFN0cmljdChvaywgYmFzZSk7Ci19
Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHJTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBj
b25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAg
ICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1w
bC0+dG9JbnRQdHJTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQgU3RyaW5nOjp0b0ludChib29s
KiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAg
ICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVy
biBtX2ltcGwtPnRvSW50KG9rKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nOjp0b1VJbnQoYm9vbCog
b2spIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAg
ICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4g
bV9pbXBsLT50b1VJbnQob2spOwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NChib29sKiBv
aykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAg
ICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBt
X2ltcGwtPnRvSW50NjQob2spOwotfQotCi11aW50NjRfdCBTdHJpbmc6OnRvVUludDY0KGJvb2wq
IG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IG1faW1wbC0+dG9VSW50NjQob2spOwotfQotCi1pbnRwdHJfdCBTdHJpbmc6OnRvSW50UHRyKGJv
b2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAg
ICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0
dXJuIG1faW1wbC0+dG9JbnRQdHIob2spOwotfQotCiBkb3VibGUgU3RyaW5nOjp0b0RvdWJsZShi
b29sKiBvaykgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkgewpAQCAtODkyLDEyOSArNzkyLDYg
QEAgU3RyaW5nIFN0cmluZzo6ZnJvbUNvZGVQb2ludChVQ2hhcjMyIGNvZGVQb2ludCkKIH0KIAog
Ly8gU3RyaW5nIE9wZXJhdGlvbnMKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1z
dGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90IGkgPSAwOwotCi0gICAg
Ly8gQWxsb3cgbGVhZGluZyBzcGFjZXMuCi0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0pKQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIAotICAgIC8vIEFsbG93IHNpZ24uCi0gICAgaWYgKGkgIT0gbGVuZ3Ro
ICYmIChkYXRhW2ldID09ICcrJyB8fCBkYXRhW2ldID09ICctJykpCi0gICAgICAgICsraTsKLSAg
ICAKLSAgICAvLyBBbGxvdyBkaWdpdHMuCi0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwot
fQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBp
bnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxl
bmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNv
bnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0g
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRf
dCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2
NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBs
ZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0
KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17
Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQot
aW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IGNoYXJhY3Rl
cnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0g
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQgY2hhcmFjdGVy
c1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1Rv
VUludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19Ci0KLXVuc2lnbmVkIGNo
YXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
KQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1p
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRf
dD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihk
YXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQot
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnRw
dHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OwotfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xp
Y3kgcG9saWN5Pgogc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZlNTRhZjM4ODRkYjcyZWMyODhlYTc4
N2ZkMTVkZjAyZDkxZWFiZWUuLjk3NmZkYzEzOGNjN2YwOTM0NmM3ZGRkMDNhZTE1MGFmZjhmNDc0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDIsMzEgKzQyLDYgQEAgbmFtZXNwYWNl
IFdURiB7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hh
cmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxs
cHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IGNoYXJhY3Rl
cnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgY2hhcmFjdGVyc1Rv
SW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUlu
dDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNo
YXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0
ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGln
bm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJz
VG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQot
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50cHRyX3Qg
Y2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxw
dHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQotLy8gRklYTUU6IExpa2UgdGhlIHN0
cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVy
ZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMg
YWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJi
YWdlLgotLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50
IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogV1RGX0VYUE9SVF9QUklWQVRFIGRv
dWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSBudWxscHRyKTsKQEAgLTI4MSwyMSArMjU2LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFy
IHNlcGFyYXRvcikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+
IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0
OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51
bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNp
Z25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25z
dDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAx
MCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyU3RyaWN0
KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxs
cHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjQoYm9v
bCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3Qg
dG9JbnRQdHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBMaWtl
IHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdo
ZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLSAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0
IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRy
YWlsaW5nIGdhcmJhZ2UuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUg
bW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51bGxw
dHIpIGNvbnN0OwogCkBAIC02ODAsMTYgKzY0MCw2IEBAIHVzaW5nIFdURjo6U3RyaW5nOwogdXNp
bmcgV1RGOjphcHBlbmROdW1iZXI7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsKIHVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxvYXQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0
OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHI7Ci11c2luZyBXVEY6OmNo
YXJhY3RlcnNUb0ludFB0clN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0
OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNU
b1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDsKLXVzaW5nIFdURjo6
Y2hhcmFjdGVyc1RvVUludFN0cmljdDsKIHVzaW5nIFdURjo6ZW1wdHlTdHJpbmc7CiB1c2luZyBX
VEY6Om51bGxTdHJpbmc7CiB1c2luZyBXVEY6OmVxdWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMTZjNjdhMDA1NTM3MGYxMDM2YWUy
NzMzYTUwNTJkMjI4YTYzMGU5OS4uY2U3YTQzOWUyZDFiMWVjNmY0M2JhMTkxNmVkNjE5OTlmOWE1
ODk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCkBAIC0xOSw4ICsxOSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgVVNFKE9Q
RU5HTCkgfHwgVVNFKE9QRU5HTF9FUykKKwogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorCiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYgVVNFKEVHTCkKICNpbmNsdWRlICJHTENvbnRleHRF
R0wuaCIKQEAgLTE4Myw3ICsxODYsOCBAQCB1bnNpZ25lZCBHTENvbnRleHQ6OnZlcnNpb24oKQog
ICAgICAgICAgICAgdmVyc2lvbkRpZ2l0cyA9IHZlcnNpb25TdHJpbmdDb21wb25lbnRzWzBdLnNw
bGl0KCcuJyk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3ZlcnNpb24gPSB2ZXJzaW9uRGlnaXRz
WzBdLnRvVUludCgpICogMTAwICsgdmVyc2lvbkRpZ2l0c1sxXS50b1VJbnQoKSAqIDEwOworICAg
ICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25l
ZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVPcigwKSAqIDEwMAorICAgICAgICAgICAgKyBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1sxXSku
dmFsdWVPcigwKSAqIDEwOwogICAgIH0KICAgICByZXR1cm4gbV92ZXJzaW9uOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggOWFkMTlj
N2E0ZjU0MjYwZTFhMDg5YmUwMTg4YjkyZTIwYmU0ODk2Yi4uNDVjYWE3ODI5Y2YwMGYyNWMxMTM5
YzcyMWQ1MjA1M2ZmYWVlYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25h
bDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVk
IGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRv
IHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4KTsKLSAgICAgICAgaWYgKHJl
c3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkgPj0gc3RyaW5nTGVuZ3Ro
KQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8R2x5cGhCdWZm
ZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBjMTI0ZTc4ZDI3ZDJh
NTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4YzJlLi45M2IxYWI2MWQyN2RiMzc0ZWNjMmVjNDVjNjg2
YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtMTAyNSwxMCArMTAyNSw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAg
Ly8gUGFjayByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBodHRwLWhlYWRlcnMgc3RydWN0dXJlLgog
ICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoInJlc3BvbnNlLWhlYWRl
cnMiKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXNwb25zZS5odHRwSGVhZGVy
RmllbGRzKCkpIHsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgICAgICB1aW50NjRfdCBj
b252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52YWx1ZS50b1VJbnQ2NCgmb2spOwotICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChoZWFkZXJzLmdldCgpLCBoZWFkZXIu
a2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQsIGNvbnZlcnRlZFZhbHVlLCBudWxscHRy
KTsKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50NjRfdD4oaGVhZGVyLnZhbHVlKSkKKyAgICAgICAgICAgIGdzdF9z
dHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXkudXRmOCgpLmRhdGEoKSwgR19U
WVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5nZXQoKSwgaGVhZGVyLmtleS51dGY4
KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5HLCBoZWFkZXIudmFsdWUudXRmOCgpLmRhdGEoKSwgbnVs
bHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlh
cnlQcm9jZXNzTWFpbldpbi5jcHAKaW5kZXggZTdlZmQzNDkwNWVkYWRkZDYzY2NhOGIxYjYyMWM4
MTI2N2VhMmFiZC4uZTY2YTE0NjJjYTk2MDBmNjZhNzViNzBmZTZmOGUwNmVkNDhkZDZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5X
aW4uY3BwCkBAIC0yOCwyMCArMjgsMTggQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4
ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc01h
aW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghc3RyY21wKGFy
Z3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykgewotICAgICAgICAg
ICAgU3RyaW5nIHN0cihhcmd2WysraV0pOwotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLmNvbm5l
Y3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHN0ci50b1VJbnQ2NCgp
KTsKLSAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItcHJvY2Vzc0lkZW50aWZp
ZXIiKSAmJiBpICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgIFN0cmluZyBzdHIoYXJndlsrK2ld
KTsKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRpZmllciA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4oc3RyLnRvVUludDY0
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1jb25maWd1cmUtanNj
LWZvci10ZXN0aW5nIikpCisgICAgICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRl
bnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycy5jb25u
ZWN0aW9uSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAg
ICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXByb2Nlc3NJZGVudGlmaWVyIikgJiYg
aSArIDEgPCBhcmdjKSB7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMucHJvY2Vzc0lkZW50aWZp
ZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+
KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2WysraV0pLnZh
bHVlT3IoMCkpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY29uZmlndXJl
LWpzYy1mb3ItdGVzdGluZyIpKQogICAgICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZv
clRlc3RpbmcoKTsKICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWRpc2FibGUt
aml0IikpCiAgICAgICAgICAgICBKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJs
ZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CmluZGV4IGUwMGMyMWUwMThiMGQwODY3MmEzZWM1YWZjMDhmMTc4ZmQ5ZmE3YjIuLjA5Zjc2MjNi
ZjJkYjRlZDk5ZGFiNTdlMzczZTY4NDExZDM2ZGFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0sIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsK
LSAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhv
c3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJbnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSwg
dG9rZW5zWzJdKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChy
ZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQ2NF90Pih0b2tlbnNbMF0pLnZhbHVlT3IoMCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMV0pLnZhbHVlT3IoMCksIHRva2Vuc1syXSk7CiAg
ICAgfQogCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwMTdiODQ4ZDZmNzg0
OTJhNWU1ZDMwMGNiY2UzYmMwYmRmYWU5YTIuLjM1NzYzMDdlZTUwNTBkOTFjNzM1ZTAzMjhmMDky
YjY4M2M2NmY2ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0wNS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBm
dW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDogQWRkZWQgU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5jcHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICBD
b250YWlucyB0ZXN0cyBtb3ZlZCBhbmQgYWRhcHRlZCBmcm9tIHRoZSBmaWxlcyBiZWxvdyBzbyB3
ZSBkb24ndAorICAgICAgICBsb3NlIHRlc3QgY292ZXJhZ2UuIFdlIGFuZCBhbmQgc2hvdWxkIGFk
ZCBtYW55IG1vcmUgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdWaWV3LmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgcGFyc2VVSW50MTYKKyAgICAgICAgYW5k
IFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV1RGU3RyaW5nLmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW06IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2Yg
U3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06IERpdHRvLgorCiAy
MDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IG5vbi10aHJvd2luZyBzdGQ6OmZpbGVzeXN0ZW0gQVBJIGluIFRlc3RSdW5uZXIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDU3ZjlmNjU3YzIwOTM5YmI1MzUwZmUwOGIwNDg4Nzhj
NzJiYmMxOGYuLmU0NGNiNGJiNzMyZTA2NTdiNTBkZGQ3ODliZmRkOTQ3MTQxOTlhMjQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtOTMsNiArOTMsNyBAQCBzZXQoVGVzdFdURl9T
T1VSQ0VTCiAgICAgVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCiAgICAgVGVzdHMvV1RGL1N0cmlu
Z09wZXJhdG9ycy5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nUGFyc2luZ0J1ZmZlci5jcHAKKyAg
ICBUZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAKICAgICBUZXN0cy9XVEYv
U3RyaW5nVmlldy5jcHAKICAgICBUZXN0cy9XVEYvU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAK
ICAgICBUZXN0cy9XVEYvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGRjMTE3YjI0ZDkyNzIyZmU5MDZjN2VlNGZlOTBiOWM3ZWM5MDdjMjkuLjdhN2I1ZjIw
ZTY3MDFlYWNkOTQ1NmMxNTA2M2I5NTFkYzNiNDY4YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04MzEsNiArODMxLDcgQEAKIAkJOTMxQzI4MUUyMkJDNTc5QTAwMUQ5OEM0IC8qIG9wZW5k
YXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQzI4MUIyMkJDNTU4MzAwMUQ5OEM0IC8qIG9wZW5k
YXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgKi87IH07CiAJCTkzMjlBQTI5MURFM0Y4MUUwMDNB
QkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFr
SXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1REZGQUYgLyogZm9jdXMt
aW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlucHV0cy5odG1sICov
OyB9OworCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAg
Ki87IH07CiAJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRDYzMUIxRkNCNzYxODAw
MzJFQ0Q2IC8qIEhhc2hlci5jcHAgKi87IH07CiAJCTkzNDI1ODlDMjU1QjYwOUIwMDU5RUVERCAv
KiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNDI1ODlCMjU1QjYwOUEwMDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlv
bi5tbSAqLzsgfTsKIAkJOTM0MjU4OUUyNTVCNkExMjAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0
aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODlEMjU1QjY2QTAwMDU5RUVE
RCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAq
LzsgfTsKQEAgLTI1MTIsNiArMjUxMyw3IEBACiAJCTkzMUMyODFDMjJCQzU1QTcwMDFEOThDNCAv
KiBXZWJTUUxCYXNpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJTUUxCYXNpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjlBQTI4
MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMzE0MDdCMTdCNDQxOTAwMEYwODNCMSAvKiBEaWROb3RIYW5k
bGVLZXlEb3duLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpZE5v
dEhhbmRsZUtleURvd24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzMyRUY5
MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRDYzMUIxRkNCNzYxODAwMzJF
Q0Q2IC8qIEhhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
YXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQyNTg5QjI1NUI2MDlB
MDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM0MjU4OUQyNTVCNjZBMDAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9u
LXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NjQsNiArNDQ2Niw3IEBACiAJCQkJ
MjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCUMwMTM2
M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwICovLAogCQkJCTdDRDcw
QzRFMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCAqLywKKwkJCQk5
MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAg
Ki8sCiAJCQkJN0M3NEQ0MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmluZ1ZpZXcuY3BwICovLAog
CQkJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNw
cCAqLywKIAkJCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwICovLApAQCAtNTIyMCw2ICs1MjIzLDcgQEAKIAkJCQk3QzgzREYzNzFEMEE1OTBDMDBGRUJD
RjMgLyogU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzODFEMEE1OTBD
MDBGRUJDRjMgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDcw
QzRGMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTkzMzJFRjk0MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNBMUQwQTU5MEMwMEZFQkNGMyAv
KiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU1OTdGODM2MUQ5NTk2QzgwMDY2
QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNERjQwMUQwQTU5MEMwMEZFQkNGMyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YzZjOWU5ZmJjZjlkZmU0OThi
NTU2MGU4NzVlN2NlYTBkMWM3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitURVNUKFdURiwgUGFyc2VJbnRlZ2VyKQoreworICAgIEVYUEVDVF9FUShXVEY6Om51bGxv
cHQsIHBhcnNlSW50ZWdlcjxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxscHRyKSkp
OworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIiKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50ZWdlcjxpbnQ+KCIwIikpOworICAgIEVYUEVDVF9FUSgx
LCBwYXJzZUludGVnZXI8aW50PigiMSIpKTsKKyAgICBFWFBFQ1RfRVEoMywgcGFyc2VJbnRlZ2Vy
PGludD4oIjMiKSk7CisgICAgRVhQRUNUX0VRKC0zLCBwYXJzZUludGVnZXI8aW50PigiLTMiKSk7
CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXI8aW50PigiMTIzNDUiKSk7CisgICAg
RVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIi0xMjM0NSIpKTsKKyAgICBFWFBF
Q1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDciKSk7CisgICAg
RVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDgiKSk7
CisgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRlZ2VyPGludD4oIi0yMTQ3
NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+
KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVn
ZXI8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCIgMSIp
KTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiMXgiKSk7
CisKKyAgICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjAiKSk7
CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIzIikpOwor
ICAgIEVYUEVDVF9FUSgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjEyMzQ1
IikpOworICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4o
IjY1NTM1IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50
MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjx1aW50MTZfdD4oIjY1NTM2IikpOworfQorCitURVNUKFdURiwgUGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bmspCit7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVs
bHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEiKSk7CisgICAgRVhQRUNUX0VRKDMsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjMiKSk7CisgICAgRVhQRUNUX0VR
KC0zLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMyIpKTsKKyAgICBF
WFBFQ1RfRVEoMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEy
MzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oIi0xMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0NyIpKTsKKyAgICBFWFBF
Q1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0yMTQ3NDgzNjQ4IikpOworICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
Ii0yMTQ3NDgzNjQ5IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIgMSIpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMXgiKSk7CisKKyAgICBF
WFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQx
Nl90PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSAr
ICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjEyMzQ1IikpOwor
ICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPHVpbnQxNl90PigiNjU1MzUiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBF
Q1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYiKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
Vmlldy5jcHAKaW5kZXggNDRhMmRlMzAxMTRlOTcyMTUxOTU4N2EwZjZlMzI3M2U0ZTlkZWJiYS4u
ODRlYzVkYWYyZTQzYmVhOWM0ODUyN2NhMjVjZGZkODI5YWYwN2Y0MyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTk5MCwzNyArOTkwLDQgQEAg
VEVTVChXVEYsIFN0cmluZ1ZpZXdJc0FsbEFTQ0lJKQogICAgIEVYUEVDVF9UUlVFKFN0cmluZ1Zp
ZXcoU3RyaW5nKGJpdHdpc2VfY2FzdDxjb25zdCBVQ2hhcio+KHUiSGVsbG8iKSkpLmlzQWxsQVND
SUkoKSk7CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdWaWV3UGFyc2VVSW50MTYpCi17Ci0gICAgRVhQ
RUNUX0VRKDBVLCAqV1RGOjpwYXJzZVVJbnQxNigiMCIpKTsKLSAgICBFWFBFQ1RfRVEoM1UsICpX
VEY6OnBhcnNlVUludDE2KCIzIikpOwotICAgIEVYUEVDVF9FUSgxMjM0NVUsICpXVEY6OnBhcnNl
VUludDE2KCIxMjM0NSIpKTsKLSAgICBFWFBFQ1RfRVEoNjU1MzVVLCAqV1RGOjpwYXJzZVVJbnQx
NigiNjU1MzUiKSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIi0xIikpOwot
ICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNlVUludDE2KCItMyIpKTsKLSAgICBFWFBFQ1RfVFJV
RSghV1RGOjpwYXJzZVVJbnQxNigiNjU1MzYiKSk7Ci19Ci0KLVRFU1QoV1RGLCBTdHJpbmdWaWV3
VG9JbnRTdHJpY3QpCi17Ci0gICAgYXV0byB0ZXN0ID0gW10oQVNDSUlMaXRlcmFsIHN0cmluZykg
ewotICAgICAgICBib29sIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgaW50IHJlc3VsdCA9IFN0
cmluZ1ZpZXcoc3RyaW5nKS50b0ludFN0cmljdChpc1ZhbGlkKTsKLSAgICAgICAgcmV0dXJuIGlz
VmFsaWQgPyBtYWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAg
IEVYUEVDVF9FUSgwLCAqdGVzdCgiMCJfcykpOwotICAgIEVYUEVDVF9FUSgzLCAqdGVzdCgiMyJf
cykpOwotICAgIEVYUEVDVF9FUSgtMywgKnRlc3QoIi0zIl9zKSk7Ci0gICAgRVhQRUNUX0VRKDEy
MzQ1LCAqdGVzdCgiMTIzNDUiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTEyMzQ1LCAqdGVzdCgiLTEy
MzQ1Il9zKSk7Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgPT0gMjE0
NzQ4MzY0NykgewotICAgICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgKnRlc3QoIjIxNDc0ODM2
NDciX3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIjIxNDc0ODM2NDgiX3MpKTsKLSAg
ICB9Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgPT0gLTIxNDc0ODM2
NDgpIHsKLSAgICAgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCAqdGVzdCgiLTIxNDc0ODM2NDgi
X3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIi0yMTQ3NDgzNjQ5Il9zKSk7Ci0gICAg
fQotfQotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRleCA4MDhhNjQzNDQwZDE1MDBiYjhlOGU5MjNk
NDhlYTViNDExZGExMjM1Li4wZTBlOWM3Zjg4N2YzZWFmN2M0Nzc1YTAxNGYxZTZjY2E4ZDQxMGYx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKQEAgLTI4
Nyw1OCArMjg3LDYgQEAgVEVTVChXVEYsIFN0cmluZ0lzb2xhdGVkQ29weSkKICAgICBFWFBFQ1Rf
RkFMU0Uob3JpZ2luYWwuaW1wbCgpID09IGNvcHkuaW1wbCgpKTsKIH0KIAotVEVTVChXVEYsIFN0
cmluZ1RvSW50KQotewotICAgIGJvb2wgb2sgPSBmYWxzZTsKLQotICAgIEVYUEVDVF9FUSgwLCBT
dHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkudG9JbnQoJm9rKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBlbXB0eVN0cmluZygp
LnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBlbXB0eVN0cmluZygpLnRvSW50KCZvaykpOwot
ICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIwIikudG9J
bnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMCIpLnRvSW50KCZvaykpOwotICAgIEVY
UEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjEiKS50b0ludCgpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2spOwotCi0gICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIFN0cmluZygiMjE0NzQ4MzY0NyIp
LnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBTdHJpbmcoIjIxNDc0ODM2NDci
KS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwg
U3RyaW5nKCIyMTQ3NDgzNjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygi
MjE0NzQ4MzY0OCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBF
WFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2NDgiKS50b0ludCgpKTsKLSAg
ICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2NDgiKS50b0ludCgmb2sp
KTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCItMjE0
NzQ4MzY0OSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIi0yMTQ3NDgzNjQ5
IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIC8vIGZhaWwgaWYg
d2Ugc2VlIGxlYWRpbmcganVuawotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIikudG9JbnQo
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygieDEiKS50b0ludCgmb2spKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2spOwotCi0gICAgLy8gc3VjY2VlZCBpZiB3ZSBzZWUgbGVhZGluZyBzcGFjZXMK
LSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgx
LCBTdHJpbmcoIiAxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAg
Ly8gc2lsZW50bHkgaWdub3JlIHRyYWlsaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5n
KCIxeCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjF4IikudG9JbnQoJm9r
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotfQotCiBURVNUKFdURiwgU3RyaW5nVG9Eb3VibGUp
CiB7CiAgICAgYm9vbCBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXgg
N2FhNGM5ZDk3NThkNjhkMzg2ZjNhMDkyNGNlMDI2YjM4NmRlMmFjOS4uNDYyMDhiMWJmYzEwYzZh
NjQ2MTk5MTBjYmQ1MGIyNDVkYzdiNGRjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBA
IC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBkb25lOwpAQCAtMTUwNiw4ICsxNTA3LDggQEAgVEVT
VChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAgYXV0byByYW5nZUJlZ2luU3Ry
aW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVu
Z3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpOwogICAgICAgICBhdXRv
IHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhkYXNoICsgMSwg
ZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSByYW5nZUJlZ2luU3Ry
aW5nLnRvVUludDY0U3RyaWN0KCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0
cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiByYW5nZUVuZFN0cmluZy50b1VJbnQ2
NFN0cmljdCgpOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0
X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VFbmQg
PSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJzZUludGVn
ZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1ZU9yKDApOwogCiAgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHN0YXR1c0NvZGU6
MjA2IEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAewogICAgICAgICAgICAg
QCJDb250ZW50LVJhbmdlIiA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYnl0ZXMgJWxs
dS0lbGx1LyVsdSIsIHJhbmdlQmVnaW4sIHJhbmdlRW5kLCAodW5zaWduZWQgbG9uZylbdmlkZW9E
YXRhIGxlbmd0aF1dLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRl
eCBmZGM1ZDZjYWNlNjg0N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5M2M4Li42NTJiN2ZmZjFlZmVk
ZWNhMDBjMWZjYmJlYWM0ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9v
bCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CkBAIC03NzAsOCArNzcxLDggQEAgVEVTVChXZWJLaXQs
IE1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QuZmluZCgnXHInLCBk
YXNoKTsKICAgICAgICAgICAgIEFTU0VSVChlbmQgIT0gbm90Rm91bmQpOwogCi0gICAgICAgICAg
ICBhdXRvIHJhbmdlQmVnaW4gPSAqcmVxdWVzdC5zdWJzdHJpbmcoYmVnaW4gKyByYW5nZUJ5dGVz
Lmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKS50b1VJbnQ2NFN0
cmljdCgpOwotICAgICAgICAgICAgYXV0byByYW5nZUVuZCA9ICpyZXF1ZXN0LnN1YnN0cmluZyhk
YXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgICAgICBh
dXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJlcXVlc3Quc3Vic3RyaW5n
KGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5s
ZW5ndGgoKSkpLnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRW5kID0gcGFyc2VJbnRl
Z2VyPHVpbnQ2NF90PihyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEp
KS52YWx1ZSgpOwogCiAgICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VIZWFkZXJTdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIkhUVFAvMS4x
IDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428281</attachid>
            <date>2021-05-11 09:31:26 -0700</date>
            <delta_ts>2021-05-11 13:19:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210511093125.patch</filename>
            <type>text/plain</type>
            <size>51047</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4OTkxMjgzMTBlZDE0MzIzZjgyOWFi
ZWFkM2FkOWUwYjExMWNhNGEuLjUzNGNlMjQ1YzZjMTkzYzZiMzhhYTVlM2M0MWVmNTg5NTNmMzlk
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBEZWxldGVkIFN0cmluZ1ZpZXc6OnRvSW50
LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdCwgU3RyaW5nVmlldzo6dG9VSW50NjRT
dHJpY3QsCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QsIGFuZCBwYXJzZVVJbnQx
Ni4gQ2hhbmdlZCB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgdGhhdCB0YWtlcyBhIGNvbnN0IGNo
YXIqIHRvIHdvcmsgd2hlbiBwYXNzZWQgbnVsbHB0ci4gU3RyaW5nVmlldyBoYXMKKyAgICAgICAg
YSBudWxsIHZhbHVlLCBhbmQgY29udmVydGluZyBhIG51bGwgY29uc3QgY2hhciogc2hvdWxkIHBy
b2R1Y2UgdGhhdC4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9JbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnRvVUludFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZzo6dG9JbnQ2NFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmlu
Zzo6dG9VSW50NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6
OnRvSW50UHRyU3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b0ludCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9VSW50IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludDY0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b1VJbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZzo6dG9JbnRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9VSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEZWxldGVkIHRoZSBhYm92ZSBmdW5jdGlvbnMu
CisKIDIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIG1hY09TIFJlbGVhc2Ugd2syIF0gaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJl
Y29yZHMtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBpcyBmbGFreSBjcmFzaGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDk1MGNkZTJhODYwNjZjZjg4Yzk0NDc0NWE1ODM4ZGYzMzUwMTUzOTMuLjU0NzEzM2NkZDkw
NGMwY2I0MGU2MWQxOTNhZmVkNDZmZjcxMmQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0wNS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbik6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvVUludC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Y2hlY2tlZFN0cmlu
Z09mZnNldEF0IGNvbnN0KTogRml4IGNvZGUgdGhhdCB3YXMKKyAgICAgICAgYXNzdW1pbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgd2FzIHNpZ25lZCB0byBjb21waWxlIHdpdGhvdXQgYSB3YXJu
aW5nCisgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCdzIHNpZ25lZCBvciB1bnNpZ25l
ZC4gVGhpcyB3YXMgbWFraW5nIEdUSworICAgICAgICBidWlsZHMgaGF2ZSB0b25zIGFuZCB0b25z
IG9mIHdhcm5pbmdzLCB3aGljaCB3YXMgZGlzdHJhY3Rpbmcgd2hpbGUKKyAgICAgICAgd29ya2lu
ZyBvbiB0aGUgb3RoZXIgZml4ZXMgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NC4KKwogMjAyMS0wNS0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3NTUxNSk6IHdwdC9xdWlya3MvYmxvY2tzLWln
bm9yZS1saW5lLWhlaWdodC5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwMThiMTNmYTNiNzI0YTZhY2MwNTg4
N2ExNmJiNWJmZTdhMjZiOTQuLjkzZWM1OGQwYjU3N2FlZGJkMjIzZDI2Y2U3NWE4MjVhNWU4ZDNh
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1p
bHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzTWFpbkNvbW1vbjo6cGFyc2VDb21tYW5kTGluZSk6
IFVzZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4g
aW5zdGVhZCBvZiBTdHJpbmc6OnRvVUludDY0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNjcmlwdE1lc3NhZ2VDbGllbnQ6OmRpZFBvc3RNZXNzYWdlKTogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+IGluc3RlYWQgb2YgU3RyaW5nVmlldzo6
dG9VSW50NjQuCisgICAgICAgIFRoaXMgaXMgYSAxNi1iaXQgcG9ydCBudW1iZXIsIHNvIG5vdCB2
YWx1YWJsZSB0byBwYXJzZSBsYXJnZXIgaW50ZWdlcnMuCisKIDIwMjEtMDUtMTEgIEFkYSBDaGFu
ICA8YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gUmV0dXJuIGEgZGVmYXVs
dCBsYXllciBoYW5kbGUgaW4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IDVhYTE2YjBiNzQ4YjE5ODMyMTJjZjU2Y2Q2OWYy
Y2Y3NzhiZGNmZmIuLjMzYjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlV
cHBlcmNhc2UoKSBjb25zdDsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IG51bGxwdHIpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQogICAgIGRvdWJsZSB0b0RvdWJsZShi
b29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsg
fQogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy50b0Zsb2F0KG9rKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRl
eCA4N2M5NjNhMzUxN2Y5M2UxMWVlZWFjZWEwMDg4ZjZiYzFiMzk2YjQ1Li43ZDNmMzQ2MzFhYzhl
Nzk3NWU5ZjQ0ODczNTUzY2VmMWVkNzhkMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKQEAgLTgxMSw3NiArODExLDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBs
aWZ5V2hpdGVTcGFjZShDb2RlVW5pdE1hdGNoRnVuY3Rpb24gaXNXaGl0ZVNwYWMKICAgICByZXR1
cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlz
V2hpdGVTcGFjZSk7CiB9CiAKLWludCBTdHJpbmdJbXBsOjp0b0ludFN0cmljdChib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c1RvSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6dG9VSW50U3RyaWN0KGJvb2wqIG9rLCBp
bnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NFN0cmljdChib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICBy
ZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBv
aywgYmFzZSk7Ci19Ci0KLXVpbnQ2NF90IFN0cmluZ0ltcGw6OnRvVUludDY0U3RyaWN0KGJvb2wq
IG9rLCBpbnQgYmFzZSkKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFy
YWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsK
LSAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xl
bmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0clN0cmlj
dChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywg
YmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzMTYo
KSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IFN0cmluZ0ltcGw6OnRvSW50KGJvb2wq
IG9rKQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9J
bnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0lt
cGw6OnRvVUludChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9VSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb1VJbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0K
LWludDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xl
bmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzMTYoKSwg
bV9sZW5ndGgsIG9rKTsKLX0KLQotdWludDY0X3QgU3RyaW5nSW1wbDo6dG9VSW50NjQoYm9vbCog
b2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUlu
dDY0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b1VJbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50cHRyX3QgU3Ry
aW5nSW1wbDo6dG9JbnRQdHIoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7
Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgs
IG9rKTsKLX0KLQogZG91YmxlIFN0cmluZ0ltcGw6OnRvRG91YmxlKGJvb2wqIG9rKQogewogICAg
IGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYWZkZDNlMDE3ZDRj
OThiMzY3YzNhNzk0NjRiNWUyMzRhOWFiMmRlZS4uMDJhNWRhZDI3M2JjYjIzMmVhYzhiMTBiZDU5
MzBhNTVhZjVlY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTM5MiwxOCArMzky
LDYgQEAgcHVibGljOgogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJT
dGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51
bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChi
b29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotICAgIHVpbnQ2NF90IHRvVUludDY0
U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgaW50cHRyX3Qg
dG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdu
b3JlcyB0cmFpbGluZyBnYXJiYWdlCi0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIGludDY0X3QgdG9JbnQ2NChi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1aW50
NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdh
cmJhZ2UKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQogICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVu
Y3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJh
aWxpbmcgZ2FyYmFnZS4KICAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92
ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2Uu
CiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50
IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAppbmRleCBmMGIzZWVmNDE5NWEzMjBiZWMy
NTA2Yjc0ZGM5ODU3ZWQ0YmQ4MzA3Li4wOWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQw
OTEwM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaApAQCAtMTEwLDM1ICsxMTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5
cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbAogICAg
IHJldHVybiBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcuY2hhcmFjdGVyczE2KCks
IHN0cmluZy5sZW5ndGgoKSwgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5OjpBbGxvdyk7CiB9CiAK
LS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25j
ZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gSW50ZWdyYWxU
eXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywg
Ym9vbCogb2ssIGludCBiYXNlID0gMTApCi17Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZUludGVn
ZXI8SW50ZWdyYWxUeXBlPihzdHJpbmdWaWV3LCBiYXNlKTsKLSAgICBpZiAob2spCi0gICAgICAg
ICpvayA9IHJlc3VsdC5oYXNWYWx1ZSgpOwotICAgIHJldHVybiByZXN1bHQudmFsdWVPcigwKTsK
LX0KLQotLy8gRklYTUU6IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVs
eSBvbmNlIHdlIGdldCBtb3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRl
PHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gSW50ZWdyYWxU
eXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgYm9vbCogb2ssIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBvaywgYmFzZSk7
Ci19Ci0KLS8vIEZJWE1FOiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJl
bHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gT3B0
aW9uYWw8SW50ZWdyYWxUeXBlPiB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1Zp
ZXcmIHN0cmluZ1ZpZXcsIGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdl
cjxJbnRlZ3JhbFR5cGU+KHN0cmluZ1ZpZXcsIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVj
YXRlZC4gUmVtb3ZlIHRvSW50ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxs
IGNhbGxlcnMgdG8gcGFyc2VJbnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBl
LCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdy
YWxUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGJh
c2UgPSAxMCkKLXsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oU3RyaW5n
VmlldyB7IGRhdGEsIGxlbmd0aCB9LCBiYXNlKTsKLX0KLQogfQogCiB1c2luZyBXVEY6OnBhcnNl
SW50ZWdlcjsKIHVzaW5nIFdURjo6cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms7Ci11
c2luZyBXVEY6OnRvSW50ZWdyYWxUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5k
ZXggODBmODBjYjc3N2ZkZTM3ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQxMy4uM2NiMDE4M2M4MDEx
YWQ4ZGE4MmMwZTk0MmI3NjkzODk4MWJkM2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
Y3BwCkBAIC0zMTEsMTcgKzMxMSw2IEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0KIAotLy8g
RklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFk
PwotLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rp
b25zIHdpdGggdGhpcyBzdHlsZT8KLU9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJp
bmdWaWV3IHN0cmluZykKLXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgYXV0byBudW1iZXIg
PSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5nLCAmb2spOwotICAgIGlmICghb2spCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQogYm9v
bCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQogewog
ICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hhcmFjdGVycykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaAppbmRleCBhM2Y1YjExNTgyYTYyZGJlZWY3MmMxZDhhMGU3MDFhYWJhNGMxMWU0
Li5mZWZjNDgyNjAwYjA5MWMyZjhhZjU5MzY1ZmMyNTZiNWViZTY0MDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaApAQCAtMTY4LDExICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0OwogCi0gICAgaW50IHRvSW50KCkgY29uc3Q7Ci0gICAgaW50IHRvSW50
KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwotICAgIGludCB0b0ludFN0cmljdChib29sJiBpc1ZhbGlk
KSBjb25zdDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsK
LSAgICBPcHRpb25hbDxpbnQ2NF90PiB0b0ludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQg
dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRh
dGUoY29uc3QgU3RyaW5nSW1wbCYpOwpAQCAtMjQ2LDggKzI0MSw2IEBAIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdW
aWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0
cmluZyYpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUlu
dDE2KFN0cmluZ1ZpZXcpOwotCiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CkBAIC0zNTIsNyArMzQ1LDcgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIAogaW5saW5lIFN0cmluZ1ZpZXc6
OlN0cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycykKIHsKLSAgICBpbml0aWFsaXplKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVuKGNoYXJhY3Rl
cnMpKTsKKyAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFy
YWN0ZXJzKSwgY2hhcmFjdGVycyA/IHN0cmxlbihjaGFyYWN0ZXJzKSA6IDApOwogfQogCiBpbmxp
bmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCkBAIC01ODgsNDAgKzU4MSw2IEBAIGlubGluZSBmbG9hdCBTdHJpbmdWaWV3Ojp0
b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCi1pbmxpbmUgaW50IFN0
cmluZ1ZpZXc6OnRvSW50KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgcmV0dXJu
IHRvSW50KGlzVmFsaWQpOwotfQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KGJvb2wm
IGlzVmFsaWQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hh
cmFjdGVyc1RvSW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsK
LX0KLQotaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBj
b25zdAotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7
Ci19Ci0KLWlubGluZSBPcHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJp
Y3QoKSBjb25zdAotewotICAgIGJvb2wgaXNWYWxpZDsKLSAgICB1aW50NjRfdCByZXN1bHQgPSBp
czhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0
aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJl
c3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0KLWlubGluZSBPcHRpb25hbDxpbnQ2NF90PiBTdHJp
bmdWaWV3Ojp0b0ludDY0U3RyaWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAg
aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChj
aGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/
IG1ha2VPcHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxsb3B0OwotfQotCiBpbmxpbmUgU3RyaW5n
IFN0cmluZ1ZpZXc6OnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewogICAgIGlmIChp
czhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAxZWRiYzgzYWMzY2FlZjUx
ZTAwNjRhNzdjYmQ2ZmEyNzFhZGUzMDcwLi4yNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRh
YWZiNDk0OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00OTIsMTA2ICs0OTIs
NiBAQCBTdHJpbmcgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoZG91YmxlIG51bWJl
ciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKICAgICByZXR1cm4gbnVtYmVyVG9GaXhlZFdpZHRo
U3RyaW5nKG51bWJlciwgZGVjaW1hbFBsYWNlcywgYnVmZmVyKTsKIH0KIAotaW50IFN0cmluZzo6
dG9JbnRTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBs
KSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRTdHJpY3Qob2ssIGJhc2Up
OwotfQotCi11bnNpZ25lZCBTdHJpbmc6OnRvVUludFN0cmljdChib29sKiBvaywgaW50IGJhc2Up
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAg
ICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9p
bXBsLT50b1VJbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2
NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsK
LSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b0ludDY0U3RyaWN0KG9rLCBiYXNlKTsK
LX0KLQotdWludDY0X3QgU3RyaW5nOjp0b1VJbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2Up
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAg
ICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9p
bXBsLT50b1VJbnQ2NFN0cmljdChvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9J
bnRQdHJTdHJpY3QoYm9vbCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBs
KSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHJTdHJpY3Qob2ssIGJh
c2UpOwotfQotCi1pbnQgU3RyaW5nOjp0b0ludChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAo
IW1faW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50KG9rKTsKLX0K
LQotdW5zaWduZWQgU3RyaW5nOjp0b1VJbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQob2spOwotfQot
Ci1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW1wbCkgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjQob2spOwotfQot
Ci11aW50NjRfdCBTdHJpbmc6OnRvVUludDY0KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICgh
bV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50NjQob2spOwot
fQotCi1pbnRwdHJfdCBTdHJpbmc6OnRvSW50UHRyKGJvb2wqIG9rKSBjb25zdAotewotICAgIGlm
ICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHIob2sp
OwotfQotCiBkb3VibGUgU3RyaW5nOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKIHsKICAgICBp
ZiAoIW1faW1wbCkgewpAQCAtODkyLDEyOSArNzkyLDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbUNv
ZGVQb2ludChVQ2hhcjMyIGNvZGVQb2ludCkKIH0KIAogLy8gU3RyaW5nIE9wZXJhdGlvbnMKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgc2l6ZV90IGkgPSAwOwotCi0gICAgLy8gQWxsb3cgbGVhZGluZyBzcGFjZXMu
Ci0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwYWNlT3JO
ZXdsaW5lKGRhdGFbaV0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIC8v
IEFsbG93IHNpZ24uCi0gICAgaWYgKGkgIT0gbGVuZ3RoICYmIChkYXRhW2ldID09ICcrJyB8fCBk
YXRhW2ldID09ICctJykpCi0gICAgICAgICsraTsKLSAgICAKLSAgICAvLyBBbGxvdyBkaWdpdHMu
Ci0gICAgZm9yICg7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoZGF0YVtpXSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gaTsK
LX0KLQotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50
U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJh
c2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11
bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0
ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQot
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQot
dWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hh
cmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBi
b29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90
PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50
IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKLX0KLQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5n
dGgpLCBvaywgMTApOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ss
IDEwKTsKLX0KLQotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVu
c2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0
KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3Rl
cnNUb0ludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0
ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRf
dCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwot
fQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRf
dD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihk
YXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgogc3RhdGljIGlubGlu
ZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCmluZGV4IDZlNTRhZjM4ODRkYjcyZWMyODhlYTc4N2ZkMTVkZjAyZDkxZWFiZWUuLjk3NmZk
YzEzOGNjN2YwOTM0NmM3ZGRkMDNhZTE1MGFmZjhmNDc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaApAQCAtNDIsMzEgKzQyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xhcmF0aW9u
cyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3Ry
aWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VY
UE9SVF9QUklWQVRFIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJh
Y3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxs
cHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsK
LQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQot
V1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5z
aWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11aW50NjRfdCBj
aGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2
NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJz
VG9JbnRQdHIoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGln
bm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKLQotLy8gRklYTUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRo
ZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgot
Ly8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUg
dmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gSXQgd291bGQgYmUgYmV0
dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9u
cyBpbnN0ZWFkLgogV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSBudWxscHRyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9G
bG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKQEAgLTI4MSwy
MSArMjU2LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5n
PiBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJp
ZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCog
b2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAx
MCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0
KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJv
b2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IHRvVUludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxs
cHRyKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFi
b3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2Fy
YmFnZS4KLSAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2Ug
cmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0gICAgLy8g
SXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhl
IGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUg
dG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCkBAIC02ODAsMTYg
KzY0MCw2IEBAIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7CiB1
c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxv
YXQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9JbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50OwotdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9JbnRQdHI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdDsK
LXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9VSW50NjQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdU
Rjo6Y2hhcmFjdGVyc1RvVUludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmljdDsK
IHVzaW5nIFdURjo6ZW1wdHlTdHJpbmc7CiB1c2luZyBXVEY6Om51bGxTdHJpbmc7CiB1c2luZyBX
VEY6OmVxdWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5jcHAKaW5kZXggMTZjNjdhMDA1NTM3MGYxMDM2YWUyNzMzYTUwNTJkMjI4YTYzMGU5OS4uY2U3
YTQzOWUyZDFiMWVjNmY0M2JhMTkxNmVkNjE5OTlmOWE1ODk3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSw4ICsxOSwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykK
KwogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmlj
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAj
aWYgVVNFKEVHTCkKICNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKQEAgLTE4Myw3ICsxODYsOCBA
QCB1bnNpZ25lZCBHTENvbnRleHQ6OnZlcnNpb24oKQogICAgICAgICAgICAgdmVyc2lvbkRpZ2l0
cyA9IHZlcnNpb25TdHJpbmdDb21wb25lbnRzWzBdLnNwbGl0KCcuJyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBtX3ZlcnNpb24gPSB2ZXJzaW9uRGlnaXRzWzBdLnRvVUludCgpICogMTAwICsgdmVy
c2lvbkRpZ2l0c1sxXS50b1VJbnQoKSAqIDEwOworICAgICAgICBtX3ZlcnNpb24gPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1swXSkudmFs
dWVPcigwKSAqIDEwMAorICAgICAgICAgICAgKyBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1sxXSkudmFsdWVPcigwKSAqIDEwOwogICAgIH0K
ICAgICByZXR1cm4gbV92ZXJzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggOWFkMTljN2E0ZjU0MjYwZTFhMDg5YmUwMTg4Yjky
ZTIwYmU0ODk2Yi4uNDVjYWE3ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03
OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNl
dD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmlu
Z09mZnNldEF0KGluZGV4KTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlc3VsdCkgPj0gc3RyaW5nTGVuZ3RoKQorICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQp
ID49IHN0cmluZ0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAppbmRleCBjMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4
YzJlLi45M2IxYWI2MWQyN2RiMzc0ZWNjMmVjNDVjNjg2YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAyNSwxMCArMTAyNSw4
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgLy8gUGFjayByZXNwb25zZSBoZWFkZXJz
IGluIHRoZSBodHRwLWhlYWRlcnMgc3RydWN0dXJlLgogICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0
cnVjdHVyZV9uZXdfZW1wdHkoInJlc3BvbnNlLWhlYWRlcnMiKSk7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBoZWFkZXIgOiByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgYm9v
bCBvayA9IGZhbHNlOwotICAgICAgICB1aW50NjRfdCBjb252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52
YWx1ZS50b1VJbnQ2NCgmb2spOwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnc3Rfc3Ry
dWN0dXJlX3NldChoZWFkZXJzLmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQ
RV9VSU5UNjQsIGNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGF1dG8gY29u
dmVydGVkVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
aGVhZGVyLnZhbHVlKSkKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0
KCksIGhlYWRlci5rZXkudXRmOCgpLmRhdGEoKSwgR19UWVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZh
bHVlLCBudWxscHRyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9z
ZXQoaGVhZGVycy5nZXQoKSwgaGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5H
LCBoZWFkZXIudmFsdWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKaW5k
ZXggZTdlZmQzNDkwNWVkYWRkZDYzY2NhOGIxYjYyMWM4MTI2N2VhMmFiZC4uZTY2YTE0NjJjYTk2
MDBmNjZhNzViNzBmZTZmOGUwNmVkNDhkZDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0yOCwyMCArMjgsMTgg
QEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNp
bmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExp
bmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJn
YzsgaSsrKSB7Ci0gICAgICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmll
ciIpICYmIGkgKyAxIDwgYXJnYykgewotICAgICAgICAgICAgU3RyaW5nIHN0cihhcmd2WysraV0p
OwotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRl
cnByZXRfY2FzdDxIQU5ETEU+KHN0ci50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICgh
c3RyY21wKGFyZ3ZbaV0sICItcHJvY2Vzc0lkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpIHsK
LSAgICAgICAgICAgIFN0cmluZyBzdHIoYXJndlsrK2ldKTsKLSAgICAgICAgICAgIG1fcGFyYW1l
dGVycy5wcm9jZXNzSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyVHlwZT4oc3RyLnRvVUludDY0KCkpOwotICAgICAgICB9IGVsc2UgaWYg
KCFzdHJjbXAoYXJndltpXSwgIi1jb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCisgICAgICAg
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJn
YykKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SEFORExFPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
NjRfdD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChh
cmd2W2ldLCAiLXByb2Nlc3NJZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKSB7CisgICAgICAg
ICAgICBtX3BhcmFtZXRlcnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2WysraV0pLnZhbHVlT3IoMCkpOworICAgICAgICBlbHNl
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItY29uZmlndXJlLWpzYy1mb3ItdGVzdGluZyIpKQogICAg
ICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKICAgICAgICAgZWxz
ZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWRpc2FibGUtaml0IikpCiAgICAgICAgICAgICBKU0M6
OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGUwMGMyMWUwMThiMGQwODY3
MmEzZWM1YWZjMDhmMTc4ZmQ5ZmE3YjIuLjA5Zjc2MjNiZjJkYjRlZDk5ZGFiNTdlMzczZTY4NDEx
ZDM2ZGFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7
IH0sIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKLSAgICAgICAgbV9pbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50
b1VJbnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSwgdG9rZW5zWzJdKTsKKyAgICAgICAgbV9p
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCks
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMF0pLnZh
bHVlT3IoMCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tl
bnNbMV0pLnZhbHVlT3IoMCksIHRva2Vuc1syXSk7CiAgICAgfQogCiAgICAgYm9vbCBzdXBwb3J0
c0FzeW5jUmVwbHkoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggMThmOWU5MzkzMjc5M2I3YzNlNDRlNjM0NmJl
MGYxM2VkNmRiZjIzMy4uYTg2YjM0ZGRhYThmNzE1ZTFjOTQ3Yjg5NDNjZWZkOTIxMzljNDEzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjEs
NyArNjIsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKFN0
cmluZ1ZpZXcgYWRkcmVzcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBob3N0ID0gYWRk
cmVzcy5zdWJzdHJpbmcoMCwgcG9zKTsKLSAgICBhdXRvIHBvcnQgPSBhZGRyZXNzLnN1YnN0cmlu
Zyhwb3MgKyAxKS50b1VJbnQ2NFN0cmljdCgpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdl
cjx1aW50MTZfdD4oYWRkcmVzcy5zdWJzdHJpbmcocG9zICsgMSkpOwogICAgIGlmICghcG9ydCkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOWE0ZjMxYjRjNmMwMDk2NzVjNzY2MzA5NDRmNTc1ODUwOGZiODdlNS4u
ZDUzNjczZmE4MWJhYWFjYzFlYzBhY2U3Mjk4N2ZjYjQxYzFhMWZjNiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIx
LTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
dGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0OiBBZGRlZCBTdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8u
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIENvbnRhaW5zIHRlc3RzIG1vdmVkIGFuZCBhZGFw
dGVkIGZyb20gdGhlIGZpbGVzIGJlbG93IHNvIHdlIGRvbid0CisgICAgICAgIGxvc2UgdGVzdCBj
b3ZlcmFnZS4gV2UgYW5kIGFuZCBzaG91bGQgYWRkIG1hbnkgbW9yZSB0ZXN0cy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwOiBSZW1vdmVkIHRlc3Rz
IGZvciBwYXJzZVVJbnQxNgorICAgICAgICBhbmQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwOiBSZW1vdmVk
IHRlc3RzIGZvciBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbTogVXNlCisgICAgICAgIHBhcnNl
SW50ZWdlcjx1aW50NjRfdD4gaW5zdGVhZCBvZiBTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbTogRGl0dG8uCisKIDIwMjEtMDUtMTEgIERpZWdvIFBpbm8gR2FyY2lh
ICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBjb21wb3NpdGluZy9vdmVyZmxv
dy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1sIGlzIGZhaWxpbmcKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDU3ZjlmNjU3YzIwOTM5YmI1MzUwZmUwOGIw
NDg4NzhjNzJiYmMxOGYuLmU0NGNiNGJiNzMyZTA2NTdiNTBkZGQ3ODliZmRkOTQ3MTQxOTlhMjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtOTMsNiArOTMsNyBAQCBzZXQoVGVz
dFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCiAgICAgVGVzdHMvV1RG
L1N0cmluZ09wZXJhdG9ycy5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nUGFyc2luZ0J1ZmZlci5j
cHAKKyAgICBUZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAKICAgICBUZXN0
cy9XVEYvU3RyaW5nVmlldy5jcHAKICAgICBUZXN0cy9XVEYvU3luY2hyb25pemVkRml4ZWRRdWV1
ZS5jcHAKICAgICBUZXN0cy9XVEYvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGRjMTE3YjI0ZDkyNzIyZmU5MDZjN2VlNGZlOTBiOWM3ZWM5MDdjMjkuLjdh
N2I1ZjIwZTY3MDFlYWNkOTQ1NmMxNTA2M2I5NTFkYzNiNDY4YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04MzEsNiArODMxLDcgQEAKIAkJOTMxQzI4MUUyMkJDNTc5QTAwMUQ5OEM0IC8q
IG9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQzI4MUIyMkJDNTU4MzAwMUQ5OEM0IC8q
IG9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgKi87IH07CiAJCTkzMjlBQTI5MURFM0Y4
MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4
dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1REZGQUYgLyog
Zm9jdXMtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlucHV0cy5o
dG1sICovOyB9OworCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHAgKi87IH07CiAJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRDYzMUIxRkNC
NzYxODAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgKi87IH07CiAJCTkzNDI1ODlDMjU1QjYwOUIwMDU5
RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODlCMjU1QjYwOUEwMDU5RUVERCAvKiBTcGVlY2hSZWNv
Z25pdGlvbi5tbSAqLzsgfTsKIAkJOTM0MjU4OUUyNTVCNkExMjAwNTlFRUREIC8qIHNwZWVjaHJl
Y29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODlEMjU1QjY2QTAw
MDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2Uu
aHRtbCAqLzsgfTsKQEAgLTI1MTIsNiArMjUxMyw3IEBACiAJCTkzMUMyODFDMjJCQzU1QTcwMDFE
OThDNCAvKiBXZWJTUUxCYXNpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJTUUxCYXNpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzE0MDdCMTdCNDQxOTAwMEYwODNCMSAvKiBEaWRO
b3RIYW5kbGVLZXlEb3duLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpZE5vdEhhbmRsZUtleURvd24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRDYzMUIxRkNCNzYx
ODAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQyNTg5QjI1
NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM0MjU4OUQyNTVCNjZBMDAwNTlFRUREIC8qIHNwZWVjaHJlY29n
bml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5j
ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NjQsNiArNDQ2Niw3IEBA
CiAJCQkJMjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJ
CUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwICovLAogCQkJ
CTdDRDcwQzRFMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCAqLywK
KwkJCQk5MzMyRUY5MzI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHAgKi8sCiAJCQkJN0M3NEQ0MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmluZ1ZpZXcuY3Bw
ICovLAogCQkJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1
ZXVlLmNwcCAqLywKIAkJCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRl
cmF0b3IuY3BwICovLApAQCAtNTIyMCw2ICs1MjIzLDcgQEAKIAkJCQk3QzgzREYzNzFEMEE1OTBD
MDBGRUJDRjMgLyogU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzODFE
MEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDRDcwQzRGMjRBNDM2RUUwMEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTkzMzJFRjk0MjY0OUJCNjgwMDlGNUQ2RCAvKiBTdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNBMUQwQTU5MEMwMEZF
QkNGMyAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU1OTdGODM2MUQ5NTk2
QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNERjQwMUQwQTU5MEMwMEZFQkNGMyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YzZjOWU5ZmJjZjlk
ZmU0OThiNTU2MGU4NzVlN2NlYTBkMWM3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApAQCAtMCww
ICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFdURiwgUGFyc2VJbnRlZ2VyKQoreworICAgIEVYUEVDVF9FUShXVEY6
Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxs
cHRyKSkpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIi
KSk7CisgICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50ZWdlcjxpbnQ+KCIwIikpOworICAgIEVYUEVD
VF9FUSgxLCBwYXJzZUludGVnZXI8aW50PigiMSIpKTsKKyAgICBFWFBFQ1RfRVEoMywgcGFyc2VJ
bnRlZ2VyPGludD4oIjMiKSk7CisgICAgRVhQRUNUX0VRKC0zLCBwYXJzZUludGVnZXI8aW50Pigi
LTMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXI8aW50PigiMTIzNDUiKSk7
CisgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIi0xMjM0NSIpKTsKKyAg
ICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDciKSk7
CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2
NDgiKSk7CisgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRlZ2VyPGludD4o
Ii0yMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXI8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlcjxpbnQ+
KCIgMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50Pigi
MXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4o
IjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIz
IikpOworICAgIEVYUEVDVF9FUSgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4o
IjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50
MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjx1aW50MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlcjx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNl
SW50ZWdlcjx1aW50MTZfdD4oIjY1NTM2IikpOworfQorCitURVNUKFdURiwgUGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bmspCit7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEiKSk7CisgICAgRVhQRUNUX0VR
KDMsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjMiKSk7CisgICAgRVhQ
RUNUX0VRKC0zLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMyIpKTsK
KyAgICBFWFBFQ1RfRVEoMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4oIi0xMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0Nywg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0NyIpKTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0yMTQ3NDgzNjQ4IikpOworICAg
IEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oIi0yMTQ3NDgzNjQ5IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUSgx
LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIgMSIpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMXgiKSk7CisK
KyAgICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQxNl90PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDVV
LCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjEyMzQ1
IikpOworICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzUiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMSIpKTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYiKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nVmlldy5jcHAKaW5kZXggNDRhMmRlMzAxMTRlOTcyMTUxOTU4N2EwZjZlMzI3M2U0ZTlk
ZWJiYS4uODRlYzVkYWYyZTQzYmVhOWM0ODUyN2NhMjVjZGZkODI5YWYwN2Y0MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTk5MCwzNyArOTkw
LDQgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdJc0FsbEFTQ0lJKQogICAgIEVYUEVDVF9UUlVFKFN0
cmluZ1ZpZXcoU3RyaW5nKGJpdHdpc2VfY2FzdDxjb25zdCBVQ2hhcio+KHUiSGVsbG8iKSkpLmlz
QWxsQVNDSUkoKSk7CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdWaWV3UGFyc2VVSW50MTYpCi17Ci0g
ICAgRVhQRUNUX0VRKDBVLCAqV1RGOjpwYXJzZVVJbnQxNigiMCIpKTsKLSAgICBFWFBFQ1RfRVEo
M1UsICpXVEY6OnBhcnNlVUludDE2KCIzIikpOwotICAgIEVYUEVDVF9FUSgxMjM0NVUsICpXVEY6
OnBhcnNlVUludDE2KCIxMjM0NSIpKTsKLSAgICBFWFBFQ1RfRVEoNjU1MzVVLCAqV1RGOjpwYXJz
ZVVJbnQxNigiNjU1MzUiKSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIi0x
IikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNlVUludDE2KCItMyIpKTsKLSAgICBFWFBF
Q1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiNjU1MzYiKSk7Ci19Ci0KLVRFU1QoV1RGLCBTdHJp
bmdWaWV3VG9JbnRTdHJpY3QpCi17Ci0gICAgYXV0byB0ZXN0ID0gW10oQVNDSUlMaXRlcmFsIHN0
cmluZykgewotICAgICAgICBib29sIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgaW50IHJlc3Vs
dCA9IFN0cmluZ1ZpZXcoc3RyaW5nKS50b0ludFN0cmljdChpc1ZhbGlkKTsKLSAgICAgICAgcmV0
dXJuIGlzVmFsaWQgPyBtYWtlT3B0aW9uYWwocmVzdWx0KSA6IFdURjo6bnVsbG9wdDsKLSAgICB9
OwotICAgIEVYUEVDVF9FUSgwLCAqdGVzdCgiMCJfcykpOwotICAgIEVYUEVDVF9FUSgzLCAqdGVz
dCgiMyJfcykpOwotICAgIEVYUEVDVF9FUSgtMywgKnRlc3QoIi0zIl9zKSk7Ci0gICAgRVhQRUNU
X0VRKDEyMzQ1LCAqdGVzdCgiMTIzNDUiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTEyMzQ1LCAqdGVz
dCgiLTEyMzQ1Il9zKSk7Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkg
PT0gMjE0NzQ4MzY0NykgewotICAgICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgKnRlc3QoIjIx
NDc0ODM2NDciX3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIjIxNDc0ODM2NDgiX3Mp
KTsKLSAgICB9Ci0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgPT0gLTIx
NDc0ODM2NDgpIHsKLSAgICAgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCAqdGVzdCgiLTIxNDc0
ODM2NDgiX3MpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIXRlc3QoIi0yMTQ3NDgzNjQ5Il9zKSk7
Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRleCA4MDhhNjQzNDQwZDE1MDBiYjhl
OGU5MjNkNDhlYTViNDExZGExMjM1Li4wZTBlOWM3Zjg4N2YzZWFmN2M0Nzc1YTAxNGYxZTZjY2E4
ZDQxMGYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJp
bmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAK
QEAgLTI4Nyw1OCArMjg3LDYgQEAgVEVTVChXVEYsIFN0cmluZ0lzb2xhdGVkQ29weSkKICAgICBF
WFBFQ1RfRkFMU0Uob3JpZ2luYWwuaW1wbCgpID09IGNvcHkuaW1wbCgpKTsKIH0KIAotVEVTVChX
VEYsIFN0cmluZ1RvSW50KQotewotICAgIGJvb2wgb2sgPSBmYWxzZTsKLQotICAgIEVYUEVDVF9F
USgwLCBTdHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkudG9JbnQo
Jm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgwLCBlbXB0eVN0
cmluZygpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBlbXB0eVN0cmluZygpLnRvSW50KCZv
aykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIw
IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMCIpLnRvSW50KCZvaykpOwot
ICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjEiKS50b0lu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIFN0cmluZygiMjE0NzQ4
MzY0NyIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBTdHJpbmcoIjIxNDc0
ODM2NDciKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMCwgU3RyaW5nKCIyMTQ3NDgzNjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0
cmluZygiMjE0NzQ4MzY0OCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0K
LSAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2NDgiKS50b0ludCgp
KTsKLSAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDgsIFN0cmluZygiLTIxNDc0ODM2NDgiKS50b0lu
dCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCItMjE0NzQ4MzY0OSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIi0yMTQ3
NDgzNjQ5IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIC8vIGZh
aWwgaWYgd2Ugc2VlIGxlYWRpbmcganVuawotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIiku
dG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygieDEiKS50b0ludCgmb2spKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgLy8gc3VjY2VlZCBpZiB3ZSBzZWUgbGVhZGluZyBz
cGFjZXMKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCkpOwotICAgIEVYUEVD
VF9FUSgxLCBTdHJpbmcoIiAxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwot
Ci0gICAgLy8gc2lsZW50bHkgaWdub3JlIHRyYWlsaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEoMSwg
U3RyaW5nKCIxeCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgxLCBTdHJpbmcoIjF4IikudG9J
bnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotfQotCiBURVNUKFdURiwgU3RyaW5nVG9E
b3VibGUpCiB7CiAgICAgYm9vbCBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
aW5kZXggN2FhNGM5ZDk3NThkNjhkMzg2ZjNhMDkyNGNlMDI2YjM4NmRlMmFjOS4uNDYyMDhiMWJm
YzEwYzZhNjQ2MTk5MTBjYmQ1MGIyNDVkYzdiNGRjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0x
Lm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBkb25lOwpAQCAtMTUwNiw4ICsxNTA3LDgg
QEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAgYXV0byByYW5nZUJl
Z2luU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0
ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpOwogICAgICAg
ICBhdXRvIHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhkYXNo
ICsgMSwgZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSByYW5nZUJl
Z2luU3RyaW5nLnRvVUludDY0U3RyaWN0KCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5n
ZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiByYW5nZUVuZFN0cmluZy50
b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8
dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFu
Z2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJz
ZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1ZU9yKDApOwogCiAgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHN0YXR1
c0NvZGU6MjA2IEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAewogICAgICAg
ICAgICAgQCJDb250ZW50LVJhbmdlIiA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYnl0
ZXMgJWxsdS0lbGx1LyVsdSIsIHJhbmdlQmVnaW4sIHJhbmdlRW5kLCAodW5zaWduZWQgbG9uZylb
dmlkZW9EYXRhIGxlbmd0aF1dLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQppbmRleCBmZGM1ZDZjYWNlNjg0N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5M2M4Li42NTJiN2Zm
ZjFlZmVkZWNhMDBjMWZjYmJlYWM0ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0
aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CkBAIC03NzAsOCArNzcxLDggQEAgVEVTVChX
ZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QuZmluZCgn
XHInLCBkYXNoKTsKICAgICAgICAgICAgIEFTU0VSVChlbmQgIT0gbm90Rm91bmQpOwogCi0gICAg
ICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSAqcmVxdWVzdC5zdWJzdHJpbmcoYmVnaW4gKyByYW5n
ZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKS50b1VJ
bnQ2NFN0cmljdCgpOwotICAgICAgICAgICAgYXV0byByYW5nZUVuZCA9ICpyZXF1ZXN0LnN1YnN0
cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAg
ICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJlcXVlc3Quc3Vi
c3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VC
eXRlcy5sZW5ndGgoKSkpLnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRW5kID0gcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PihyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFz
aCAtIDEpKS52YWx1ZSgpOwogCiAgICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VIZWFkZXJT
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIkhU
VFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428309</attachid>
            <date>2021-05-11 13:19:49 -0700</date>
            <delta_ts>2021-05-11 15:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210511131948.patch</filename>
            <type>text/plain</type>
            <size>51026</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4OTkxMjgzMTBlZDE0MzIzZjgyOWFi
ZWFkM2FkOWUwYjExMWNhNGEuLjUzNGNlMjQ1YzZjMTkzYzZiMzhhYTVlM2M0MWVmNTg5NTNmMzlk
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBEZWxldGVkIFN0cmluZ1ZpZXc6OnRvSW50
LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdCwgU3RyaW5nVmlldzo6dG9VSW50NjRT
dHJpY3QsCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QsIGFuZCBwYXJzZVVJbnQx
Ni4gQ2hhbmdlZCB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgdGhhdCB0YWtlcyBhIGNvbnN0IGNo
YXIqIHRvIHdvcmsgd2hlbiBwYXNzZWQgbnVsbHB0ci4gU3RyaW5nVmlldyBoYXMKKyAgICAgICAg
YSBudWxsIHZhbHVlLCBhbmQgY29udmVydGluZyBhIG51bGwgY29uc3QgY2hhciogc2hvdWxkIHBy
b2R1Y2UgdGhhdC4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9JbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnRvVUludFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZzo6dG9JbnQ2NFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmlu
Zzo6dG9VSW50NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6
OnRvSW50UHRyU3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b0ludCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9VSW50IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludDY0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b1VJbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZzo6dG9JbnRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9VSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEZWxldGVkIHRoZSBhYm92ZSBmdW5jdGlvbnMu
CisKIDIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIG1hY09TIFJlbGVhc2Ugd2syIF0gaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJl
Y29yZHMtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBpcyBmbGFreSBjcmFzaGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc1MjlhY2MzYzFiYmVhZDhkOTk0ZjIxNjU4MzBmNjZiNmY0NTRlOTEuLmQyYzQ1MTc1N2Mw
OWI5Y2Y4Y2QwNTc1YTUxOTYzMmYzYTZhZjNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0wNS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbik6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvVUludC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Y2hlY2tlZFN0cmlu
Z09mZnNldEF0IGNvbnN0KTogRml4IGNvZGUgdGhhdCB3YXMKKyAgICAgICAgYXNzdW1pbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgd2FzIHNpZ25lZCB0byBjb21waWxlIHdpdGhvdXQgYSB3YXJu
aW5nCisgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCdzIHNpZ25lZCBvciB1bnNpZ25l
ZC4gVGhpcyB3YXMgbWFraW5nIEdUSworICAgICAgICBidWlsZHMgaGF2ZSB0b25zIGFuZCB0b25z
IG9mIHdhcm5pbmdzLCB3aGljaCB3YXMgZGlzdHJhY3Rpbmcgd2hpbGUKKyAgICAgICAgd29ya2lu
ZyBvbiB0aGUgb3RoZXIgZml4ZXMgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NC4KKwogMjAyMS0wNS0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gcmVzdHJpY3QgbmV0d29ya2lu
ZyB0byBhIHNldCBvZiBob3N0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NzNmYWQzN2Q3ZDlmYjE4MzBkMGJkYWFj
NTdkNDczM2I5M2I1ZTRjLi4yOGZiMTg1YjdmYjJhZDA4MzZkY2ZmZjQ2OGQzN2JmOTQxN2FlN2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTExICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5
IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUpOiBV
c2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTY3JpcHRNZXNzYWdlQ2xpZW50OjpkaWRQb3N0TWVzc2FnZSk6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PiBpbnN0ZWFkIG9mIFN0cmluZ1ZpZXc6OnRv
VUludDY0LgorICAgICAgICBUaGlzIGlzIGEgMTYtYml0IHBvcnQgbnVtYmVyLCBzbyBub3QgdmFs
dWFibGUgdG8gcGFyc2UgbGFyZ2VyIGludGVnZXJzLgorCiAyMDIxLTA1LTExICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBy
ZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCmluZGV4IDVhYTE2YjBiNzQ4YjE5ODMyMTJjZjU2Y2Q2OWYyY2Y3NzhiZGNmZmIuLjMzYjBl
NTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
IAotICAgIGludCB0b0ludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLnRvSW50KG9rKTsgfQogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRvRmxv
YXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9r
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4N2M5NjNhMzUxN2Y5M2Ux
MWVlZWFjZWEwMDg4ZjZiYzFiMzk2YjQ1Li43ZDNmMzQ2MzFhYzhlNzk3NWU5ZjQ0ODczNTUzY2Vm
MWVkNzhkMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTgxMSw3NiArODEx
LDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24gaXNXaGl0ZVNwYWMKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2lt
cGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlzV2hpdGVTcGFjZSk7CiB9CiAK
LWludCBTdHJpbmdJbXBsOjp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWdu
ZWQgU3RyaW5nSW1wbDo6dG9VSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBp
ZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJ
bnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0
X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1Rv
SW50NjRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVp
bnQ2NF90IFN0cmluZ0ltcGw6OnRvVUludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsK
LSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFj
dGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwot
fQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJh
c2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJu
IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotaW50IFN0cmluZ0ltcGw6OnRvSW50KGJvb2wqIG9rKQotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCks
IG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludChib29sKiBv
aykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJ
bnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1w
bDo6dG9JbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0K
LQotdWludDY0X3QgU3RyaW5nSW1wbDo6dG9VSW50NjQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJz
MTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6dG9JbnRQdHIo
Ym9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c1RvSW50UHRyKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJh
Y3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQogZG91Ymxl
IFN0cmluZ0ltcGw6OnRvRG91YmxlKGJvb2wqIG9rKQogewogICAgIGlmIChpczhCaXQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYWZkZDNlMDE3ZDRjOThiMzY3YzNhNzk0NjRiNWUy
MzRhOWFiMmRlZS4uMDJhNWRhZDI3M2JjYjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTM5MiwxOCArMzkyLDYgQEAgcHVibGljOgogICAg
IFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVk
KTsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApOwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9v
bCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQotICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnRwdHJf
dCB0b0ludFB0cihib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLQogICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVz
ZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAg
ICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRo
ZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQg
YmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaAppbmRleCBmMGIzZWVmNDE5NWEzMjBiZWMyNTA2Yjc0ZGM5ODU3ZWQ0YmQ4
MzA3Li4wOWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtMTEwLDM1
ICsxMTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPEludGVn
cmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbAogICAgIHJldHVybiBwYXJzZUludGVn
ZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwg
YmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5OjpBbGxvdyk7CiB9CiAKLS8vIEZJWE1FOiBEZXByZWNh
dGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwg
Y2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUs
IHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBl
KGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywgYm9vbCogb2ssIGludCBiYXNl
ID0gMTApCi17Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihz
dHJpbmdWaWV3LCBiYXNlKTsKLSAgICBpZiAob2spCi0gICAgICAgICpvayA9IHJlc3VsdC5oYXNW
YWx1ZSgpOwotICAgIHJldHVybiByZXN1bHQudmFsdWVPcigwKTsKLX0KLQotLy8gRklYTUU6IERl
cHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3Zl
IGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBl
KGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPEludGVncmFsVHlwZT4o
U3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBvaywgYmFzZSk7Ci19Ci0KLS8vIEZJWE1FOiBE
ZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92
ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3Jh
bFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gT3B0aW9uYWw8SW50ZWdyYWxUeXBl
PiB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIGlu
dCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0
cmluZ1ZpZXcsIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50
ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJ
bnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGJhc2UgPSAxMCkKLXsKLSAgICBy
ZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0
aCB9LCBiYXNlKTsKLX0KLQogfQogCiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlcjsKIHVzaW5nIFdU
Rjo6cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms7Ci11c2luZyBXVEY6OnRvSW50ZWdy
YWxUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggODBmODBjYjc3N2ZkZTM3
ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQxMy4uM2NiMDE4M2M4MDExYWQ4ZGE4MmMwZTk0MmI3Njkz
ODk4MWJkM2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMTEsMTcgKzMx
MSw2IEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJl
dHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0KIAotLy8gRklYTUU6IFNob3VsZCB0aGlz
IGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFkPwotLy8gRklYTUU6IFNob3Vs
ZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHls
ZT8KLU9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKLXsK
LSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1
aW50MTZfdD4oc3RyaW5nLCAmb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQogYm9vbCBlcXVhbFJlc3BlY3RpbmdO
dWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQogewogICAgIGlmIChhLm1fY2hhcmFj
dGVycyA9PSBiLm1fY2hhcmFjdGVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBh
M2Y1YjExNTgyYTYyZGJlZWY3MmMxZDhhMGU3MDFhYWJhNGMxMWU0Li5mZWZjNDgyNjAwYjA5MWMy
ZjhhZjU5MzY1ZmMyNTZiNWViZTY0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAt
MTY4LDExICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5k
c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Owog
Ci0gICAgaW50IHRvSW50KCkgY29uc3Q7Ci0gICAgaW50IHRvSW50KGJvb2wmIGlzVmFsaWQpIGNv
bnN0OwotICAgIGludCB0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ2
NF90PiB0b0ludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1Zh
bGlkKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1w
bCYpOwpAQCAtMjQ2LDggKzI0MSw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOwot
CiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zNTIsNyArMzQ1LDcg
QEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciogY2hhcmFjdGVycykKIHsKLSAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVuKGNoYXJhY3RlcnMpKTsKKyAgICBpbml0aWFs
aXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVy
cyA/IHN0cmxlbihjaGFyYWN0ZXJzKSA6IDApOwogfQogCiBpbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01ODgs
NDAgKzU4MSw2IEBAIGlubGluZSBmbG9hdCBTdHJpbmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KCkg
Y29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgcmV0dXJuIHRvSW50KGlzVmFsaWQpOwot
fQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGludCBT
dHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJz
OCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBPcHRp
b25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAotewotICAg
IGJvb2wgaXNWYWxpZDsKLSAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQp
OwotICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxv
cHQ7Ci19Ci0KLWlubGluZSBPcHRpb25hbDxpbnQ2NF90PiBTdHJpbmdWaWV3Ojp0b0ludDY0U3Ry
aWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgaW50NjRfdCByZXN1bHQgPSBp
czhCaXQoKSA/IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
LCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25hbChyZXN1
bHQpIDogV1RGOjpudWxsb3B0OwotfQotCiBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAppbmRleCAxZWRiYzgzYWMzY2FlZjUxZTAwNjRhNzdjYmQ2ZmEyNzFh
ZGUzMDcwLi4yNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00OTIsMTA2ICs0OTIsNiBAQCBTdHJpbmcgU3RyaW5n
OjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoZG91YmxlIG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKICAgICByZXR1cm4gbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwgZGVj
aW1hbFBsYWNlcywgYnVmZmVyKTsKIH0KIAotaW50IFN0cmluZzo6dG9JbnRTdHJpY3QoYm9vbCog
b2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChv
aykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIG1faW1wbC0+dG9JbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBT
dHJpbmc6OnRvVUludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnRTdHJpY3Qo
b2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NFN0cmljdChib29sKiBvaywg
aW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQot
ICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBy
ZXR1cm4gbV9pbXBsLT50b0ludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQ2NFN0cmlj
dChvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHJTdHJpY3QoYm9vbCog
b2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChv
aykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHJTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQgU3Ry
aW5nOjp0b0ludChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAg
ICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50KG9rKTsKLX0KLQotdW5zaWduZWQgU3RyaW5n
Ojp0b1VJbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAg
aWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQob2spOwotfQotCi1pbnQ2NF90IFN0cmluZzo6
dG9JbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBp
ZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjQob2spOwotfQotCi11aW50NjRfdCBTdHJpbmc6
OnRvVUludDY0KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAg
IGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50NjQob2spOwotfQotCi1pbnRwdHJfdCBTdHJp
bmc6OnRvSW50UHRyKGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAg
ICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHIob2spOwotfQotCiBkb3VibGUgU3Ry
aW5nOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkgewpAQCAt
ODkyLDEyOSArNzkyLDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbUNvZGVQb2ludChVQ2hhcjMyIGNv
ZGVQb2ludCkKIH0KIAogLy8gU3RyaW5nIE9wZXJhdGlvbnMKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
KGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90
IGkgPSAwOwotCi0gICAgLy8gQWxsb3cgbGVhZGluZyBzcGFjZXMuCi0gICAgZm9yICg7IGkgIT0g
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0pKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIC8vIEFsbG93IHNpZ24uCi0gICAg
aWYgKGkgIT0gbGVuZ3RoICYmIChkYXRhW2ldID09ICcrJyB8fCBkYXRhW2ldID09ICctJykpCi0g
ICAgICAgICsraTsKLSAgICAKLSAgICAvLyBBbGxvdyBkaWdpdHMuCi0gICAgZm9yICg7IGkgIT0g
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gaTsKLX0KLQotaW50IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0
aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5z
aWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBs
ZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVp
bnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3Ry
aWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2Up
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9r
LCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0K
LQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQot
Ci1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBi
b29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhP
ZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5zaWdu
ZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9v
bCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19
Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFy
YWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
KQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1p
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxp
bnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwotfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBU
cmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgogc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVU
eXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBz
aXplX3QmIHBhcnNlZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZlNTRhZjM4
ODRkYjcyZWMyODhlYTc4N2ZkMTVkZjAyZDkxZWFiZWUuLjk3NmZkYzEzOGNjN2YwOTM0NmM3ZGRk
MDNhZTE1MGFmZjhmNDc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDIsMzEgKzQy
LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0
aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0
X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3Qg
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNo
YXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmlj
dChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotV1RGX0VYUE9SVF9QUklW
QVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRF
IGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFjdGVyc1Rv
VUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBjaGFy
YWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsg
Ly8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJh
aWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQotLy8gRklY
TUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9y
ICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gTGlrZSB0aGUgbm9uLXN0
cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBp
cyB0cmFpbGluZyBnYXJiYWdlLgotLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUg
bW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogV1RGX0VY
UE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKQEAgLTI4MSwyMSArMjU2LDYgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1w
dHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0cmlj
dChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQg
YmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0
U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90
IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7
Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0cikg
Y29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9
IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjQo
Ym9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0
X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLQotICAg
IC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZh
bHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLSAgICAvLyBMaWtl
IHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3
aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVy
IGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBp
bnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChi
b29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCkBAIC02ODAsMTYgKzY0MCw2IEBAIHVzaW5nIFdU
Rjo6U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7CiB1c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb0RvdWJsZTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxvYXQ7Ci11c2luZyBXVEY6OmNo
YXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHI7
Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUlu
dDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmljdDsKIHVzaW5nIFdURjo6ZW1wdHlT
dHJpbmc7CiB1c2luZyBXVEY6Om51bGxTdHJpbmc7CiB1c2luZyBXVEY6OmVxdWFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMTZjNjdh
MDA1NTM3MGYxMDM2YWUyNzMzYTUwNTJkMjI4YTYzMGU5OS4uY2U3YTQzOWUyZDFiMWVjNmY0M2Jh
MTkxNmVkNjE5OTlmOWE1ODk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSw4ICsxOSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykKKwogI2luY2x1ZGUgIkdMQ29u
dGV4dC5oIgorCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYgVVNFKEVHTCkKICNpbmNs
dWRlICJHTENvbnRleHRFR0wuaCIKQEAgLTE4Myw3ICsxODYsOCBAQCB1bnNpZ25lZCBHTENvbnRl
eHQ6OnZlcnNpb24oKQogICAgICAgICAgICAgdmVyc2lvbkRpZ2l0cyA9IHZlcnNpb25TdHJpbmdD
b21wb25lbnRzWzBdLnNwbGl0KCcuJyk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3ZlcnNpb24g
PSB2ZXJzaW9uRGlnaXRzWzBdLnRvVUludCgpICogMTAwICsgdmVyc2lvbkRpZ2l0c1sxXS50b1VJ
bnQoKSAqIDEwOworICAgICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVPcigwKSAqIDEwMAorICAg
ICAgICAgICAgKyBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVy
c2lvbkRpZ2l0c1sxXSkudmFsdWVPcigwKSAqIDEwOwogICAgIH0KICAgICByZXR1cm4gbV92ZXJz
aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKaW5kZXggOWFkMTljN2E0ZjU0MjYwZTFhMDg5YmUwMTg4YjkyZTIwYmU0ODk2Yi4uNDVjYWE3
ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09m
ZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CiAgICAg
ewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4KTsK
LSAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkg
Pj0gc3RyaW5nTGVuZ3RoKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2ln
bmVkX3Q8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCBjMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4YzJlLi45M2IxYWI2MWQyN2Ri
Mzc0ZWNjMmVjNDVjNjg2YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAyNSwxMCArMTAyNSw4IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uCiAgICAgLy8gUGFjayByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBodHRwLWhlYWRl
cnMgc3RydWN0dXJlLgogICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHko
InJlc3BvbnNlLWhlYWRlcnMiKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAg
ICAgICB1aW50NjRfdCBjb252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52YWx1ZS50b1VJbnQ2NCgmb2sp
OwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChoZWFkZXJz
LmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQsIGNvbnZlcnRl
ZFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkVmFsdWUgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oaGVhZGVyLnZhbHVlKSkKKyAg
ICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXkudXRm
OCgpLmRhdGEoKSwgR19UWVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5nZXQoKSwg
aGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5HLCBoZWFkZXIudmFsdWUudXRm
OCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKaW5kZXggZTdlZmQzNDkwNWVkYWRk
ZDYzY2NhOGIxYjYyMWM4MTI2N2VhMmFiZC4uZGJlMGQwM2M5MjE5MGViMGJjMjllYjY2YzQ3NTNh
MGFhOWMwYjQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFy
eVByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxp
YXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0yOCwyMCArMjgsMTggQEAKIAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0V4ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAg
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJn
YykgewotICAgICAgICAgICAgU3RyaW5nIHN0cihhcmd2WysraV0pOwotICAgICAgICAgICAgbV9w
YXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+
KHN0ci50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICIt
cHJvY2Vzc0lkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyBzdHIoYXJndlsrK2ldKTsKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlw
ZT4oc3RyLnRvVUludDY0KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwg
Ii1jb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCisgICAgICAgIGlmICghc3RyY21wKGFyZ3Zb
aV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIG1f
cGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExF
PihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52
YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXByb2Nlc3NJ
ZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQorICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLnBy
b2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXJUeXBlPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
YXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ld
LCAiLWNvbmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKSkKICAgICAgICAgICAgIEpTQzo6Q29uZmln
Ojpjb25maWd1cmVGb3JUZXN0aW5nKCk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltp
XSwgIi1kaXNhYmxlLWppdCIpKQogICAgICAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
OjpzZXRKSVRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAppbmRleCBlMDBjMjFlMDE4YjBkMDg2NzJhM2VjNWFmYzA4ZjE3OGZkOWZh
N2IyLi4wOWY3NjIzYmYyZGI0ZWQ5OWRhYjU3ZTM3M2U2ODQxMWQzNmRhYmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2FkU3Rh
dGUoKS51cmwoKSk7Ci0gICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3Qo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFd
LnRvVUludDY0KCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzFdKS52YWx1ZU9yKDApLCB0
b2tlbnNbMl0pOwogICAgIH0KIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCmluZGV4IDE4ZjllOTM5MzI3OTNiN2MzZTQ0ZTYzNDZiZTBmMTNlZDZkYmYyMzMuLmE4NmIz
NGRkYWE4ZjcxNWUxYzk0N2I4OTQzY2VmZDkyMTM5YzQxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1bmRs
ZVdpbi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYxLDcgKzYyLDcgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaG9zdCA9IGFkZHJlc3Muc3Vic3RyaW5nKDAsIHBv
cyk7Ci0gICAgYXV0byBwb3J0ID0gYWRkcmVzcy5zdWJzdHJpbmcocG9zICsgMSkudG9VSW50NjRT
dHJpY3QoKTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGFkZHJlc3Mu
c3Vic3RyaW5nKHBvcyArIDEpKTsKICAgICBpZiAoIXBvcnQpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI0OGFj
NjBmZGZkYWNmNGYwZTFjYTczN2E1OTA0OWQzNTYwNDY3OGIuLjAxOTUwOTY4NDJiZjJlYTY4YWJj
N2RkZjRiNjAwZTY3YmVjNWYzZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0wNS0xMSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZh
bWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDogQWRkZWQgU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5jcHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA6IEFkZGVkLgor
ICAgICAgICBDb250YWlucyB0ZXN0cyBtb3ZlZCBhbmQgYWRhcHRlZCBmcm9tIHRoZSBmaWxlcyBi
ZWxvdyBzbyB3ZSBkb24ndAorICAgICAgICBsb3NlIHRlc3QgY292ZXJhZ2UuIFdlIGFuZCBhbmQg
c2hvdWxkIGFkZCBtYW55IG1vcmUgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdWaWV3LmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgcGFyc2VVSW50MTYKKyAg
ICAgICAgYW5kIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgU3RyaW5nOjp0
b0ludC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW06IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06IERp
dHRvLgorCiAyMDIxLTA1LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0
IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2Y5ZjY1N2MyMDkz
OWJiNTM1MGZlMDhiMDQ4ODc4YzcyYmJjMThmLi5lNDRjYjRiYjczMmUwNjU3YjUwZGRkNzg5YmZk
ZDk0NzE0MTk5YTI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTkzLDYgKzkz
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAog
ICAgIFRlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1Bh
cnNpbmdCdWZmZXIuY3BwCisgICAgVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
Y3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgVGVzdHMvV1RGL1N5bmNocm9u
aXplZEZpeGVkUXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNwcApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzExN2IyNGQ5MjcyMmZlOTA2YzdlZTRmZTkwYjlj
N2VjOTA3YzI5Li43YTdiNWYyMGU2NzAxZWFjZDk0NTZjMTUwNjNiOTUxZGMzYjQ2OGFhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMxLDYgKzgzMSw3IEBACiAJCTkzMUMyODFFMjJCQzU3
OUEwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUMyODFCMjJCQzU1
ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sICovOyB9OwogCQk5
MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgxRTAw
M0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3MTA0
NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBm
b2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsKKwkJOTMzMkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uY3BwICovOyB9OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyog
SGFzaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovOyB9OwogCQk5MzQyNTg5
QzI1NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQg
LyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi87IH07CiAJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVE
RCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQy
NTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9u
LXBlcnNpc3RlbmNlLmh0bWwgKi87IH07CkBAIC0yNTEyLDYgKzI1MTMsNyBAQAogCQk5MzFDMjgx
QzIyQkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU1FMQmFzaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkwMDBG
MDgzQjEgLyogRGlkTm90SGFuZGxlS2V5RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaWROb3RIYW5kbGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
M0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVERCAv
KiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Np
b24tcGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDY0
LDYgKzQ0NjYsNyBAQAogCQkJCTI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBs
LmNwcCAqLywKIAkJCQlDMDEzNjNDNzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3Jz
LmNwcCAqLywKIAkJCQk3Q0Q3MEM0RTI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1
ZmZlci5jcHAgKi8sCisJCQkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uY3BwICovLAogCQkJCTdDNzRENDJEMTg4MjI4RjMwMEU1RUQ1NyAvKiBT
dHJpbmdWaWV3LmNwcCAqLywKIAkJCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hy
b25pemVkRml4ZWRRdWV1ZS5jcHAgKi8sCiAJCQkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8q
IFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKQEAgLTUyMjAsNiArNTIyMyw3IEBACiAJCQkJN0M4
M0RGMzcxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMzgxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0Q3MEM0RjI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyog
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYz
QTFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREY0MDFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdHNDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NGM2YzllOWZiY2Y5ZGZlNDk4YjU1NjBlODc1ZTdjZWEwZDFjN2RlCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFBhcnNlSW50ZWdlcikKK3sKKyAgICBF
WFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PihzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUlu
dGVnZXI8aW50PigiIikpOworICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXI8aW50PigiMCIp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIjEiKSk7CisgICAgRVhQRUNU
X0VRKDMsIHBhcnNlSW50ZWdlcjxpbnQ+KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJ
bnRlZ2VyPGludD4oIi0zIikpOworICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyPGlu
dD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCIt
MTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+KCIy
MTQ3NDgzNjQ3IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxp
bnQ+KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBhcnNl
SW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0
LCBwYXJzZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6
bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJz
ZUludGVnZXI8aW50PigiIDEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyPGludD4oIjF4IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVn
ZXI8dWludDE2X3Q+KCIwIikpOworICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2Vy
PHVpbnQxNl90PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSArICpwYXJzZUludGVn
ZXI8dWludDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJz
ZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0
LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKK30KKworVEVTVChXVEYs
IFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQoreworICAgIEVYUEVDVF9FUShXVEY6
Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIikpOworICAgIEVYUEVDVF9F
USgwLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIwIikpOworICAgIEVY
UEVDVF9FUSgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxIikpOwor
ICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIz
IikpOworICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
aW50PigiLTMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoLTEyMzQ1LCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMTIzNDUiKSk7CisgICAgRVhQRUNUX0VR
KDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjIxNDc0
ODM2NDciKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoLTIxNDc0
ODM2NDcgLSAxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4
MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIDEi
KSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oIjF4IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjMiKSk7CisgICAgRVhQ
RUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWlu
dDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVDVF9F
UShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90
PigiLTEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2Iikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IDQ0YTJkZTMwMTE0ZTk3MjE1MTk1ODdh
MGY2ZTMyNzNlNGU5ZGViYmEuLjg0ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFmMDdm
NDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBA
IC05OTAsMzcgKzk5MCw0IEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3SXNBbGxBU0NJSSkKICAgICBF
WFBFQ1RfVFJVRShTdHJpbmdWaWV3KFN0cmluZyhiaXR3aXNlX2Nhc3Q8Y29uc3QgVUNoYXIqPih1
IkhlbGxvIikpKS5pc0FsbEFTQ0lJKCkpOwogfQogCi1URVNUKFdURiwgU3RyaW5nVmlld1BhcnNl
VUludDE2KQotewotICAgIEVYUEVDVF9FUSgwVSwgKldURjo6cGFyc2VVSW50MTYoIjAiKSk7Ci0g
ICAgRVhQRUNUX0VRKDNVLCAqV1RGOjpwYXJzZVVJbnQxNigiMyIpKTsKLSAgICBFWFBFQ1RfRVEo
MTIzNDVVLCAqV1RGOjpwYXJzZVVJbnQxNigiMTIzNDUiKSk7Ci0gICAgRVhQRUNUX0VRKDY1NTM1
VSwgKldURjo6cGFyc2VVSW50MTYoIjY1NTM1IikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBh
cnNlVUludDE2KCItMSIpKTsKLSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiLTMi
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIjY1NTM2IikpOwotfQotCi1U
RVNUKFdURiwgU3RyaW5nVmlld1RvSW50U3RyaWN0KQotewotICAgIGF1dG8gdGVzdCA9IFtdKEFT
Q0lJTGl0ZXJhbCBzdHJpbmcpIHsKLSAgICAgICAgYm9vbCBpc1ZhbGlkID0gZmFsc2U7Ci0gICAg
ICAgIGludCByZXN1bHQgPSBTdHJpbmdWaWV3KHN0cmluZykudG9JbnRTdHJpY3QoaXNWYWxpZCk7
Ci0gICAgICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51
bGxvcHQ7Ci0gICAgfTsKLSAgICBFWFBFQ1RfRVEoMCwgKnRlc3QoIjAiX3MpKTsKLSAgICBFWFBF
Q1RfRVEoMywgKnRlc3QoIjMiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTMsICp0ZXN0KCItMyJfcykp
OwotICAgIEVYUEVDVF9FUSgxMjM0NSwgKnRlc3QoIjEyMzQ1Il9zKSk7Ci0gICAgRVhQRUNUX0VR
KC0xMjM0NSwgKnRlc3QoIi0xMjM0NSJfcykpOwotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpID09IDIxNDc0ODM2NDcpIHsKLSAgICAgICAgRVhQRUNUX0VRKDIxNDc0ODM2
NDcsICp0ZXN0KCIyMTQ3NDgzNjQ3Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCIy
MTQ3NDgzNjQ4Il9zKSk7Ci0gICAgfQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1pbigpID09IC0yMTQ3NDgzNjQ4KSB7Ci0gICAgICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0OCwg
KnRlc3QoIi0yMTQ3NDgzNjQ4Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCItMjE0
NzQ4MzY0OSJfcykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggODA4YTY0
MzQ0MGQxNTAwYmI4ZThlOTIzZDQ4ZWE1YjQxMWRhMTIzNS4uMGUwZTljN2Y4ODdmM2VhZjdjNDc3
NWEwMTRmMWU2Y2NhOGQ0MTBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV1RGU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
VEZTdHJpbmcuY3BwCkBAIC0yODcsNTggKzI4Nyw2IEBAIFRFU1QoV1RGLCBTdHJpbmdJc29sYXRl
ZENvcHkpCiAgICAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsLmltcGwoKSA9PSBjb3B5LmltcGwoKSk7
CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdUb0ludCkKLXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0K
LSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0
cmluZygpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMCwgZW1wdHlTdHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgZW1wdHlTdHJp
bmcoKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VR
KDAsIFN0cmluZygiMCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAiKS50
b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgU3Ry
aW5nKCIxIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50KCZv
aykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBT
dHJpbmcoIjIxNDc0ODM2NDciKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0Nywg
U3RyaW5nKCIyMTQ3NDgzNjQ3IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwot
Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwotICAgIEVY
UEVDVF9FUSgwLCBTdHJpbmcoIjIxNDc0ODM2NDgiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3NDgz
NjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3
NDgzNjQ4IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNU
X0VRKDAsIFN0cmluZygiLTIxNDc0ODM2NDkiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
U3RyaW5nKCItMjE0NzQ4MzY0OSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7
Ci0KLSAgICAvLyBmYWlsIGlmIHdlIHNlZSBsZWFkaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEoMCwg
U3RyaW5nKCJ4MSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIikudG9J
bnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIC8vIHN1Y2NlZWQgaWYgd2Ug
c2VlIGxlYWRpbmcgc3BhY2VzCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiIDEiKS50b0ludCgp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVD
VF9UUlVFKG9rKTsKLQotICAgIC8vIHNpbGVudGx5IGlnbm9yZSB0cmFpbGluZyBqdW5rCi0gICAg
RVhQRUNUX0VRKDEsIFN0cmluZygiMXgiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3Ry
aW5nKCIxeCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLX0KLQogVEVTVChX
VEYsIFN0cmluZ1RvRG91YmxlKQogewogICAgIGJvb2wgb2sgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCmluZGV4IGNkNzNjMWIwYTQyMTdiMTc5MTMzMjExMTk1NTZlNDY0MDdmZjgy
YTAuLjdjNGQxZTU0ZGI3NWM5Mjg2MTA4NDYxMzU4MTc2ZDg1NGY3MmMzM2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBz
dGF0aWMgYm9vbCBkb25lOwpAQCAtMTYwMSw4ICsxNjAyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBSYW5nZXMpCiAKICAgICAgICAgYXV0byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVzdFJh
bmdlU3RyaW5nLnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBi
ZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpOwogICAgICAgICBhdXRvIHJhbmdlRW5kU3RyaW5n
ID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEp
OwotICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSByYW5nZUJlZ2luU3RyaW5nLnRvVUludDY0U3Ry
aWN0KCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBb
dmlkZW9EYXRhIGxlbmd0aF0gOiByYW5nZUVuZFN0cmluZy50b1VJbnQ2NFN0cmljdCgpOworICAg
ICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVnaW5T
dHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmlu
ZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJh
bmdlRW5kU3RyaW5nKS52YWx1ZU9yKDApOwogCiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHN0YXR1c0NvZGU6MjA2IEhUVFBWZXJzaW9u
OkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAewogICAgICAgICAgICAgQCJDb250ZW50LVJhbmdl
IiA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYnl0ZXMgJWxsdS0lbGx1LyVsdSIsIHJh
bmdlQmVnaW4sIHJhbmdlRW5kLCAodW5zaWduZWQgbG9uZylbdmlkZW9EYXRhIGxlbmd0aF1dLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmZGM1ZDZjYWNlNjg0
N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5M2M4Li42NTJiN2ZmZjFlZmVkZWNhMDBjMWZjYmJlYWM0
ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpA
QCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlw
dE1lc3NhZ2U7CkBAIC03NzAsOCArNzcxLDggQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAg
ICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QuZmluZCgnXHInLCBkYXNoKTsKICAgICAgICAg
ICAgIEFTU0VSVChlbmQgIT0gbm90Rm91bmQpOwogCi0gICAgICAgICAgICBhdXRvIHJhbmdlQmVn
aW4gPSAqcmVxdWVzdC5zdWJzdHJpbmcoYmVnaW4gKyByYW5nZUJ5dGVzLmxlbmd0aCgpLCBkYXNo
IC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKS50b1VJbnQ2NFN0cmljdCgpOwotICAgICAg
ICAgICAgYXV0byByYW5nZUVuZCA9ICpyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0g
ZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlQmVnaW4g
PSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJlcXVlc3Quc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VC
eXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSkpLnZhbHVl
KCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRW5kID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pihy
ZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpKS52YWx1ZSgpOwogCiAg
ICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VIZWFkZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENv
bnRlbnRcclxuIgo=
</data>
<flag name="commit-queue"
          id="449211"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428312</attachid>
            <date>2021-05-11 14:45:47 -0700</date>
            <delta_ts>2021-05-11 16:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210511144546.patch</filename>
            <type>text/plain</type>
            <size>51914</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4OTkxMjgzMTBlZDE0MzIzZjgyOWFi
ZWFkM2FkOWUwYjExMWNhNGEuLjUzNGNlMjQ1YzZjMTkzYzZiMzhhYTVlM2M0MWVmNTg5NTNmMzlk
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21TdHJpbmcuaDogRGVsZXRlZCBBdG9tU3RyaW5nOjp0b0ludC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjp0b0ludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRv
VUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQ2NFN0cmlj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50UHRyU3RyaWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b1VJbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0b0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
dG9VSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0cik6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBEZWxldGVkIHRoZSBh
Ym92ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252
ZXJzaW9uLmg6IFJlbW92ZWQgdG9JbnRlZ3JhbFR5cGUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VVSW50MTYpOiBEZWxldGVkLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBEZWxldGVkIFN0cmluZ1ZpZXc6OnRvSW50
LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdCwgU3RyaW5nVmlldzo6dG9VSW50NjRT
dHJpY3QsCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvSW50NjRTdHJpY3QsIGFuZCBwYXJzZVVJbnQx
Ni4gQ2hhbmdlZCB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgdGhhdCB0YWtlcyBhIGNvbnN0IGNo
YXIqIHRvIHdvcmsgd2hlbiBwYXNzZWQgbnVsbHB0ci4gU3RyaW5nVmlldyBoYXMKKyAgICAgICAg
YSBudWxsIHZhbHVlLCBhbmQgY29udmVydGluZyBhIG51bGwgY29uc3QgY2hhciogc2hvdWxkIHBy
b2R1Y2UgdGhhdC4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZzo6dG9JbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnRvVUludFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZzo6dG9JbnQ2NFN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmlu
Zzo6dG9VSW50NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6
OnRvSW50UHRyU3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0
b0ludCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9VSW50IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0ludDY0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b1VJbnQ2NCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZzo6dG9JbnRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpj
aGFyYWN0ZXJzVG9JbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRT
dHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9VSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvSW50NjQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEZWxldGVkIHRoZSBhYm92ZSBmdW5jdGlvbnMu
CisKIDIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIG1hY09TIFJlbGVhc2Ugd2syIF0gaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJl
Y29yZHMtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBpcyBmbGFreSBjcmFzaGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc1MjlhY2MzYzFiYmVhZDhkOTk0ZjIxNjU4MzBmNjZiNmY0NTRlOTEuLmQyYzQ1MTc1N2Mw
OWI5Y2Y4Y2QwNTc1YTUxOTYzMmYzYTZhZjNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0wNS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbik6IFVz
ZQorICAgICAgICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvVUludC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Y2hlY2tlZFN0cmlu
Z09mZnNldEF0IGNvbnN0KTogRml4IGNvZGUgdGhhdCB3YXMKKyAgICAgICAgYXNzdW1pbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgd2FzIHNpZ25lZCB0byBjb21waWxlIHdpdGhvdXQgYSB3YXJu
aW5nCisgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCdzIHNpZ25lZCBvciB1bnNpZ25l
ZC4gVGhpcyB3YXMgbWFraW5nIEdUSworICAgICAgICBidWlsZHMgaGF2ZSB0b25zIGFuZCB0b25z
IG9mIHdhcm5pbmdzLCB3aGljaCB3YXMgZGlzdHJhY3Rpbmcgd2hpbGUKKyAgICAgICAgd29ya2lu
ZyBvbiB0aGUgb3RoZXIgZml4ZXMgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NC4KKwogMjAyMS0wNS0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gcmVzdHJpY3QgbmV0d29ya2lu
ZyB0byBhIHNldCBvZiBob3N0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NzNmYWQzN2Q3ZDlmYjE4MzBkMGJkYWFj
NTdkNDczM2I5M2I1ZTRjLi4yOGZiMTg1YjdmYjJhZDA4MzZkY2ZmZjQ2OGQzN2JmOTQxN2FlN2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTExICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5
IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUpOiBV
c2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+IGlu
c3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTY3JpcHRNZXNzYWdlQ2xpZW50OjpkaWRQb3N0TWVzc2FnZSk6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKTogVXNlCisgICAgICAgIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PiBpbnN0ZWFkIG9mIFN0cmluZ1ZpZXc6OnRv
VUludDY0LgorICAgICAgICBUaGlzIGlzIGEgMTYtYml0IHBvcnQgbnVtYmVyLCBzbyBub3QgdmFs
dWFibGUgdG8gcGFyc2UgbGFyZ2VyIGludGVnZXJzLgorCiAyMDIxLTA1LTExICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBy
ZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCmluZGV4IDVhYTE2YjBiNzQ4YjE5ODMyMTJjZjU2Y2Q2OWYyY2Y3NzhiZGNmZmIuLjMzYjBl
NTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
IAotICAgIGludCB0b0ludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLnRvSW50KG9rKTsgfQogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxwdHIp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRvRmxv
YXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9r
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4N2M5NjNhMzUxN2Y5M2Ux
MWVlZWFjZWEwMDg4ZjZiYzFiMzk2YjQ1Li43ZDNmMzQ2MzFhYzhlNzk3NWU5ZjQ0ODczNTUzY2Vm
MWVkNzhkMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTgxMSw3NiArODEx
LDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24gaXNXaGl0ZVNwYWMKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2lt
cGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlzV2hpdGVTcGFjZSk7CiB9CiAK
LWludCBTdHJpbmdJbXBsOjp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5zaWdu
ZWQgU3RyaW5nSW1wbDo6dG9VSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICBp
ZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJ
bnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWludDY0
X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc1Rv
SW50NjRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVp
bnQ2NF90IFN0cmluZ0ltcGw6OnRvVUludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsK
LSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRTdHJp
Y3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFj
dGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2UpOwot
fQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50IGJh
c2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJu
IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotaW50IFN0cmluZ0ltcGw6OnRvSW50KGJvb2wqIG9rKQotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCks
IG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludChib29sKiBv
aykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJ
bnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5nSW1w
bDo6dG9JbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0K
LQotdWludDY0X3QgU3RyaW5nSW1wbDo6dG9VSW50NjQoYm9vbCogb2spCi17Ci0gICAgaWYgKGlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0ZXJz
MTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6dG9JbnRQdHIo
Ym9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c1RvSW50UHRyKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJh
Y3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQogZG91Ymxl
IFN0cmluZ0ltcGw6OnRvRG91YmxlKGJvb2wqIG9rKQogewogICAgIGlmIChpczhCaXQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYWZkZDNlMDE3ZDRjOThiMzY3YzNhNzk0NjRiNWUy
MzRhOWFiMmRlZS4uMDJhNWRhZDI3M2JjYjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTM5MiwxOCArMzkyLDYgQEAgcHVibGljOgogICAg
IFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVk
KTsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0g
MTApOwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9v
bCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCi0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQotICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29s
KiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnRwdHJf
dCB0b0ludFB0cihib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLQogICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVz
ZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAg
ICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRo
ZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQg
YmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaAppbmRleCBmMGIzZWVmNDE5NWEzMjBiZWMyNTA2Yjc0ZGM5ODU3ZWQ0YmQ4
MzA3Li4wOWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtMTEwLDM1
ICsxMTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPEludGVn
cmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbAogICAgIHJldHVybiBwYXJzZUludGVn
ZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwg
YmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5OjpBbGxvdyk7CiB9CiAKLS8vIEZJWE1FOiBEZXByZWNh
dGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBhbGwg
Y2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUs
IHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBl
KGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywgYm9vbCogb2ssIGludCBiYXNl
ID0gMTApCi17Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihz
dHJpbmdWaWV3LCBiYXNlKTsKLSAgICBpZiAob2spCi0gICAgICAgICpvayA9IHJlc3VsdC5oYXNW
YWx1ZSgpOwotICAgIHJldHVybiByZXN1bHQudmFsdWVPcigwKTsKLX0KLQotLy8gRklYTUU6IERl
cHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBtb3Zl
IGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBl
KGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPEludGVncmFsVHlwZT4o
U3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBvaywgYmFzZSk7Ci19Ci0KLS8vIEZJWE1FOiBE
ZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92
ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3Jh
bFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gT3B0aW9uYWw8SW50ZWdyYWxUeXBl
PiB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIGlu
dCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0
cmluZ1ZpZXcsIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRvSW50
ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFyc2VJ
bnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGJhc2UgPSAxMCkKLXsKLSAgICBy
ZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0
aCB9LCBiYXNlKTsKLX0KLQogfQogCiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlcjsKIHVzaW5nIFdU
Rjo6cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms7Ci11c2luZyBXVEY6OnRvSW50ZWdy
YWxUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggODBmODBjYjc3N2ZkZTM3
ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQxMy4uM2NiMDE4M2M4MDExYWQ4ZGE4MmMwZTk0MmI3Njkz
ODk4MWJkM2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMTEsMTcgKzMx
MSw2IEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJl
dHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0KIAotLy8gRklYTUU6IFNob3VsZCB0aGlz
IGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFkPwotLy8gRklYTUU6IFNob3Vs
ZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHls
ZT8KLU9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKLXsK
LSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1
aW50MTZfdD4oc3RyaW5nLCAmb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQogYm9vbCBlcXVhbFJlc3BlY3RpbmdO
dWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQogewogICAgIGlmIChhLm1fY2hhcmFj
dGVycyA9PSBiLm1fY2hhcmFjdGVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBh
M2Y1YjExNTgyYTYyZGJlZWY3MmMxZDhhMGU3MDFhYWJhNGMxMWU0Li5mZWZjNDgyNjAwYjA5MWMy
ZjhhZjU5MzY1ZmMyNTZiNWViZTY0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAt
MTY4LDExICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5k
c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Owog
Ci0gICAgaW50IHRvSW50KCkgY29uc3Q7Ci0gICAgaW50IHRvSW50KGJvb2wmIGlzVmFsaWQpIGNv
bnN0OwotICAgIGludCB0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ2
NF90PiB0b0ludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1Zh
bGlkKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1w
bCYpOwpAQCAtMjQ2LDggKzI0MSw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOwot
CiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zNTIsNyArMzQ1LDcg
QEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciogY2hhcmFjdGVycykKIHsKLSAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVuKGNoYXJhY3RlcnMpKTsKKyAgICBpbml0aWFs
aXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVy
cyA/IHN0cmxlbihjaGFyYWN0ZXJzKSA6IDApOwogfQogCiBpbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01ODgs
NDAgKzU4MSw2IEBAIGlubGluZSBmbG9hdCBTdHJpbmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KCkg
Y29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgcmV0dXJuIHRvSW50KGlzVmFsaWQpOwot
fQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGludCBT
dHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0ZXJz
OCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJp
Y3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBPcHRp
b25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAotewotICAg
IGJvb2wgaXNWYWxpZDsKLSAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQp
OwotICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxv
cHQ7Ci19Ci0KLWlubGluZSBPcHRpb25hbDxpbnQ2NF90PiBTdHJpbmdWaWV3Ojp0b0ludDY0U3Ry
aWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgaW50NjRfdCByZXN1bHQgPSBp
czhCaXQoKSA/IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
LCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25hbChyZXN1
bHQpIDogV1RGOjpudWxsb3B0OwotfQotCiBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAppbmRleCAxZWRiYzgzYWMzY2FlZjUxZTAwNjRhNzdjYmQ2ZmEyNzFh
ZGUzMDcwLi4yNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00OTIsMTA2ICs0OTIsNiBAQCBTdHJpbmcgU3RyaW5n
OjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoZG91YmxlIG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKICAgICByZXR1cm4gbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwgZGVj
aW1hbFBsYWNlcywgYnVmZmVyKTsKIH0KIAotaW50IFN0cmluZzo6dG9JbnRTdHJpY3QoYm9vbCog
b2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChv
aykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIG1faW1wbC0+dG9JbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBT
dHJpbmc6OnRvVUludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnRTdHJpY3Qo
b2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NFN0cmljdChib29sKiBvaywg
aW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQot
ICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBy
ZXR1cm4gbV9pbXBsLT50b0ludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgU3Ry
aW5nOjp0b1VJbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQ2NFN0cmlj
dChvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHJTdHJpY3QoYm9vbCog
b2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlmIChv
aykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHJTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQgU3Ry
aW5nOjp0b0ludChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAg
ICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50KG9rKTsKLX0KLQotdW5zaWduZWQgU3RyaW5n
Ojp0b1VJbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAg
aWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQob2spOwotfQotCi1pbnQ2NF90IFN0cmluZzo6
dG9JbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBp
ZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjQob2spOwotfQotCi11aW50NjRfdCBTdHJpbmc6
OnRvVUludDY0KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAg
IGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50NjQob2spOwotfQotCi1pbnRwdHJfdCBTdHJp
bmc6OnRvSW50UHRyKGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAg
ICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHIob2spOwotfQotCiBkb3VibGUgU3Ry
aW5nOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkgewpAQCAt
ODkyLDEyOSArNzkyLDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbUNvZGVQb2ludChVQ2hhcjMyIGNv
ZGVQb2ludCkKIH0KIAogLy8gU3RyaW5nIE9wZXJhdGlvbnMKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
KGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90
IGkgPSAwOwotCi0gICAgLy8gQWxsb3cgbGVhZGluZyBzcGFjZXMuCi0gICAgZm9yICg7IGkgIT0g
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0pKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIC8vIEFsbG93IHNpZ24uCi0gICAg
aWYgKGkgIT0gbGVuZ3RoICYmIChkYXRhW2ldID09ICcrJyB8fCBkYXRhW2ldID09ICctJykpCi0g
ICAgICAgICsraTsKLSAgICAKLSAgICAvLyBBbGxvdyBkaWdpdHMuCi0gICAgZm9yICg7IGkgIT0g
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gaTsKLX0KLQotaW50IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0
aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5z
aWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywg
aW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBs
ZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVp
bnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3Ry
aWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2Up
Ci17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9r
LCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0K
LQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQot
Ci1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBi
b29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhP
ZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5zaWdu
ZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9v
bCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Ci19
Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFy
YWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
KQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1p
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxp
bnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwotfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBU
cmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgogc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVU
eXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBz
aXplX3QmIHBhcnNlZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZlNTRhZjM4
ODRkYjcyZWMyODhlYTc4N2ZkMTVkZjAyZDkxZWFiZWUuLjk3NmZkYzEzOGNjN2YwOTM0NmM3ZGRk
MDNhZTE1MGFmZjhmNDc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDIsMzEgKzQy
LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0
aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0
X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3Qg
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNo
YXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmlj
dChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotV1RGX0VYUE9SVF9QUklW
QVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRF
IGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVs
bHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFjdGVyc1Rv
VUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBjaGFy
YWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsg
Ly8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJh
aWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQotLy8gRklY
TUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9y
ICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gTGlrZSB0aGUgbm9uLXN0
cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBp
cyB0cmFpbGluZyBnYXJiYWdlLgotLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUg
bW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogV1RGX0VY
UE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKQEAgLTI4MSwyMSArMjU2LDYgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1w
dHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0cmlj
dChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQg
YmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0
U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90
IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7
Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0cikg
Y29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9
IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjQo
Ym9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0
X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLQotICAg
IC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZh
bHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLSAgICAvLyBMaWtl
IHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3
aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVy
IGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBp
bnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChi
b29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCkBAIC02ODAsMTYgKzY0MCw2IEBAIHVzaW5nIFdU
Rjo6U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7CiB1c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb0RvdWJsZTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxvYXQ7Ci11c2luZyBXVEY6OmNo
YXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHI7
Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7Ci11c2luZyBX
VEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUlu
dDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmljdDsKIHVzaW5nIFdURjo6ZW1wdHlT
dHJpbmc7CiB1c2luZyBXVEY6Om51bGxTdHJpbmc7CiB1c2luZyBXVEY6OmVxdWFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMTZjNjdh
MDA1NTM3MGYxMDM2YWUyNzMzYTUwNTJkMjI4YTYzMGU5OS4uY2U3YTQzOWUyZDFiMWVjNmY0M2Jh
MTkxNmVkNjE5OTlmOWE1ODk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSw4ICsxOSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykKKwogI2luY2x1ZGUgIkdMQ29u
dGV4dC5oIgorCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYgVVNFKEVHTCkKICNpbmNs
dWRlICJHTENvbnRleHRFR0wuaCIKQEAgLTE4Myw3ICsxODYsOCBAQCB1bnNpZ25lZCBHTENvbnRl
eHQ6OnZlcnNpb24oKQogICAgICAgICAgICAgdmVyc2lvbkRpZ2l0cyA9IHZlcnNpb25TdHJpbmdD
b21wb25lbnRzWzBdLnNwbGl0KCcuJyk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3ZlcnNpb24g
PSB2ZXJzaW9uRGlnaXRzWzBdLnRvVUludCgpICogMTAwICsgdmVyc2lvbkRpZ2l0c1sxXS50b1VJ
bnQoKSAqIDEwOworICAgICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVPcigwKSAqIDEwMAorICAg
ICAgICAgICAgKyBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVy
c2lvbkRpZ2l0c1sxXSkudmFsdWVPcigwKSAqIDEwOwogICAgIH0KICAgICByZXR1cm4gbV92ZXJz
aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKaW5kZXggOWFkMTljN2E0ZjU0MjYwZTFhMDg5YmUwMTg4YjkyZTIwYmU0ODk2Yi4uNDVjYWE3
ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09m
ZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CiAgICAg
ewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4KTsK
LSAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkg
Pj0gc3RyaW5nTGVuZ3RoKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2ln
bmVkX3Q8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCBjMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4YzJlLi45M2IxYWI2MWQyN2Ri
Mzc0ZWNjMmVjNDVjNjg2YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAyNSwxMCArMTAyNSw4IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uCiAgICAgLy8gUGFjayByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBodHRwLWhlYWRl
cnMgc3RydWN0dXJlLgogICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHko
InJlc3BvbnNlLWhlYWRlcnMiKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAg
ICAgICB1aW50NjRfdCBjb252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52YWx1ZS50b1VJbnQ2NCgmb2sp
OwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChoZWFkZXJz
LmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQsIGNvbnZlcnRl
ZFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkVmFsdWUgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oaGVhZGVyLnZhbHVlKSkKKyAg
ICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXkudXRm
OCgpLmRhdGEoKSwgR19UWVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5nZXQoKSwg
aGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5HLCBoZWFkZXIudmFsdWUudXRm
OCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKaW5kZXggZTdlZmQzNDkwNWVkYWRk
ZDYzY2NhOGIxYjYyMWM4MTI2N2VhMmFiZC4uZGJlMGQwM2M5MjE5MGViMGJjMjllYjY2YzQ3NTNh
MGFhOWMwYjQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFy
eVByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxp
YXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0yOCwyMCArMjgsMTggQEAKIAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0V4ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAg
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJn
YykgewotICAgICAgICAgICAgU3RyaW5nIHN0cihhcmd2WysraV0pOwotICAgICAgICAgICAgbV9w
YXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+
KHN0ci50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICIt
cHJvY2Vzc0lkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyBzdHIoYXJndlsrK2ldKTsKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlw
ZT4oc3RyLnRvVUludDY0KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwg
Ii1jb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCisgICAgICAgIGlmICghc3RyY21wKGFyZ3Zb
aV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIG1f
cGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExF
PihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52
YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXByb2Nlc3NJ
ZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQorICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLnBy
b2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXJUeXBlPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
YXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ld
LCAiLWNvbmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKSkKICAgICAgICAgICAgIEpTQzo6Q29uZmln
Ojpjb25maWd1cmVGb3JUZXN0aW5nKCk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltp
XSwgIi1kaXNhYmxlLWppdCIpKQogICAgICAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
OjpzZXRKSVRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAppbmRleCBlMDBjMjFlMDE4YjBkMDg2NzJhM2VjNWFmYzA4ZjE3OGZkOWZh
N2IyLi4wOWY3NjIzYmYyZGI0ZWQ5OWRhYjU3ZTM3M2U2ODQxMWQzNmRhYmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2FkU3Rh
dGUoKS51cmwoKSk7Ci0gICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3Qo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFd
LnRvVUludDY0KCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzFdKS52YWx1ZU9yKDApLCB0
b2tlbnNbMl0pOwogICAgIH0KIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApp
bmRleCBhZmM3MGYyMTM5YmYzYjVlNTkyZmEyOWQ2Y2EwMDQyM2E0MGNjYTEyLi5lNGU5Njc0M2Y3
NzU1MmE2NzMzZDRmNWQ2ZTQyZDI4M2M0OTVmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBVUkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFn
ZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKLSAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJbnRT
dHJpY3QoKSwgdG9rZW5zWzFdLnRvVUludFN0cmljdCgpLCB0b2tlbnNbMl0pOworICAgICAgICBt
X2luc3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQo
KSwgcGFyc2VJbnRlZ2VyPGludD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUludGVnZXI8
aW50Pih0b2tlbnNbMV0pLnZhbHVlT3IoMCksIHRva2Vuc1syXSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IDE4ZjllOTM5MzI3OTNi
N2MzZTQ0ZTYzNDZiZTBmMTNlZDZkYmYyMzMuLmE4NmIzNGRkYWE4ZjcxNWUxYzk0N2I4OTQzY2Vm
ZDkyMTM5YzQxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQ
cm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NQb29sV2luLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUJ1bmRsZVdpbi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTYxLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3Bl
Y3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gaG9zdCA9IGFkZHJlc3Muc3Vic3RyaW5nKDAsIHBvcyk7Ci0gICAgYXV0byBwb3J0ID0gYWRk
cmVzcy5zdWJzdHJpbmcocG9zICsgMSkudG9VSW50NjRTdHJpY3QoKTsKKyAgICBhdXRvIHBvcnQg
PSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGFkZHJlc3Muc3Vic3RyaW5nKHBvcyArIDEpKTsKICAg
ICBpZiAoIXBvcnQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI0OGFjNjBmZGZkYWNmNGYwZTFjYTczN2E1OTA0
OWQzNTYwNDY3OGIuLjAxOTUwOTY4NDJiZjJlYTY4YWJjN2RkZjRiNjAwZTY3YmVjNWYzZWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAyMS0wNS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHRoZSBTdHJpbmc6OnRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dDogQWRkZWQgU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IERpdHRvLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICBDb250YWlucyB0ZXN0cyBt
b3ZlZCBhbmQgYWRhcHRlZCBmcm9tIHRoZSBmaWxlcyBiZWxvdyBzbyB3ZSBkb24ndAorICAgICAg
ICBsb3NlIHRlc3QgY292ZXJhZ2UuIFdlIGFuZCBhbmQgc2hvdWxkIGFkZCBtYW55IG1vcmUgdGVz
dHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcDog
UmVtb3ZlZCB0ZXN0cyBmb3IgcGFyc2VVSW50MTYKKyAgICAgICAgYW5kIFN0cmluZ1ZpZXc6OnRv
SW50U3RyaWN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5n
LmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgU3RyaW5nOjp0b0ludC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06IFVzZQor
ICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+IGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9V
SW50NjRTdHJpY3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06IERpdHRvLgorCiAyMDIxLTA1LTExICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQ
SSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAppbmRleCA1N2Y5ZjY1N2MyMDkzOWJiNTM1MGZlMDhiMDQ4ODc4YzcyYmJj
MThmLi5lNDRjYjRiYjczMmUwNjU3YjUwZGRkNzg5YmZkZDk0NzE0MTk5YTI0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTkzLDYgKzkzLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNF
UwogICAgIFRlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdPcGVy
YXRvcnMuY3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1BhcnNpbmdCdWZmZXIuY3BwCisgICAgVGVz
dHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwCiAgICAgVGVzdHMvV1RGL1N0cmlu
Z1ZpZXcuY3BwCiAgICAgVGVzdHMvV1RGL1N5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwCiAgICAg
VGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYzExN2IyNGQ5MjcyMmZlOTA2YzdlZTRmZTkwYjljN2VjOTA3YzI5Li43YTdiNWYyMGU2NzAx
ZWFjZDk0NTZjMTUwNjNiOTUxZGMzYjQ2OGFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODMxLDYgKzgzMSw3IEBACiAJCTkzMUMyODFFMjJCQzU3OUEwMDFEOThDNCAvKiBvcGVuZGF0YWJh
c2UtYWx3YXlzLWV4aXN0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUMyODFCMjJCQzU1ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJh
c2UtYWx3YXlzLWV4aXN0cy5odG1sICovOyB9OwogCQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcg
LyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJh
dG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3MTA0NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBmb2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsK
KwkJOTMzMkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMkVG
OTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwICovOyB9
OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNE
NiAvKiBIYXNoZXIuY3BwICovOyB9OwogCQk5MzQyNTg5QzI1NUI2MDlCMDA1OUVFREQgLyogU3Bl
ZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0g
Ki87IH07CiAJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11
c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyog
c3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi87IH07
CkBAIC0yNTEyLDYgKzI1MTMsNyBAQAogCQk5MzFDMjgxQzIyQkM1NUE3MDAxRDk4QzQgLyogV2Vi
U1FMQmFzaWNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
U1FMQmFzaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzI5QUEyODFERTNG
ODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90SGFuZGxlS2V5
RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWROb3RIYW5k
bGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMkVGOTMyNjQ5
QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAv
KiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0MjU4OUIyNTVCNjA5QTAwNTlF
RUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2Vy
LXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDY0LDYgKzQ0NjYsNyBAQAogCQkJCTI2RjFC
NDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQlDMDEzNjNDNzEz
QzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCAqLywKIAkJCQk3Q0Q3MEM0RTI0
QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1ZmZlci5jcHAgKi8sCisJCQkJOTMzMkVG
OTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwICovLAog
CQkJCTdDNzRENDJEMTg4MjI4RjMwMEU1RUQ1NyAvKiBTdHJpbmdWaWV3LmNwcCAqLywKIAkJCQk1
NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi8s
CiAJCQkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAq
LywKQEAgLTUyMjAsNiArNTIyMyw3IEBACiAJCQkJN0M4M0RGMzcxRDBBNTkwQzAwRkVCQ0YzIC8q
IFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMzgxRDBBNTkwQzAwRkVC
Q0YzIC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q3MEM0RjI0
QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzQTFEMEE1OTBDMDBGRUJDRjMgLyogU3Ry
aW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEg
LyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY0
MDFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGM2YzllOWZiY2Y5ZGZlNDk4YjU1NjBl
ODc1ZTdjZWEwZDFjN2RlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChXVEYsIFBhcnNlSW50ZWdlcikKK3sKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXI8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cikpKTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiIikpOworICAgIEVY
UEVDVF9FUSgwLCBwYXJzZUludGVnZXI8aW50PigiMCIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFy
c2VJbnRlZ2VyPGludD4oIjEiKSk7CisgICAgRVhQRUNUX0VRKDMsIHBhcnNlSW50ZWdlcjxpbnQ+
KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJbnRlZ2VyPGludD4oIi0zIikpOworICAg
IEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIjEyMzQ1IikpOworICAgIEVYUEVD
VF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMTIzNDUiKSk7CisgICAgRVhQRUNUX0VR
KDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+KCIyMTQ3NDgzNjQ3IikpOworICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIyMTQ3NDgzNjQ4IikpOworICAg
IEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0
OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiLTIx
NDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGlu
dD4oIngxIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXI8aW50PigiIDEiKSk7Cisg
ICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjF4IikpOworCisg
ICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIwIikpOworICAg
IEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2VyPHVpbnQxNl90PigiMyIpKTsKKyAgICBF
WFBFQ1RfRVEoMTIzNDVVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIxMjM0NSIpKTsK
KyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUz
NSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+
KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2
X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWlu
dDE2X3Q+KCI2NTUzNiIpKTsKK30KKworVEVTVChXVEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rKQoreworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIp
KSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8aW50PigiIikpOworICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIwIikpOworICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxIikpOworICAgIEVYUEVDVF9FUSgzLCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTMiKSk7CisgICAgRVhQRUNU
X0VRKDEyMzQ1LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxMjM0NSIp
KTsKKyAgICBFWFBFQ1RfRVEoLTEyMzQ1LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KCItMTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjIxNDc0ODM2NDciKSk7CisgICAgRVhQRUNUX0VR
KFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0
NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEo
V1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0
NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjF4IikpOworCisgICAgRVhQRUNU
X0VRKDBVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4o
IjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oIjMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBF
WFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
aW50MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTEiKSk7CisgICAgRVhQRUNUX0VR
KFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+
KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcu
Y3BwCmluZGV4IDQ0YTJkZTMwMTE0ZTk3MjE1MTk1ODdhMGY2ZTMyNzNlNGU5ZGViYmEuLjg0ZWM1
ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFmMDdmNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC05OTAsMzcgKzk5MCw0IEBAIFRFU1Qo
V1RGLCBTdHJpbmdWaWV3SXNBbGxBU0NJSSkKICAgICBFWFBFQ1RfVFJVRShTdHJpbmdWaWV3KFN0
cmluZyhiaXR3aXNlX2Nhc3Q8Y29uc3QgVUNoYXIqPih1IkhlbGxvIikpKS5pc0FsbEFTQ0lJKCkp
OwogfQogCi1URVNUKFdURiwgU3RyaW5nVmlld1BhcnNlVUludDE2KQotewotICAgIEVYUEVDVF9F
USgwVSwgKldURjo6cGFyc2VVSW50MTYoIjAiKSk7Ci0gICAgRVhQRUNUX0VRKDNVLCAqV1RGOjpw
YXJzZVVJbnQxNigiMyIpKTsKLSAgICBFWFBFQ1RfRVEoMTIzNDVVLCAqV1RGOjpwYXJzZVVJbnQx
NigiMTIzNDUiKSk7Ci0gICAgRVhQRUNUX0VRKDY1NTM1VSwgKldURjo6cGFyc2VVSW50MTYoIjY1
NTM1IikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6OnBhcnNlVUludDE2KCItMSIpKTsKLSAgICBF
WFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigiLTMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdU
Rjo6cGFyc2VVSW50MTYoIjY1NTM2IikpOwotfQotCi1URVNUKFdURiwgU3RyaW5nVmlld1RvSW50
U3RyaWN0KQotewotICAgIGF1dG8gdGVzdCA9IFtdKEFTQ0lJTGl0ZXJhbCBzdHJpbmcpIHsKLSAg
ICAgICAgYm9vbCBpc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGludCByZXN1bHQgPSBTdHJpbmdW
aWV3KHN0cmluZykudG9JbnRTdHJpY3QoaXNWYWxpZCk7Ci0gICAgICAgIHJldHVybiBpc1ZhbGlk
ID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBFWFBF
Q1RfRVEoMCwgKnRlc3QoIjAiX3MpKTsKLSAgICBFWFBFQ1RfRVEoMywgKnRlc3QoIjMiX3MpKTsK
LSAgICBFWFBFQ1RfRVEoLTMsICp0ZXN0KCItMyJfcykpOwotICAgIEVYUEVDVF9FUSgxMjM0NSwg
KnRlc3QoIjEyMzQ1Il9zKSk7Ci0gICAgRVhQRUNUX0VRKC0xMjM0NSwgKnRlc3QoIi0xMjM0NSJf
cykpOwotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpID09IDIxNDc0ODM2
NDcpIHsKLSAgICAgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsICp0ZXN0KCIyMTQ3NDgzNjQ3Il9z
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCIyMTQ3NDgzNjQ4Il9zKSk7Ci0gICAgfQot
ICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpID09IC0yMTQ3NDgzNjQ4KSB7
Ci0gICAgICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0OCwgKnRlc3QoIi0yMTQ3NDgzNjQ4Il9zKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCItMjE0NzQ4MzY0OSJfcykpOwotICAgIH0KLX0K
LQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggODA4YTY0MzQ0MGQxNTAwYmI4ZThlOTIzZDQ4ZWE1
YjQxMWRhMTIzNS4uMGUwZTljN2Y4ODdmM2VhZjdjNDc3NWEwMTRmMWU2Y2NhOGQ0MTBmMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCkBAIC0yODcsNTgg
KzI4Nyw2IEBAIFRFU1QoV1RGLCBTdHJpbmdJc29sYXRlZENvcHkpCiAgICAgRVhQRUNUX0ZBTFNF
KG9yaWdpbmFsLmltcGwoKSA9PSBjb3B5LmltcGwoKSk7CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdU
b0ludCkKLXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5n
KCkudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygpLnRvSW50KCZvaykpOwotICAg
IEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgZW1wdHlTdHJpbmcoKS50b0lu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgZW1wdHlTdHJpbmcoKS50b0ludCgmb2spKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMCIpLnRvSW50KCkp
OwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1Rf
VFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIxIikudG9JbnQoKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9r
KTsKLQotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBTdHJpbmcoIjIxNDc0ODM2NDciKS50b0lu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgU3RyaW5nKCIyMTQ3NDgzNjQ3IikudG9J
bnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIFN0cmlu
ZygiMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjIxNDc0
ODM2NDgiKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNU
X0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3NDgzNjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQ
RUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3NDgzNjQ4IikudG9JbnQoJm9rKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiLTIxNDc0ODM2
NDkiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCItMjE0NzQ4MzY0OSIpLnRv
SW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICAvLyBmYWlsIGlmIHdlIHNl
ZSBsZWFkaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJ4MSIpLnRvSW50KCkpOwot
ICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9rKTsKLQotICAgIC8vIHN1Y2NlZWQgaWYgd2Ugc2VlIGxlYWRpbmcgc3BhY2VzCi0gICAg
RVhQRUNUX0VRKDEsIFN0cmluZygiIDEiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3Ry
aW5nKCIgMSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIC8vIHNp
bGVudGx5IGlnbm9yZSB0cmFpbGluZyBqdW5rCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMXgi
KS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIxeCIpLnRvSW50KCZvaykpOwot
ICAgIEVYUEVDVF9UUlVFKG9rKTsKLX0KLQogVEVTVChXVEYsIFN0cmluZ1RvRG91YmxlKQogewog
ICAgIGJvb2wgb2sgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCmluZGV4IGNkNzNj
MWIwYTQyMTdiMTc5MTMzMjExMTk1NTZlNDY0MDdmZjgyYTAuLjdjNGQxZTU0ZGI3NWM5Mjg2MTA4
NDYxMzU4MTc2ZDg1NGY3MmMzM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtNTAs
NiArNTAsNyBAQAogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBkb25lOwpAQCAtMTYw
MSw4ICsxNjAyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAg
YXV0byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdp
biArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3Ro
KCkpOwogICAgICAgICBhdXRvIHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1
YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVn
aW4gPSByYW5nZUJlZ2luU3RyaW5nLnRvVUludDY0U3RyaWN0KCk7Ci0gICAgICAgIGF1dG8gcmFu
Z2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiByYW5n
ZUVuZFN0cmluZy50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBw
YXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlT3IoMCk7CisgICAg
ICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxl
bmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1ZU9yKDAp
OwogCiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQu
b3JnLyJdIHN0YXR1c0NvZGU6MjA2IEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxk
czpAewogICAgICAgICAgICAgQCJDb250ZW50LVJhbmdlIiA6IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiYnl0ZXMgJWxsdS0lbGx1LyVsdSIsIHJhbmdlQmVnaW4sIHJhbmdlRW5kLCAodW5z
aWduZWQgbG9uZylbdmlkZW9EYXRhIGxlbmd0aF1dLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQppbmRleCBmZGM1ZDZjYWNlNjg0N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5
M2M4Li42NTJiN2ZmZjFlZmVkZWNhMDBjMWZjYmJlYWM0ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3
dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CkBAIC03NzAsOCArNzcx
LDggQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBhdXRvIGVuZCA9IHJl
cXVlc3QuZmluZCgnXHInLCBkYXNoKTsKICAgICAgICAgICAgIEFTU0VSVChlbmQgIT0gbm90Rm91
bmQpOwogCi0gICAgICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSAqcmVxdWVzdC5zdWJzdHJpbmco
YmVnaW4gKyByYW5nZUJ5dGVzLmxlbmd0aCgpLCBkYXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxl
bmd0aCgpKS50b1VJbnQ2NFN0cmljdCgpOwotICAgICAgICAgICAgYXV0byByYW5nZUVuZCA9ICpy
ZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0
KCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHJlcXVlc3Quc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJl
Z2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSkpLnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHJh
bmdlRW5kID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsg
MSwgZW5kIC0gZGFzaCAtIDEpKS52YWx1ZSgpOwogCiAgICAgICAgICAgICBOU1N0cmluZyAqcmVz
cG9uc2VIZWFkZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAg
ICAgICAgICBAIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgo=
</data>
<flag name="review"
          id="449210"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="449224"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428332</attachid>
            <date>2021-05-11 18:15:33 -0700</date>
            <delta_ts>2021-05-11 18:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225599-20210511181532.patch</filename>
            <type>text/plain</type>
            <size>52112</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4OTkxMjgzMTBlZDE0MzIzZjgyOWFi
ZWFkM2FkOWUwYjExMWNhNGEuLmQ3NjY3MmMwMjM0YTQ1ZDYyYzE5Nzg4YWRlNDUxZmVkNzVjZTU4
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6IERlbGV0ZWQgQXRvbVN0cmluZzo6dG9JbnQuCisK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6dG9JbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0
b1VJbnRTdHJpY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludDY0
U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9VSW50NjRTdHJp
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0ludFB0clN0cmljdCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvSW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9VSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6dG9JbnQ2NCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OnRvVUludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dG9JbnRQdHIp
OiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDogRGVsZXRlZCB0aGUg
YWJvdmUgZnVuY3Rpb25zLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oOiBSZW1vdmVkIHRvSW50ZWdyYWxUeXBlLgorCisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OnBhcnNlVUludDE2KTogRGVsZXRlZC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogRGVsZXRlZCBTdHJpbmdWaWV3Ojp0b0lu
dCwKKyAgICAgICAgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QsIFN0cmluZ1ZpZXc6OnRvVUludDY0
U3RyaWN0LAorICAgICAgICBTdHJpbmdWaWV3Ojp0b0ludDY0U3RyaWN0LCBhbmQgcGFyc2VVSW50
MTYuIENoYW5nZWQgdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIHRoYXQgdGFrZXMgYSBjb25zdCBj
aGFyKiB0byB3b3JrIHdoZW4gcGFzc2VkIG51bGxwdHIuIFN0cmluZ1ZpZXcgaGFzCisgICAgICAg
IGEgbnVsbCB2YWx1ZSwgYW5kIGNvbnZlcnRpbmcgYSBudWxsIGNvbnN0IGNoYXIqIHNob3VsZCBw
cm9kdWNlIHRoYXQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmc6OnRvSW50U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U3RyaW5nOjp0b1VJbnRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnRvSW50NjRTdHJpY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJp
bmc6OnRvVUludDY0U3RyaWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5n
Ojp0b0ludFB0clN0cmljdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6
dG9JbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmc6OnRvVUludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9JbnQ2NCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlN0cmluZzo6dG9VSW50NjQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OnRvSW50UHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvVUludFN0cmljdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0
U3RyaWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6Y2hhcmFjdGVyc1RvVUludCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNoYXJhY3Rl
cnNUb0ludDY0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDogRGVsZXRlZCB0aGUgYWJvdmUgZnVuY3Rpb25z
LgorCiAyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBtYWNPUyBSZWxlYXNlIHdrMiBdIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1y
ZWNvcmRzLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWwgaXMgZmxha3kgY3Jhc2hpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3NTI5YWNjM2MxYmJlYWQ4ZDk5NGYyMTY1ODMwZjY2YjZmNDU0ZTkxLi4zOWZjYzYzODcw
NmE1ODMyNmJkMTQwZjNlOGRjZmE4YWMwN2IwMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0Ojp2ZXJzaW9uKTog
VXNlCisgICAgICAgIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPiBp
bnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpjaGVja2VkU3Ry
aW5nT2Zmc2V0QXQgY29uc3QpOiBGaXggY29kZSB0aGF0IHdhcworICAgICAgICBhc3N1bWluZyBH
bHlwaEJ1ZmZlclN0cmluZ09mZnNldCB3YXMgc2lnbmVkIHRvIGNvbXBpbGUgd2l0aG91dCBhIHdh
cm5pbmcKKyAgICAgICAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3Mgc2lnbmVkIG9yIHVuc2ln
bmVkLiBUaGlzIHdhcyBtYWtpbmcgR1RLCisgICAgICAgIGJ1aWxkcyBoYXZlIHRvbnMgYW5kIHRv
bnMgb2Ygd2FybmluZ3MsIHdoaWNoIHdhcyBkaXN0cmFjdGluZyB3aGlsZQorICAgICAgICB3b3Jr
aW5nIG9uIHRoZSBvdGhlciBmaXhlcyBoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6IFVzZQorICAgICAg
ICBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4gaW5zdGVhZCBvZiBT
dHJpbmc6OnRvVUludDY0LgorCiAyMDIxLTA1LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3Jr
aW5nIHRvIGEgc2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3M2ZhZDM3ZDdkOWZiMTgzMGQwYmRh
YWM1N2Q0NzMzYjkzYjVlNGMuLmYwODM5MDIyMWU3NWE0NmQxZjY1OTlhZGU3M2MzOTRiMjdiNzMx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1p
bHkgb2YgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisK
KyAgICAgICAgKiBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUp
OiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQ2NC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JpcHRNZXNzYWdlQ2xpZW50OjpkaWRQb3N0TWVzc2FnZSk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
Ojppbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKTogVXNlCisgICAgICAgIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PiBpbnN0ZWFkIG9mIFN0cmluZ1ZpZXc6
OnRvVUludDY0LgorICAgICAgICBUaGlzIGlzIGEgMTYtYml0IHBvcnQgbnVtYmVyLCBzbyBub3Qg
dmFsdWFibGUgdG8gcGFyc2UgbGFyZ2VyIGludGVnZXJzLgorCiAyMDIxLTA1LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0
byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZy5oCmluZGV4IDVhYTE2YjBiNzQ4YjE5ODMyMTJjZjU2Y2Q2OWYyY2Y3NzhiZGNmZmIuLjMz
YjBlNTk1OGQ4Mzk1NjNhNjVlMTNkY2EyMGEyN2JmMzMxOTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25z
dDsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLnRvSW50KG9rKTsgfQogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IG51bGxw
dHIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRv
RmxvYXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0
KG9rKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4N2M5NjNhMzUxN2Y5
M2UxMWVlZWFjZWEwMDg4ZjZiYzFiMzk2YjQ1Li43ZDNmMzQ2MzFhYzhlNzk3NWU5ZjQ0ODczNTUz
Y2VmMWVkNzhkMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTgxMSw3NiAr
ODExLDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShD
b2RlVW5pdE1hdGNoRnVuY3Rpb24gaXNXaGl0ZVNwYWMKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlzV2hpdGVTcGFjZSk7CiB9
CiAKLWludCBTdHJpbmdJbXBsOjp0b0ludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0g
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNo
YXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0ludFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdW5z
aWduZWQgU3RyaW5nSW1wbDo6dG9VSW50U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAg
ICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNo
YXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLWlu
dDY0X3QgU3RyaW5nSW1wbDo6dG9JbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpCi17Ci0g
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50NjRTdHJpY3Qo
Y2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVy
c1RvSW50NjRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0K
LXVpbnQ2NF90IFN0cmluZ0ltcGw6OnRvVUludDY0U3RyaWN0KGJvb2wqIG9rLCBpbnQgYmFzZSkK
LXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9VSW50NjRT
dHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG9rLCBiYXNlKTsKLSAgICByZXR1cm4gY2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGJhc2Up
OwotfQotCi1pbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0clN0cmljdChib29sKiBvaywgaW50
IGJhc2UpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvaywgYmFzZSk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9r
LCBiYXNlKTsKLX0KLQotaW50IFN0cmluZ0ltcGw6OnRvSW50KGJvb2wqIG9rKQotewotICAgIGlm
IChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCwgb2spOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2
KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLXVuc2lnbmVkIFN0cmluZ0ltcGw6OnRvVUludChib29s
KiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9V
SW50KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b1VJbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7Ci19Ci0KLWludDY0X3QgU3RyaW5n
SW1wbDo6dG9JbnQ2NChib29sKiBvaykKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgb2spOwotICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9JbnQ2NChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
LX0KLQotdWludDY0X3QgU3RyaW5nSW1wbDo6dG9VSW50NjQoYm9vbCogb2spCi17Ci0gICAgaWYg
KGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvVUludDY0KGNoYXJhY3RlcnM4
KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNUb1VJbnQ2NChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQotaW50cHRyX3QgU3RyaW5nSW1wbDo6dG9JbnRQ
dHIoYm9vbCogb2spCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFj
dGVyc1RvSW50UHRyKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIGNo
YXJhY3RlcnNUb0ludFB0cihjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKLX0KLQogZG91
YmxlIFN0cmluZ0ltcGw6OnRvRG91YmxlKGJvb2wqIG9rKQogewogICAgIGlmIChpczhCaXQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYWZkZDNlMDE3ZDRjOThiMzY3YzNhNzk0NjRi
NWUyMzRhOWFiMmRlZS4uMDJhNWRhZDI3M2JjYjIzMmVhYzhiMTBiZDU5MzBhNTVhZjVlY2ZmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTM5MiwxOCArMzkyLDYgQEAgcHVibGljOgog
ICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0K
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2ln
bmVkKTsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApOwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApOwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxw
dHIsIGludCBiYXNlID0gMTApOwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3Qo
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlCi0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQotICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxw
dHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChi
b29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLSAgICBpbnRw
dHJfdCB0b0ludFB0cihib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdh
cmJhZ2UKLQogICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0
aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4K
ICAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJu
IHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291
bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3Zl
IGZ1bmN0aW9ucyBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaAppbmRleCBmMGIzZWVmNDE5NWEzMjBiZWMyNTA2Yjc0ZGM5ODU3ZWQ0
YmQ4MzA3Li4wOWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtMTEw
LDM1ICsxMTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPElu
dGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbAogICAgIHJldHVybiBwYXJzZUlu
dGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSwgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5OjpBbGxvdyk7CiB9CiAKLS8vIEZJWE1FOiBEZXBy
ZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQgbW92ZSBh
bGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5
cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxU
eXBlKGNvbnN0IFN0cmluZ09yU3RyaW5nVmlldyYgc3RyaW5nVmlldywgYm9vbCogb2ssIGludCBi
YXNlID0gMTApCi17Ci0gICAgYXV0byByZXN1bHQgPSBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBl
PihzdHJpbmdWaWV3LCBiYXNlKTsKLSAgICBpZiAob2spCi0gICAgICAgICpvayA9IHJlc3VsdC5o
YXNWYWx1ZSgpOwotICAgIHJldHVybiByZXN1bHQudmFsdWVPcigwKTsKLX0KLQotLy8gRklYTUU6
IERlcHJlY2F0ZWQuIFJlbW92ZSB0b0ludGVncmFsVHlwZSBlbnRpcmVseSBvbmNlIHdlIGdldCBt
b3ZlIGFsbCBjYWxsZXJzIHRvIHBhcnNlSW50ZWdlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVn
cmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxU
eXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPEludGVncmFsVHlw
ZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxlbmd0aCB9LCBvaywgYmFzZSk7Ci19Ci0KLS8vIEZJWE1F
OiBEZXByZWNhdGVkLiBSZW1vdmUgdG9JbnRlZ3JhbFR5cGUgZW50aXJlbHkgb25jZSB3ZSBnZXQg
bW92ZSBhbGwgY2FsbGVycyB0byBwYXJzZUludGVnZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRl
Z3JhbFR5cGUsIHR5cGVuYW1lIFN0cmluZ09yU3RyaW5nVmlldz4gT3B0aW9uYWw8SW50ZWdyYWxU
eXBlPiB0b0ludGVncmFsVHlwZShjb25zdCBTdHJpbmdPclN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcs
IGludCBiYXNlID0gMTApCi17Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+
KHN0cmluZ1ZpZXcsIGJhc2UpOwotfQotCi0vLyBGSVhNRTogRGVwcmVjYXRlZC4gUmVtb3ZlIHRv
SW50ZWdyYWxUeXBlIGVudGlyZWx5IG9uY2Ugd2UgZ2V0IG1vdmUgYWxsIGNhbGxlcnMgdG8gcGFy
c2VJbnRlZ2VyLgotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHRvSW50ZWdyYWxUeXBlKGNvbnN0IENo
YXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGJhc2UgPSAxMCkKLXsKLSAg
ICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oU3RyaW5nVmlldyB7IGRhdGEsIGxl
bmd0aCB9LCBiYXNlKTsKLX0KLQogfQogCiB1c2luZyBXVEY6OnBhcnNlSW50ZWdlcjsKIHVzaW5n
IFdURjo6cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms7Ci11c2luZyBXVEY6OnRvSW50
ZWdyYWxUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggODBmODBjYjc3N2Zk
ZTM3ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQxMy4uM2NiMDE4M2M4MDExYWQ4ZGE4MmMwZTk0MmI3
NjkzODk4MWJkM2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMTEsMTcg
KzMxMSw2IEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IHJldHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0KIAotLy8gRklYTUU6IFNob3VsZCB0
aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFkPwotLy8gRklYTUU6IFNo
b3VsZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBz
dHlsZT8KLU9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykK
LXsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlw
ZTx1aW50MTZfdD4oc3RyaW5nLCAmb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQogYm9vbCBlcXVhbFJlc3BlY3Rp
bmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQogewogICAgIGlmIChhLm1fY2hh
cmFjdGVycyA9PSBiLm1fY2hhcmFjdGVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCBhM2Y1YjExNTgyYTYyZGJlZWY3MmMxZDhhMGU3MDFhYWJhNGMxMWU0Li5mZWZjNDgyNjAwYjA5
MWMyZjhhZjU5MzY1ZmMyNTZiNWViZTY0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtMTY4LDExICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZW5kc1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0
OwogCi0gICAgaW50IHRvSW50KCkgY29uc3Q7Ci0gICAgaW50IHRvSW50KGJvb2wmIGlzVmFsaWQp
IGNvbnN0OwotICAgIGludCB0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdDsKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDxp
bnQ2NF90PiB0b0ludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBp
c1ZhbGlkKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5n
SW1wbCYpOwpAQCAtMjQ2LDggKzI0MSw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcp
OwotCiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zNTIsNyArMzQ1
LDcgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29u
c3QgY2hhciogY2hhcmFjdGVycykKIHsKLSAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVuKGNoYXJhY3RlcnMpKTsKKyAgICBpbml0
aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFj
dGVycyA/IHN0cmxlbihjaGFyYWN0ZXJzKSA6IDApOwogfQogCiBpbmxpbmUgU3RyaW5nVmlldzo6
U3RyaW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01
ODgsNDAgKzU4MSw2IEBAIGlubGluZSBmbG9hdCBTdHJpbmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlz
VmFsaWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigp
LCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50
KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgcmV0dXJuIHRvSW50KGlzVmFsaWQp
OwotfQotCi1pbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0
Ci17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50KGNo
YXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0ludChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKLX0KLQotaW5saW5lIGlu
dCBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBjb25zdAotewotICAgIGlm
IChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFyYWN0
ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRT
dHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7Ci19Ci0KLWlubGluZSBP
cHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAotewot
ICAgIGJvb2wgaXNWYWxpZDsKLSAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDog
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOwotICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51
bGxvcHQ7Ci19Ci0KLWlubGluZSBPcHRpb25hbDxpbnQ2NF90PiBTdHJpbmdWaWV3Ojp0b0ludDY0
U3RyaWN0KCkgY29uc3QKLXsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgaW50NjRfdCByZXN1bHQg
PSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNoYXJhY3RlcnM4KCksIG1fbGVu
Z3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwg
bV9sZW5ndGgsICZpc1ZhbGlkKTsKLSAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VPcHRpb25hbChy
ZXN1bHQpIDogV1RGOjpudWxsb3B0OwotfQotCiBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAxZWRiYzgzYWMzY2FlZjUxZTAwNjRhNzdjYmQ2ZmEy
NzFhZGUzMDcwLi4yNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00OTIsMTA2ICs0OTIsNiBAQCBTdHJpbmcgU3Ry
aW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVkV2lkdGgoZG91YmxlIG51bWJlciwgdW5zaWduZWQgZGVj
aW1hbFBsYWNlcykKICAgICByZXR1cm4gbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwg
ZGVjaW1hbFBsYWNlcywgYnVmZmVyKTsKIH0KIAotaW50IFN0cmluZzo6dG9JbnRTdHJpY3QoYm9v
bCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlm
IChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRTdHJpY3Qob2ssIGJhc2UpOwotfQotCi11bnNpZ25l
ZCBTdHJpbmc6OnRvVUludFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnRTdHJp
Y3Qob2ssIGJhc2UpOwotfQotCi1pbnQ2NF90IFN0cmluZzo6dG9JbnQ2NFN0cmljdChib29sKiBv
aywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9r
KQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAg
ICByZXR1cm4gbV9pbXBsLT50b0ludDY0U3RyaWN0KG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3Qg
U3RyaW5nOjp0b1VJbnQ2NFN0cmljdChib29sKiBvaywgaW50IGJhc2UpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2ltcGwpIHsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQ2NFN0
cmljdChvaywgYmFzZSk7Ci19Ci0KLWludHB0cl90IFN0cmluZzo6dG9JbnRQdHJTdHJpY3QoYm9v
bCogb2ssIGludCBiYXNlKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAgICAgIGlm
IChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHJTdHJpY3Qob2ssIGJhc2UpOwotfQotCi1pbnQg
U3RyaW5nOjp0b0ludChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAg
ICAgICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50KG9rKTsKLX0KLQotdW5zaWduZWQgU3Ry
aW5nOjp0b1VJbnQoYm9vbCogb2spIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAg
ICAgaWYgKG9rKQotICAgICAgICAgICAgKm9rID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICByZXR1cm4gbV9pbXBsLT50b1VJbnQob2spOwotfQotCi1pbnQ2NF90IFN0cmlu
Zzo6dG9JbnQ2NChib29sKiBvaykgY29uc3QKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAg
ICBpZiAob2spCi0gICAgICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvSW50NjQob2spOwotfQotCi11aW50NjRfdCBTdHJp
bmc6OnRvVUludDY0KGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0gICAg
ICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9VSW50NjQob2spOwotfQotCi1pbnRwdHJfdCBT
dHJpbmc6OnRvSW50UHRyKGJvb2wqIG9rKSBjb25zdAotewotICAgIGlmICghbV9pbXBsKSB7Ci0g
ICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9JbnRQdHIob2spOwotfQotCiBkb3VibGUg
U3RyaW5nOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkgewpA
QCAtODkyLDEyOSArNzkyLDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbUNvZGVQb2ludChVQ2hhcjMy
IGNvZGVQb2ludCkKIH0KIAogLy8gU3RyaW5nIE9wZXJhdGlvbnMKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6
ZV90IGkgPSAwOwotCi0gICAgLy8gQWxsb3cgbGVhZGluZyBzcGFjZXMuCi0gICAgZm9yICg7IGkg
IT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0p
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIC8vIEFsbG93IHNpZ24uCi0g
ICAgaWYgKGkgIT0gbGVuZ3RoICYmIChkYXRhW2ldID09ICcrJyB8fCBkYXRhW2ldID09ICctJykp
Ci0gICAgICAgICsraTsKLSAgICAKLSAgICAvLyBBbGxvdyBkaWdpdHMuCi0gICAgZm9yICg7IGkg
IT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gaTsKLX0KLQotaW50IGNoYXJh
Y3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxl
bmd0aCwgb2ssIGJhc2UpOwotfQotCi1pbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Ci19Ci0KLXVu
c2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwotfQotCi11bnNpZ25lZCBjaGFyYWN0
ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQot
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKLX0KLQotaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQotewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotdWludDY0X3QgY2hhcmFj
dGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29s
KiBvaywgaW50IGJhc2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90Pihk
YXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRy
U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJh
c2UpCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKLX0KLQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCi17Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
LX0KLQotaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwot
fQotCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKLX0KLQotdW5z
aWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCi17Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
Ci19Ci0KLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25l
ZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQotCi1pbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKLXsKLSAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9V
SW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQotCi11aW50NjRfdCBj
aGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwotfQot
Ci1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOwotfQotCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQotewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwotfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgogc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3Vi
bGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9r
LCBzaXplX3QmIHBhcnNlZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZlNTRh
ZjM4ODRkYjcyZWMyODhlYTc4N2ZkMTVkZjAyZDkxZWFiZWUuLjk3NmZkYzEzOGNjN2YwOTM0NmM3
ZGRkMDNhZTE1MGFmZjhmNDc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDIsMzEg
KzQyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3Bl
cmF0aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChj
b25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsK
LVdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9S
VF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIGlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90
IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0
cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9
IDEwKTsKLWludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLQotV1RGX0VYUE9SVF9Q
UklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklW
QVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotdW5zaWduZWQgY2hhcmFjdGVy
c1RvVUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdu
b3JlcyB0cmFpbGluZyBnYXJiYWdlCi11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdh
cmJhZ2UKLWludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50NjRfdCBj
aGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
KTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNU
b1VJbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdu
b3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3Qg
TENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcg
Z2FyYmFnZQotaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLQotLy8g
RklYTUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2Ug
Zm9yICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gTGlrZSB0aGUgbm9u
LXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVy
ZSBpcyB0cmFpbGluZyBnYXJiYWdlLgotLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdl
cmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgogV1RG
X0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNo
YXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKQEAgLTI4MSwyMSArMjU2LDYgQEAgcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5n
RW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoY29uc3QgU3RyaW5n
JiBzZXBhcmF0b3IpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0
cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0lu
dDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVs
bHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0
cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29u
c3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0
cikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBv
ayA9IG51bGxwdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50
NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWlu
dDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZl
IGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KLSAgICAvLyBM
aWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1
ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0
dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9u
cyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCog
b2sgPSBudWxscHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9h
dChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCkBAIC02ODAsMTYgKzY0MCw2IEBAIHVzaW5n
IFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7CiB1c2luZyBXVEY6OmNoYXJh
Y3RlcnNUb0RvdWJsZTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxvYXQ7Ci11c2luZyBXVEY6
OmNoYXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsK
LXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQ
dHI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdDsKLXVzaW5nIFdURjo6Y2hh
cmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7Ci11c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
VUludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmljdDsKIHVzaW5nIFdURjo6ZW1w
dHlTdHJpbmc7CiB1c2luZyBXVEY6Om51bGxTdHJpbmc7CiB1c2luZyBXVEY6OmVxdWFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMTZj
NjdhMDA1NTM3MGYxMDM2YWUyNzMzYTUwNTJkMjI4YTYzMGU5OS4uY2U3YTQzOWUyZDFiMWVjNmY0
M2JhMTkxNmVkNjE5OTlmOWE1ODk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSw4ICsxOSwxMSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykKKwogI2luY2x1ZGUgIkdM
Q29udGV4dC5oIgorCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYgVVNFKEVHTCkKICNp
bmNsdWRlICJHTENvbnRleHRFR0wuaCIKQEAgLTE4Myw3ICsxODYsOCBAQCB1bnNpZ25lZCBHTENv
bnRleHQ6OnZlcnNpb24oKQogICAgICAgICAgICAgdmVyc2lvbkRpZ2l0cyA9IHZlcnNpb25TdHJp
bmdDb21wb25lbnRzWzBdLnNwbGl0KCcuJyk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3ZlcnNp
b24gPSB2ZXJzaW9uRGlnaXRzWzBdLnRvVUludCgpICogMTAwICsgdmVyc2lvbkRpZ2l0c1sxXS50
b1VJbnQoKSAqIDEwOworICAgICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVPcigwKSAqIDEwMAor
ICAgICAgICAgICAgKyBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4o
dmVyc2lvbkRpZ2l0c1sxXSkudmFsdWVPcigwKSAqIDEwOwogICAgIH0KICAgICByZXR1cm4gbV92
ZXJzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyLmgKaW5kZXggOWFkMTljN2E0ZjU0MjYwZTFhMDg5YmUwMTg4YjkyZTIwYmU0ODk2Yi4uNDVj
YWE3ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmlu
Z09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CiAg
ICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4
KTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3Vs
dCkgPj0gc3RyaW5nTGVuZ3RoKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vu
c2lnbmVkX3Q8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0
aCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApp
bmRleCBjMTI0ZTc4ZDI3ZDJhNTc4M2Y2YjhjNGUwMzhhN2YxMTZjMzI4YzJlLi45M2IxYWI2MWQy
N2RiMzc0ZWNjMmVjNDVjNjg2YzJhN2ExOGM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAyNSwxMCArMTAyNSw4IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uCiAgICAgLy8gUGFjayByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBodHRwLWhl
YWRlcnMgc3RydWN0dXJlLgogICAgIGhlYWRlcnMucmVzZXQoZ3N0X3N0cnVjdHVyZV9uZXdfZW1w
dHkoInJlc3BvbnNlLWhlYWRlcnMiKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgYm9vbCBvayA9IGZhbHNlOwot
ICAgICAgICB1aW50NjRfdCBjb252ZXJ0ZWRWYWx1ZSA9IGhlYWRlci52YWx1ZS50b1VJbnQ2NCgm
b2spOwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChoZWFk
ZXJzLmdldCgpLCBoZWFkZXIua2V5LnV0ZjgoKS5kYXRhKCksIEdfVFlQRV9VSU5UNjQsIGNvbnZl
cnRlZFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkVmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oaGVhZGVyLnZhbHVlKSkK
KyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGhlYWRlcnMuZ2V0KCksIGhlYWRlci5rZXku
dXRmOCgpLmRhdGEoKSwgR19UWVBFX1VJTlQ2NCwgKmNvbnZlcnRlZFZhbHVlLCBudWxscHRyKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoaGVhZGVycy5nZXQo
KSwgaGVhZGVyLmtleS51dGY4KCkuZGF0YSgpLCBHX1RZUEVfU1RSSU5HLCBoZWFkZXIudmFsdWUu
dXRmOCgpLmRhdGEoKSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKaW5kZXggZTdlZmQzNDkwNWVk
YWRkZDYzY2NhOGIxYjYyMWM4MTI2N2VhMmFiZC4uZGJlMGQwM2M5MjE5MGViMGJjMjllYjY2YzQ3
NTNhMGFhOWMwYjQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4
aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0yOCwyMCArMjgsMTggQEAKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxjc3RyaW5n
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAg
ICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwg
YXJnYykgewotICAgICAgICAgICAgU3RyaW5nIHN0cihhcmd2WysraV0pOwotICAgICAgICAgICAg
bV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5E
TEU+KHN0ci50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0s
ICItcHJvY2Vzc0lkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgIFN0
cmluZyBzdHIoYXJndlsrK2ldKTsKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
VHlwZT4oc3RyLnRvVUludDY0KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltp
XSwgIi1jb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCisgICAgICAgIGlmICghc3RyY21wKGFy
Z3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAg
IG1fcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFO
RExFPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ld
KS52YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXByb2Nl
c3NJZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQorICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
LnByb2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXJUeXBlPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRf
dD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2
W2ldLCAiLWNvbmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKSkKICAgICAgICAgICAgIEpTQzo6Q29u
ZmlnOjpjb25maWd1cmVGb3JUZXN0aW5nKCk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJn
dltpXSwgIi1kaXNhYmxlLWppdCIpKQogICAgICAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjpzZXRKSVRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCBlMDBjMjFlMDE4YjBkMDg2NzJhM2VjNWFmYzA4ZjE3OGZk
OWZhN2IyLi4wOWY3NjIzYmYyZGI0ZWQ5OWRhYjU3ZTM3M2U2ODQxMWQzNmRhYmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2Fk
U3RhdGUoKS51cmwoKSk7Ci0gICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3Bl
Y3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5z
WzFdLnRvVUludDY0KCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzFdKS52YWx1ZU9yKDAp
LCB0b2tlbnNbMl0pOwogICAgIH0KIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3Zl
cnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAppbmRleCBhZmM3MGYyMTM5YmYzYjVlNTkyZmEyOWQ2Y2EwMDQyM2E0MGNjYTEyLi5hOWVhNjI4
ZmQxOTg1YTJlZTdjYjE2MDBjZDE3ODI4ZjA2ZjRiYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IFVSTCByZXF1ZXN0VVJMIHsgeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwotICAg
ICAgICBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFu
ZFBvcnQoKSwgdG9rZW5zWzBdLnRvVUludFN0cmljdCgpLCB0b2tlbnNbMV0udG9VSW50U3RyaWN0
KCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3Bl
Y3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXI8aW50Pih0b2tlbnNbMF0p
LnZhbHVlT3IoMCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1sxXSkudmFsdWVPcigwKSwgdG9r
ZW5zWzJdKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVy
cmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQ
b29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdp
bi5jcHAKaW5kZXggMThmOWU5MzkzMjc5M2I3YzNlNDRlNjM0NmJlMGYxM2VkNmRiZjIzMy4uYTg2
YjM0ZGRhYThmNzE1ZTFjOTQ3Yjg5NDNjZWZkOTIxMzljNDEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVu
ZGxlV2luLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
PgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjEsNyArNjIsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBob3N0ID0gYWRkcmVzcy5zdWJzdHJpbmcoMCwg
cG9zKTsKLSAgICBhdXRvIHBvcnQgPSBhZGRyZXNzLnN1YnN0cmluZyhwb3MgKyAxKS50b1VJbnQ2
NFN0cmljdCgpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oYWRkcmVz
cy5zdWJzdHJpbmcocG9zICsgMSkpOwogICAgIGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjQ4
YWM2MGZkZmRhY2Y0ZjBlMWNhNzM3YTU5MDQ5ZDM1NjA0Njc4Yi4uNTk0NDVkZDBmOTVhY2NiYmRj
Y2FlZjkyZDA3YjQwNDE2NTViZmJjOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTExICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6dG9JbnQg
ZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDogQWRkZWQgU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA6IEFkZGVk
LgorICAgICAgICBDb250YWlucyB0ZXN0cyBtb3ZlZCBhbmQgYWRhcHRlZCBmcm9tIHRoZSBmaWxl
cyBiZWxvdyBzbyB3ZSBkb24ndAorICAgICAgICBsb3NlIHRlc3QgY292ZXJhZ2UuIFdlIGFuZCBh
bmQgc2hvdWxkIGFkZCBtYW55IG1vcmUgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgcGFyc2VVSW50MTYK
KyAgICAgICAgYW5kIFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0LgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcDogUmVtb3ZlZCB0ZXN0cyBmb3IgU3RyaW5n
Ojp0b0ludC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW06IFVzZQorICAgICAgICBwYXJzZUludGVnZXI8dWludDY0X3Q+
IGluc3RlYWQgb2YgU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06
IERpdHRvLgorCiAyMDIxLTA1LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEg
c2V0IG9mIGhvc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2Y5ZjY1N2My
MDkzOWJiNTM1MGZlMDhiMDQ4ODc4YzcyYmJjMThmLi5lNDRjYjRiYjczMmUwNjU3YjUwZGRkNzg5
YmZkZDk0NzE0MTk5YTI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTkzLDYg
KzkzLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TdHJpbmdJbXBsLmNw
cAogICAgIFRlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgVGVzdHMvV1RGL1N0cmlu
Z1BhcnNpbmdCdWZmZXIuY3BwCisgICAgVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uY3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgVGVzdHMvV1RGL1N5bmNo
cm9uaXplZEZpeGVkUXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNw
cApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzExN2IyNGQ5MjcyMmZlOTA2YzdlZTRmZTkw
YjljN2VjOTA3YzI5Li43YTdiNWYyMGU2NzAxZWFjZDk0NTZjMTUwNjNiOTUxZGMzYjQ2OGFhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMxLDYgKzgzMSw3IEBACiAJCTkzMUMyODFFMjJC
QzU3OUEwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUMyODFCMjJC
QzU1ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sICovOyB9Owog
CQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgx
RTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3
MTA0NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAv
KiBmb2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsKKwkJOTMzMkVGOTQyNjQ5QkI2ODAwOUY1RDZEIC8q
IFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uY3BwICovOyB9OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYg
LyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovOyB9OwogCQk5MzQy
NTg5QzI1NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVF
REQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi87IH07CiAJCTkzNDI1ODlFMjU1QjZBMTIwMDU5
RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNz
aW9uLXBlcnNpc3RlbmNlLmh0bWwgKi87IH07CkBAIC0yNTEyLDYgKzI1MTMsNyBAQAogCQk5MzFD
MjgxQzIyQkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU1FMQmFzaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkw
MDBGMDgzQjEgLyogRGlkTm90SGFuZGxlS2V5RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaWROb3RIYW5kbGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVE
RCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1p
c3Npb24tcGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NDY0LDYgKzQ0NjYsNyBAQAogCQkJCTI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJ
bXBsLmNwcCAqLywKIAkJCQlDMDEzNjNDNzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0
b3JzLmNwcCAqLywKIAkJCQk3Q0Q3MEM0RTI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2lu
Z0J1ZmZlci5jcHAgKi8sCisJCQkJOTMzMkVGOTMyNjQ5QkI2ODAwOUY1RDZEIC8qIFN0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uY3BwICovLAogCQkJCTdDNzRENDJEMTg4MjI4RjMwMEU1RUQ1NyAv
KiBTdHJpbmdWaWV3LmNwcCAqLywKIAkJCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3lu
Y2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi8sCiAJCQkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3
IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKQEAgLTUyMjAsNiArNTIyMyw3IEBACiAJCQkJ
N0M4M0RGMzcxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RGMzgxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0Q3MEM0RjI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2lu
Z0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQg
LyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REYzQTFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY0MDFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdHNDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNGM2YzllOWZiY2Y5ZGZlNDk4YjU1NjBlODc1ZTdjZWEwZDFjN2RlCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFBhcnNlSW50ZWdlcikKK3sKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PihzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXI8aW50PigiIikpOworICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXI8aW50Pigi
MCIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIjEiKSk7CisgICAgRVhQ
RUNUX0VRKDMsIHBhcnNlSW50ZWdlcjxpbnQ+KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywgcGFy
c2VJbnRlZ2VyPGludD4oIi0zIikpOworICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2Vy
PGludD4oIjEyMzQ1IikpOworICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+
KCItMTIzNDUiKSk7CisgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+
KCIyMTQ3NDgzNjQ3IikpOworICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjxpbnQ+KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBh
cnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKFdU
Rjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUSgxLCBw
YXJzZUludGVnZXI8aW50PigiIDEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFy
c2VJbnRlZ2VyPGludD4oIjF4IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUlu
dGVnZXI8dWludDE2X3Q+KCIwIikpOworICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRl
Z2VyPHVpbnQxNl90PigiMyIpKTsKKyAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSArICpwYXJzZUlu
dGVnZXI8dWludDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpw
YXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RG
OjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKK30KKworVEVTVChX
VEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQoreworICAgIEVYUEVDVF9FUShX
VEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIikpOworICAgIEVYUEVD
VF9FUSgwLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIwIikpOworICAg
IEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxIikp
OworICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KCIzIikpOworICAgIEVYUEVDVF9FUSgtMywgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50PigiLTMiKSk7CisgICAgRVhQRUNUX0VRKDEyMzQ1LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoLTEyMzQ1LCBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMTIzNDUiKSk7CisgICAgRVhQRUNU
X0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjIx
NDc0ODM2NDciKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoLTIx
NDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0
NzQ4MzY0OCIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoV1RG
OjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
IDEiKSk7CisgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oIjF4IikpOworCisgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjAiKSk7CisgICAgRVhQRUNUX0VRKDNVLCAwVSAr
ICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjMiKSk7CisgICAg
RVhQRUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
dWludDE2X3Q+KCIxMjM0NSIpKTsKKyAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM1IikpOworICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQx
Nl90PigiLTEiKSk7CisgICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2
IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IDQ0YTJkZTMwMTE0ZTk3MjE1MTk1
ODdhMGY2ZTMyNzNlNGU5ZGViYmEuLjg0ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1Y2RmZDgyOWFm
MDdmNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1Zp
ZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3Bw
CkBAIC05OTAsMzcgKzk5MCw0IEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3SXNBbGxBU0NJSSkKICAg
ICBFWFBFQ1RfVFJVRShTdHJpbmdWaWV3KFN0cmluZyhiaXR3aXNlX2Nhc3Q8Y29uc3QgVUNoYXIq
Pih1IkhlbGxvIikpKS5pc0FsbEFTQ0lJKCkpOwogfQogCi1URVNUKFdURiwgU3RyaW5nVmlld1Bh
cnNlVUludDE2KQotewotICAgIEVYUEVDVF9FUSgwVSwgKldURjo6cGFyc2VVSW50MTYoIjAiKSk7
Ci0gICAgRVhQRUNUX0VRKDNVLCAqV1RGOjpwYXJzZVVJbnQxNigiMyIpKTsKLSAgICBFWFBFQ1Rf
RVEoMTIzNDVVLCAqV1RGOjpwYXJzZVVJbnQxNigiMTIzNDUiKSk7Ci0gICAgRVhQRUNUX0VRKDY1
NTM1VSwgKldURjo6cGFyc2VVSW50MTYoIjY1NTM1IikpOwotICAgIEVYUEVDVF9UUlVFKCFXVEY6
OnBhcnNlVUludDE2KCItMSIpKTsKLSAgICBFWFBFQ1RfVFJVRSghV1RGOjpwYXJzZVVJbnQxNigi
LTMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoIVdURjo6cGFyc2VVSW50MTYoIjY1NTM2IikpOwotfQot
Ci1URVNUKFdURiwgU3RyaW5nVmlld1RvSW50U3RyaWN0KQotewotICAgIGF1dG8gdGVzdCA9IFtd
KEFTQ0lJTGl0ZXJhbCBzdHJpbmcpIHsKLSAgICAgICAgYm9vbCBpc1ZhbGlkID0gZmFsc2U7Ci0g
ICAgICAgIGludCByZXN1bHQgPSBTdHJpbmdWaWV3KHN0cmluZykudG9JbnRTdHJpY3QoaXNWYWxp
ZCk7Ci0gICAgICAgIHJldHVybiBpc1ZhbGlkID8gbWFrZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6
Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBFWFBFQ1RfRVEoMCwgKnRlc3QoIjAiX3MpKTsKLSAgICBF
WFBFQ1RfRVEoMywgKnRlc3QoIjMiX3MpKTsKLSAgICBFWFBFQ1RfRVEoLTMsICp0ZXN0KCItMyJf
cykpOwotICAgIEVYUEVDVF9FUSgxMjM0NSwgKnRlc3QoIjEyMzQ1Il9zKSk7Ci0gICAgRVhQRUNU
X0VRKC0xMjM0NSwgKnRlc3QoIi0xMjM0NSJfcykpOwotICAgIGlmIChzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpID09IDIxNDc0ODM2NDcpIHsKLSAgICAgICAgRVhQRUNUX0VRKDIxNDc0
ODM2NDcsICp0ZXN0KCIyMTQ3NDgzNjQ3Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0
KCIyMTQ3NDgzNjQ4Il9zKSk7Ci0gICAgfQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1pbigpID09IC0yMTQ3NDgzNjQ4KSB7Ci0gICAgICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0
OCwgKnRlc3QoIi0yMTQ3NDgzNjQ4Il9zKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCF0ZXN0KCIt
MjE0NzQ4MzY0OSJfcykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggODA4
YTY0MzQ0MGQxNTAwYmI4ZThlOTIzZDQ4ZWE1YjQxMWRhMTIzNS4uMGUwZTljN2Y4ODdmM2VhZjdj
NDc3NWEwMTRmMWU2Y2NhOGQ0MTBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9XVEZTdHJpbmcuY3BwCkBAIC0yODcsNTggKzI4Nyw2IEBAIFRFU1QoV1RGLCBTdHJpbmdJc29s
YXRlZENvcHkpCiAgICAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsLmltcGwoKSA9PSBjb3B5LmltcGwo
KSk7CiB9CiAKLVRFU1QoV1RGLCBTdHJpbmdUb0ludCkKLXsKLSAgICBib29sIG9rID0gZmFsc2U7
Ci0KLSAgICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAs
IFN0cmluZygpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBFWFBF
Q1RfRVEoMCwgZW1wdHlTdHJpbmcoKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgZW1wdHlT
dHJpbmcoKS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNU
X0VRKDAsIFN0cmluZygiMCIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIjAi
KS50b0ludCgmb2spKTsKLSAgICBFWFBFQ1RfVFJVRShvayk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwg
U3RyaW5nKCIxIikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMSIpLnRvSW50
KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLQotICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3
LCBTdHJpbmcoIjIxNDc0ODM2NDciKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0
NywgU3RyaW5nKCIyMTQ3NDgzNjQ3IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2sp
OwotCi0gICAgRVhQRUNUX0VRKDAsIFN0cmluZygiMjE0NzQ4MzY0OCIpLnRvSW50KCkpOwotICAg
IEVYUEVDVF9FUSgwLCBTdHJpbmcoIjIxNDc0ODM2NDgiKS50b0ludCgmb2spKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2spOwotCi0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0yMTQ3
NDgzNjQ4IikudG9JbnQoKSk7Ci0gICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ4LCBTdHJpbmcoIi0y
MTQ3NDgzNjQ4IikudG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX1RSVUUob2spOwotCi0gICAgRVhQ
RUNUX0VRKDAsIFN0cmluZygiLTIxNDc0ODM2NDkiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEo
MCwgU3RyaW5nKCItMjE0NzQ4MzY0OSIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9GQUxTRShv
ayk7Ci0KLSAgICAvLyBmYWlsIGlmIHdlIHNlZSBsZWFkaW5nIGp1bmsKLSAgICBFWFBFQ1RfRVEo
MCwgU3RyaW5nKCJ4MSIpLnRvSW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCBTdHJpbmcoIngxIiku
dG9JbnQoJm9rKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLQotICAgIC8vIHN1Y2NlZWQgaWYg
d2Ugc2VlIGxlYWRpbmcgc3BhY2VzCi0gICAgRVhQRUNUX0VRKDEsIFN0cmluZygiIDEiKS50b0lu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIgMSIpLnRvSW50KCZvaykpOwotICAgIEVY
UEVDVF9UUlVFKG9rKTsKLQotICAgIC8vIHNpbGVudGx5IGlnbm9yZSB0cmFpbGluZyBqdW5rCi0g
ICAgRVhQRUNUX0VRKDEsIFN0cmluZygiMXgiKS50b0ludCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwg
U3RyaW5nKCIxeCIpLnRvSW50KCZvaykpOwotICAgIEVYUEVDVF9UUlVFKG9rKTsKLX0KLQogVEVT
VChXVEYsIFN0cmluZ1RvRG91YmxlKQogewogICAgIGJvb2wgb2sgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tCmluZGV4IGNkNzNjMWIwYTQyMTdiMTc5MTMzMjExMTk1NTZlNDY0MDdm
ZjgyYTAuLjdjNGQxZTU0ZGI3NWM5Mjg2MTA4NDYxMzU4MTc2ZDg1NGY3MmMzM2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VS
TFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBzdGF0aWMgYm9vbCBkb25lOwpAQCAtMTYwMSw4ICsxNjAyLDggQEAgVEVTVChVUkxTY2hlbWVI
YW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAgYXV0byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVz
dFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2gg
LSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3RoKCkpOwogICAgICAgICBhdXRvIHJhbmdlRW5kU3Ry
aW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAt
IDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSByYW5nZUJlZ2luU3RyaW5nLnRvVUludDY0
U3RyaWN0KCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIg
PyBbdmlkZW9EYXRhIGxlbmd0aF0gOiByYW5nZUVuZFN0cmluZy50b1VJbnQ2NFN0cmljdCgpOwor
ICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVn
aW5TdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0
cmluZyA9PSAiKiIgPyBbdmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHJhbmdlRW5kU3RyaW5nKS52YWx1ZU9yKDApOwogCiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHN0YXR1c0NvZGU6MjA2IEhUVFBWZXJz
aW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAewogICAgICAgICAgICAgQCJDb250ZW50LVJh
bmdlIiA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYnl0ZXMgJWxsdS0lbGx1LyVsdSIs
IHJhbmdlQmVnaW4sIHJhbmdlRW5kLCAodW5zaWduZWQgbG9uZylbdmlkZW9EYXRhIGxlbmd0aF1d
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmZGM1ZDZjYWNl
Njg0N2NhNjY0MWY0OTE5NDI2NTRkMTkyZTY5M2M4Li42NTJiN2ZmZjFlZmVkZWNhMDBjMWZjYmJl
YWM0ZjM3YjIwYzFkZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNj
cmlwdE1lc3NhZ2U7CkBAIC03NzAsOCArNzcxLDggQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUp
CiAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QuZmluZCgnXHInLCBkYXNoKTsKICAgICAg
ICAgICAgIEFTU0VSVChlbmQgIT0gbm90Rm91bmQpOwogCi0gICAgICAgICAgICBhdXRvIHJhbmdl
QmVnaW4gPSAqcmVxdWVzdC5zdWJzdHJpbmcoYmVnaW4gKyByYW5nZUJ5dGVzLmxlbmd0aCgpLCBk
YXNoIC0gYmVnaW4gLSByYW5nZUJ5dGVzLmxlbmd0aCgpKS50b1VJbnQ2NFN0cmljdCgpOwotICAg
ICAgICAgICAgYXV0byByYW5nZUVuZCA9ICpyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5k
IC0gZGFzaCAtIDEpLnRvVUludDY0U3RyaWN0KCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlQmVn
aW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJlcXVlc3Quc3Vic3RyaW5nKGJlZ2luICsgcmFu
Z2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSkpLnZh
bHVlKCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRW5kID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90
PihyZXF1ZXN0LnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpKS52YWx1ZSgpOwog
CiAgICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VIZWFkZXJTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIkhUVFAvMS4xIDIwNiBQYXJ0aWFs
IENvbnRlbnRcclxuIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>