<?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>192517</bug_id>
          
          <creation_ts>2018-12-07 14:51:15 -0800</creation_ts>
          <short_desc>Update libwebrtc up to 2fb890f08c</short_desc>
          <delta_ts>2018-12-07 16:46:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486164</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-07 14:51:15 -0800</bug_when>
    <thetext>Update libwebrtc up to 2fb890f08c to track M72 branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486166</commentid>
    <comment_count>1</comment_count>
      <attachid>356839</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-07 14:54:32 -0800</bug_when>
    <thetext>Created attachment 356839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486227</commentid>
    <comment_count>2</comment_count>
      <attachid>356839</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 16:45:12 -0800</bug_when>
    <thetext>Comment on attachment 356839
Patch

Clearing flags on attachment: 356839

Committed r238996: &lt;https://trac.webkit.org/changeset/238996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486228</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 16:45:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486232</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-07 16:46:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/46569233&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356839</attachid>
            <date>2018-12-07 14:54:32 -0800</date>
            <delta_ts>2018-12-07 16:45:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192517-20181207145431.patch</filename>
            <type>text/plain</type>
            <size>171042</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1NzA1NWUzZmJlMjNkNGIwZDA0Njk5ZDI5MjIzMGQ5YTA3ZjcxYmQzLi40MDA0
M2Q3ZjMwMWM3YjZkYTU1MGMzMThiZTI5ZDQ1NmU5ZDM5OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxOC0xMi0wNyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAyZmI4OTBmMDhjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNZXJnZSBjaGFuZ2VzIHRvIHRyYWNrIGxpYndlYnJ0YyBNNzIuCisKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL0RFUFM6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNo
b19jYW5jZWxsZXIzX2NvbmZpZy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvYXBpL3J0cF9o
ZWFkZXJzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9mcmFt
ZS5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaDoK
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3Nl
bmRfaW50ZXJmYWNlLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3Ry
ZWFtLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaDoKKyAgICAgICAg
KHdlYnJ0Yzo6UnRjcFN0YXRpc3RpY3M6OlJ0Y3BTdGF0aXN0aWNzKToKKyAgICAgICAgKHdlYnJ0
Yzo6UnRjcFN0YXRpc3RpY3NDYWxsYmFjazo6flJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2spOgorICAg
ICAgICAqIFNvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2df
aW1wbC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRl
b2VuZ2luZS5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L0JVSUxELmduOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbjoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5jYzoKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRl
cl9tZXRyaWNzLmNjOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fw
aV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjOiBSZW1vdmVkLgorICAgICAgICAqIFNv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIz
LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19jYW5jZWxsZXIzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuY2M6CisgICAgICAgICogU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuaDoK
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1
cHByZXNzaW9uX2dhaW4uY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL0JVSUxELmduOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmg6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3Bf
ZGVmaW5lcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9yZWNlaXZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmNjOgorICAgICAgICAqIFNvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNj
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hl
YWRlcl9leHRlbnNpb25zLmg6CisgICAgICAgICh3ZWJydGM6Okhkck1ldGFkYXRhRXh0ZW5zaW9u
OjpWYWx1ZVNpemUpOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdW5pdHRlc3QuY2M6CisgICAgICAgICog
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYzoKKyAg
ICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3Zp
ZGVvY29kZWNfdGVzdF9saWJ2cHguY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2M6CisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9p
bXBsLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOS92cDlfaW1wbC5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZW5jb2RlZF9mcmFtZS5oOgorICAgICAgICAod2VicnRjOjpWQ01FbmNvZGVkRnJh
bWU6OnZpZGVvX3RpbWluZ19tdXRhYmxlKToKKyAgICAgICAgKHdlYnJ0Yzo6VkNNRW5jb2RlZEZy
YW1lOjpTZXRDb2RlY1NwZWNpZmljKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmg6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjOgorICAg
ICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfb2JqZWN0LmNj
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcnRwX2ZyYW1l
X3JlZmVyZW5jZV9maW5kZXIuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9w
MnB0cmFuc3BvcnRjaGFubmVsLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
cDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BvcnQuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0
Lmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRv
ci5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2Nh
dG9yLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9j
YXRvcl91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNfaW50ZWdyYXRpb250
ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRl
c3R3cmFwcGVyLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVj
dGlvbnRlc3R3cmFwcGVyLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdpemVfbWFjcm9zLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXJfdW5pdHRlc3QuY2M6IFJlbW92ZWQuCisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX3BhY2tldF9mdXp6ZXIuY2M6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53
ZWJydGMvaU9TNjRfUGVyZi5qc29uOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb246Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvd2hpdGVzcGFjZS50eHQ6CisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3RhdHMuaDoKKyAgICAgICAg
KiBTb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuY2M6CisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbS5jYzoKKwogMjAx
OC0xMi0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIGxpYndlYnJ0YyB1cCB0byAwZDAwN2Q3YzRmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvREVQUwppbmRleCA1NTVjMjdmMTBlN2UxOTk3MzAwMDZkNGRi
OTdkMzYwZDJjMTU4Mzc2Li4yOTg3MjUxNTQxMDA3YTZiMjM2MjIyYjljYTJlNWQ5NDkzOTRhYWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9E
RVBTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0RFUFMK
QEAgLTcsMTYgKzcsMTYgQEAgdmFycyA9IHsKICAgJ2NoZWNrb3V0X2NvbmZpZ3VyYXRpb24nOiAn
ZGVmYXVsdCcsCiAgICdjaGVja291dF9pbnN0cnVtZW50ZWRfbGlicmFyaWVzJzogJ2NoZWNrb3V0
X2xpbnV4IGFuZCBjaGVja291dF9jb25maWd1cmF0aW9uID09ICJkZWZhdWx0IicsCiAgICd3ZWJy
dGNfZ2l0JzogJ2h0dHBzOi8vd2VicnRjLmdvb2dsZXNvdXJjZS5jb20nLAotICAnY2hyb21pdW1f
cmV2aXNpb24nOiAnYjA0ZTUxM2Y4MjVkNmNlMjJlMTQ3NjAxY2JmYzc1ZWEyM2ViOTA3MycsCisg
ICdjaHJvbWl1bV9yZXZpc2lvbic6ICc4MWMyNmEwOTNiZmRmZTg2OGRmZjRlM2U2MTFlZGNmZDA0
ODZiNjQxJywKICAgJ2JvcmluZ3NzbF9naXQnOiAnaHR0cHM6Ly9ib3Jpbmdzc2wuZ29vZ2xlc291
cmNlLmNvbScsCiAgICMgVGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRo
YXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgc3dhcm1pbmdf
Y2xpZW50CiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBl
YWNoIG90aGVyLgotICAnc3dhcm1pbmdfcmV2aXNpb24nOiAnMTU3YmVjOGEyNWNjNGViZDZhMTYw
NTI1MTBkMDhiMDViNjEwMmFhZCcsCisgICdzd2FybWluZ19yZXZpc2lvbic6ICdiNmU5ZTIzZTRl
NzkyNDliZDRmOTU3MzUyMDVmZmI3YzNmOWYwOTEyJywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24t
Y2hhbmdpbmcgY29tbWVudHMgc28gdGhhdAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRs
ZSBDTHMgcm9sbGluZyBCb3JpbmdTU0wKICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGlu
dGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdib3Jpbmdzc2xfcmV2aXNpb24nOiAnNjk2
NWQyNTYwMjc1NGJjNDE5YzVmNzU3ZDAwOGJhMWY0ZGE0OWFlNCcsCisgICdib3Jpbmdzc2xfcmV2
aXNpb24nOiAnZjI0MWE1OWRjY2E2MTdjNWI5ZDk4ODBhOGE5ZmQ5Mjk5NmE2NTRiZScsCiAgICMg
VGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29t
bWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgbHNzCiAgICMgYW5kIHdoYXRldmVyIGVs
c2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgpAQCAtNDIsOSArNDIsOSBA
QCBkZXBzID0gewogICAjIFRPRE8oa2plbGxhbmRlcik6IE1vdmUgdGhpcyB0byBiZSBBbmRyb2lk
LW9ubHkgb25jZSB0aGUgbGliZXZlbnQgZGVwZW5kZW5jeQogICAjIGluIGJhc2UvdGhpcmRfcGFy
dHkvbGliZXZlbnQgaXMgc29sdmVkLgogICAnc3JjL2Jhc2UnOgotICAgIFZhcignY2hyb21pdW1f
Z2l0JykgKyAnL2Nocm9taXVtL3NyYy9iYXNlJyArICdAJyArICdiOTkwMWY5YmM1YjY1YTExNjlk
NWRiNjk2ZWY0NDI4YTY1Y2VjNjIyJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9zcmMvYmFzZScgKyAnQCcgKyAnM2M5YWM3MDU1MmI1MDIzZWJhMzIyMDk2MjZjOWYwNThi
NDQxMjY5NicsCiAgICdzcmMvYnVpbGQnOgotICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2No
cm9taXVtL3NyYy9idWlsZCcgKyAnQCcgKyAnYmJkNjdhMzUwZDc0NTIwMGU1Nzk4Y2FjZTExYTI4
ZWRmZDlmYzNiMicsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL2J1
aWxkJyArICdAJyArICcwNzZkMzQ3YTU2NDU0MTFlNzUyNjU1MzJiYTk0ZTM3ZjgwOTcwYmIxJywK
ICAgJ3NyYy9idWlsZHRvb2xzJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1
bS9idWlsZHRvb2xzLmdpdCcgKyAnQCcgKyAnMDQxNjFlYzhkN2M3ODFlNDQ5OGM2OTkyNTRjNjli
YTBkZDk1OWZkZScsCiAgICMgR3JhZGxlIDQuMy1yYzQuIFVzZWQgZm9yIHRlc3RpbmcgQW5kcm9p
ZCBTdHVkaW8gcHJvamVjdCBnZW5lcmF0aW9uIGZvciBXZWJSVEMuCkBAIC01NCwxMyArNTQsMTMg
QEAgZGVwcyA9IHsKICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLAogICB9LAog
ICAnc3JjL2lvcyc6IHsKLSAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21p
dW0vc3JjL2lvcycgKyAnQCcgKyAnZWI5ZThlMDlkYzRiMjhlNjkxY2ZkNzAyNDJiYTUwY2VlY2I2
YWIyMCcsCisgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy9p
b3MnICsgJ0AnICsgJ2FhMDZmZjlkYzliNDcxMTc0MWUzYTBmNzBmMTQ5ZmZkMDU0MTg1NTYnLAog
ICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfaW9zJywKICAgfSwKICAgJ3NyYy90ZXN0aW5nJzoK
LSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvdGVzdGluZycgKyAnQCcg
KyAnNWE3NzZiY2EwNTBhZWRmYjAyNjljZGQ4NDA4ZmYwNTU5YWNkZTJhYScsCisgICAgVmFyKCdj
aHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3Rlc3RpbmcnICsgJ0AnICsgJ2VlYjQ4M2E4
MzQzZWRlMGVhNDA5ODE1YWY3OGIzMjA2MWQ4YjNmZGUnLAogICAnc3JjL3RoaXJkX3BhcnR5JzoK
LSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHknICsg
J0AnICsgJzc3ZjZjMTY3MjBlZmY3NzIxYjBjMGIyNDM4Y2U5MTI2ZjU5ZTFmMGInLAorICAgIFZh
cignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eScgKyAnQCcgKyAn
M2EyMGI4NmQzOGEzZTE3YWEzY2YyNGY2ZTM2MTkyMDEzYjUzNTU3MScsCiAgICdzcmMvdGhpcmRf
cGFydHkvYW5kcm9pZF9uZGsnOiB7CiAgICAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSAr
ICcvYW5kcm9pZF9uZGsuZ2l0JyArICdAJyArICc0ZTJjZWE0NDFiZmQ0M2YwODYzZDE0ZjU3YjFl
MTg0NDI2MGI5ODg0JywKICAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCkBA
IC0xMDcsNyArMTA3LDcgQEAgZGVwcyA9IHsKICAgJ3NyYy90aGlyZF9wYXJ0eS9jb2xvcmFtYS9z
cmMnOgogICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2NvbG9yYW1hLmdpdCcg
KyAnQCcgKyAnNzk5NjA0YTEwNDFlOWIzYmM1ZDI3ODllY2JkN2U4ZGIyZTE4ZTZiOCcsCiAgICdz
cmMvdGhpcmRfcGFydHkvZGVwb3RfdG9vbHMnOgotICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAn
L2Nocm9taXVtL3Rvb2xzL2RlcG90X3Rvb2xzLmdpdCcgKyAnQCcgKyAnNDRkNGIyOTA4MmYwZDhi
YWNhY2Q2MjNmOTFjNGQyOTYzN2I0YjkwMScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
Y2hyb21pdW0vdG9vbHMvZGVwb3RfdG9vbHMuZ2l0JyArICdAJyArICc2YzE4YTFhZmExYTdhMzA0
MjE3NzVjOGQ2YzFjZmI3ZWRiM2YyNzJhJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9lcnJvcnByb25l
L2xpYic6IHsKICAgICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS90
aGlyZF9wYXJ0eS9lcnJvcnByb25lLmdpdCcgKyAnQCcgKyAnOTgwZDQ5ZTgzOWFhNDk4NDAxNWVm
ZWQzNGIwMTM0ZDRiMmM5YjZkNycsCiAgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJv
aWQnLApAQCAtMjI1LDcgKzIyNSw3IEBAIGRlcHMgPSB7CiAgICdzcmMvdGhpcmRfcGFydHkveWFz
bS9zb3VyY2UvcGF0Y2hlZC15YXNtJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9kZXBzL3lhc20vcGF0Y2hlZC15YXNtLmdpdCcgKyAnQCcgKyAnNzIwYjcwNTI0YTQ0MjRi
MTVmYzU3ZTgyMjYzNTY4YzhiYTA0OTZhZCcsCiAgICdzcmMvdG9vbHMnOgotICAgIFZhcignY2hy
b21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90b29scycgKyAnQCcgKyAnYjQ3YzYzMTU4Nzhl
YWJkNzNiZjcxYzFhYTBjYmQ5YjgxNjcxNjc4OScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSAr
ICcvY2hyb21pdW0vc3JjL3Rvb2xzJyArICdAJyArICc2MjdiOGNiNWFmZjJiZTdlZDRjMjAyZjY4
NWJhNmJkMjk1NzU0M2JmJywKICAgJ3NyYy90b29scy9zd2FybWluZ19jbGllbnQnOgogICAgIFZh
cignY2hyb21pdW1fZ2l0JykgKyAnL2luZnJhL2x1Y2kvY2xpZW50LXB5LmdpdCcgKyAnQCcgKyAg
VmFyKCdzd2FybWluZ19yZXZpc2lvbicpLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZp
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
L2VjaG9fY2FuY2VsbGVyM19jb25maWcuaAppbmRleCBlYTZlNTFiYWY5YzUzZDEyMzZmMDc1OTU1
NmIyNmUyZDkyMWFjNzY5Li5mZmUxN2YyYjhiNWQ3NGYyMDA4OTlhOWMxN2QyNDkwNWI5YmNmYTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmln
LmgKQEAgLTE4Miw4ICsxODIsOCBAQCBzdHJ1Y3QgUlRDX0VYUE9SVCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjVmKTsKIAogICAg
IHN0cnVjdCBEb21pbmFudE5lYXJlbmREZXRlY3Rpb24gewotICAgICAgZmxvYXQgZW5yX3RocmVz
aG9sZCA9IDQuZjsKLSAgICAgIGZsb2F0IGVucl9leGl0X3RocmVzaG9sZCA9IC4xZjsKKyAgICAg
IGZsb2F0IGVucl90aHJlc2hvbGQgPSAuMjVmOworICAgICAgZmxvYXQgZW5yX2V4aXRfdGhyZXNo
b2xkID0gMTAuZjsKICAgICAgIGZsb2F0IHNucl90aHJlc2hvbGQgPSAzMC5mOwogICAgICAgaW50
IGhvbGRfZHVyYXRpb24gPSA1MDsKICAgICAgIGludCB0cmlnZ2VyX3RocmVzaG9sZCA9IDEyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3J0cF9oZWFkZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwX2hlYWRlcnMuaAppbmRleCBjNzY2ODk5YjlmZDg4ZjRhMmMyZWU5MDkwZjdmOGNi
NjllOTQ2MmJkLi4zZTUxZjQzNTkxYWVmZmU4YTkzMzdjMjQ1YWQxNTAwNTQzMDc0ZTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
X2hlYWRlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwX2hlYWRlcnMuaApAQCAtMTcsNyArMTcsNyBAQAogCiAjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAi
YXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hkcl9tZXRhZGF0
YS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfbWFya2luZy5oIgogI2luY2x1ZGUgImFwaS92aWRlby92
aWRlb19yb3RhdGlvbi5oIgpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0cnVjdCBSVFBIZWFkZXJFeHRl
bnNpb24gewogICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1tbXVz
aWMtc2RwLWJ1bmRsZS1uZWdvdGlhdGlvbi0zOAogICBNaWQgbWlkOwogCi0gIGFic2w6Om9wdGlv
bmFsPENvbG9yU3BhY2U+IGNvbG9yX3NwYWNlOworICBhYnNsOjpvcHRpb25hbDxIZHJNZXRhZGF0
YT4gaGRyX21ldGFkYXRhOwogfTsKIAogc3RydWN0IFJUUEhlYWRlciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2Rl
ZF9mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2VuY29kZWRfZnJhbWUuaAppbmRleCBiODQ2MmM2YzJjOTA0NDc3NDlmYzBiNGNlZWM0
YzYyZmU1OTE3YjMyLi5hMGVmMzVjZGJlZTVlZmEzOWVmNDk0YWQxYzNmZmI5ZmQ0YjljOThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW8vZW5jb2RlZF9mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ZyYW1lLmgKQEAgLTgwLDYgKzgwLDkgQEAg
Y2xhc3MgRW5jb2RlZEZyYW1lIDogcHVibGljIHdlYnJ0Yzo6VkNNRW5jb2RlZEZyYW1lIHsKICAg
c2l6ZV90IG51bV9yZWZlcmVuY2VzID0gMDsKICAgaW50NjRfdCByZWZlcmVuY2VzW2tNYXhGcmFt
ZVJlZmVyZW5jZXNdOwogICBib29sIGludGVyX2xheWVyX3ByZWRpY3RlZCA9IGZhbHNlOworICAv
LyBJcyB0aGlzIHN1YmZyYW1lIHRoZSBsYXN0IG9uZSBpbiB0aGUgc3VwZXJmcmFtZSAoSW4gUlRQ
IHN0cmVhbSB0aGF0IHdvdWxkCisgIC8vIG1lYW4gdGhhdCB0aGUgbGFzdCBwYWNrZXQgaGFzIGEg
bWFya2VyIGJpdCBzZXQpLgorICBib29sIGlzX2xhc3Rfc3BhdGlhbF9sYXllciA9IHRydWU7CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2UgdmlkZW9fY29kaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2Vu
Y29kZWRfaW1hZ2UuaAppbmRleCBhN2M3MTljZTNhNTY3OGQ1MWFjMjRmYzczMjAzOWVlYmQxYjkw
ZGYwLi5kZTFhMjVhM2MzN2U3MzUzOGFlMGJiMTgzMjgxOGU5Zjg2MTRmYzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5j
b2RlZF9pbWFnZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgKQEAgLTY3LDYgKzY3LDE4IEBAIGNsYXNzIFJU
Q19FWFBPUlQgRW5jb2RlZEltYWdlIHsKICAgICAgICAgY29sb3Jfc3BhY2UgPyBhYnNsOjptYWtl
X29wdGlvbmFsKCpjb2xvcl9zcGFjZSkgOiBhYnNsOjpudWxsb3B0OwogICB9CiAKKyAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBfbGVuZ3RoOyB9CisgIHZvaWQgc2V0X3NpemUoc2l6ZV90
IG5ld19zaXplKSB7CisgICAgUlRDX0RDSEVDS19MRShuZXdfc2l6ZSwgX3NpemUpOworICAgIF9s
ZW5ndGggPSBuZXdfc2l6ZTsKKyAgfQorICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBfc2l6ZTsgfQorCisgIHZvaWQgc2V0X2J1ZmZlcih1aW50OF90KiBidWZmZXIsIHNpemVfdCBj
YXBhY2l0eSkgeworICAgIF9idWZmZXIgPSBidWZmZXI7CisgICAgX3NpemUgPSBjYXBhY2l0eTsK
KyAgfQorCiAgIHVpbnQzMl90IF9lbmNvZGVkV2lkdGggPSAwOwogICB1aW50MzJfdCBfZW5jb2Rl
ZEhlaWdodCA9IDA7CiAgIC8vIE5UUCB0aW1lIG9mIHRoZSBjYXB0dXJlIHRpbWUgaW4gbG9jYWwg
dGltZWJhc2UgaW4gbWlsbGlzZWNvbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2Vu
ZF9pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgKaW5kZXggOTg2
ODU4NWNkZjgxMTM5MjhhMWFkNjNkZDY1ZWVjYzk3MWNjMmY3Yy4uMjE5YzM2ZGUzNWY5NzA0MmM5
NDI5YjFiNzM5ZjJjNmMwOWZjMzJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9p
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oCkBAIC0yNSw3
ICsyNSw2IEBACiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9iaXRyYXRlX3NldHRpbmdzLmgiCiAj
aW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwX2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3JlY2VpdmVfc3Ry
ZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Zp
ZGVvX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXggMmNkNWYxNjMxYTA5YjE1YTAxOTUzMTViN2ViODhj
M2YxNmZjNzE3OS4uOTRjYmZjYzJmMTk1ZjEzZGU3NjhiNTE3MTU0YjQzNTUwNWQ0ZWZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92
aWRlb19yZWNlaXZlX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcu
aCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmgK
aW5kZXggNGQzZDljMGM1NzRjYjdmNzZjNmU5ZjliOTUxNDAyODRlZjZlYmU0Mi4uYTc2ZTgyZTM4
OWU5NGVjNDJiMTZlZmQ5NjVjNzQwYjQwYzA1MTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9f
c2VuZF9zdHJlYW0uaApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImFwaS92aWRlby92aWRl
b19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBlcy5oCmluZGV4IDg0OGI4OTlhMGRkMWY0ODljNTI2
ZDBiMjU0NTFhNTUwNGMyYjJiMzguLjQxYjkwMWNlYzI2MWU0MzMxYmVhZmUzMGQzM2U2MGUzNTRi
YzA2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl90eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl90eXBlcy5oCkBAIC0zOSw2ICszOSwyOSBAQCBlbnVtIEZyYW1lVHlw
ZSB7CiAgIGtWaWRlb0ZyYW1lRGVsdGEgPSA0LAogfTsKIAorLy8gU3RhdGlzdGljcyBmb3IgYW4g
UlRDUCBjaGFubmVsCitzdHJ1Y3QgUnRjcFN0YXRpc3RpY3MgeworICBSdGNwU3RhdGlzdGljcygp
CisgICAgICA6IGZyYWN0aW9uX2xvc3QoMCksCisgICAgICAgIHBhY2tldHNfbG9zdCgwKSwKKyAg
ICAgICAgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIoMCksCisgICAgICAgIGppdHRl
cigwKSB7fQorCisgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdDsKKyAgaW50MzJfdCBwYWNrZXRzX2xv
c3Q7ICAvLyBEZWZpbmVkIGFzIGEgMjQgYml0IHNpZ25lZCBpbnRlZ2VyIGluIFJUQ1AKKyAgdWlu
dDMyX3QgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXI7CisgIHVpbnQzMl90IGppdHRl
cjsKK307CisKK2NsYXNzIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB+UnRjcFN0YXRpc3RpY3NDYWxsYmFjaygpIHt9CisKKyAgdmlydHVhbCB2b2lkIFN0YXRp
c3RpY3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgPSAwOworICB2aXJ0dWFsIHZv
aWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50MzJfdCBzc3JjKSA9IDA7Cit9
OworCiAvLyBTdGF0aXN0aWNzIGZvciBSVENQIHBhY2tldCB0eXBlcy4KIHN0cnVjdCBSdGNwUGFj
a2V0VHlwZUNvdW50ZXIgewogICBSdGNwUGFja2V0VHlwZUNvdW50ZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2dfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ltcGwu
Y2MKaW5kZXggYzAyMmEzZDQxODVjZjE0M2I5NGUwZTI4MWJjNmZlNzI1Y2VlMzY3Mi4uYzU4NDNk
OTM3NTFmMDA0OWUzM2VhZDk4Y2QyNzdlMTNiNmE0ZDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0
Y19ldmVudF9sb2dfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNjCkBA
IC0xNTksNiArMTU5LDEyIEBAIFJ0Y0V2ZW50TG9nSW1wbDo6flJ0Y0V2ZW50TG9nSW1wbCgpIHsK
IAogICAvLyBJZiB3ZSdyZSBsb2dnaW5nIHRvIHRoZSBvdXRwdXQsIHRoaXMgd2lsbCBzdG9wIHRo
YXQuIEJsb2NraW5nIGZ1bmN0aW9uLgogICBTdG9wTG9nZ2luZygpOworCisgIC8vIFdlIHdhbnQg
dG8gYmxvY2sgb24gYW55IGV4ZWN1dGluZyB0YXNrIGJ5IGludm9raW5nIH5UYXNrUXVldWUoKSBi
ZWZvcmUKKyAgLy8gd2Ugc2V0IHVuaXF1ZV9wdHIncyBpbnRlcm5hbCBwb2ludGVyIHRvIG51bGwu
CisgIHJ0Yzo6VGFza1F1ZXVlKiB0cSA9IHRhc2tfcXVldWVfLmdldCgpOworICBkZWxldGUgdHE7
CisgIHRhc2tfcXVldWVfLnJlbGVhc2UoKTsKIH0KIAogYm9vbCBSdGNFdmVudExvZ0ltcGw6OlN0
YXJ0TG9nZ2luZyhzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1dCwKQEAg
LTE3OSwxMCArMTg1LDExIEBAIGJvb2wgUnRjRXZlbnRMb2dJbXBsOjpTdGFydExvZ2dpbmcoc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQsCiAgICAgICAgICAgICAgICAg
ICAgPDwgIigiIDw8IHRpbWVzdGFtcF91cyA8PCAiLCAiIDw8IHV0Y190aW1lX3VzIDw8ICIpLiI7
CiAKICAgLy8gQmluZGluZyB0byB8dGhpc3wgaXMgc2FmZSBiZWNhdXNlIHx0aGlzfCBvdXRsaXZl
cyB0aGUgfHRhc2tfcXVldWVffC4KLSAgYXV0byBzdGFydCA9IFt0aGlzLCB0aW1lc3RhbXBfdXMs
CisgIGF1dG8gc3RhcnQgPSBbdGhpcywgb3V0cHV0X3BlcmlvZF9tcywgdGltZXN0YW1wX3VzLAog
ICAgICAgICAgICAgICAgIHV0Y190aW1lX3VzXShzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dP
dXRwdXQ+IG91dHB1dCkgewogICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHRhc2tfcXVldWVfLmdldCgp
KTsKICAgICBSVENfRENIRUNLKG91dHB1dC0+SXNBY3RpdmUoKSk7CisgICAgb3V0cHV0X3Blcmlv
ZF9tc18gPSBvdXRwdXRfcGVyaW9kX21zOwogICAgIGV2ZW50X291dHB1dF8gPSBzdGQ6Om1vdmUo
b3V0cHV0KTsKICAgICBudW1fY29uZmlnX2V2ZW50c193cml0dGVuXyA9IDA7CiAgICAgV3JpdGVU
b091dHB1dChldmVudF9lbmNvZGVyXy0+RW5jb2RlTG9nU3RhcnQodGltZXN0YW1wX3VzLCB1dGNf
dGltZV91cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5n
aW5lLmNjCmluZGV4IGE3NWRiNzM2OTcwNjliOTM3ZmE4OGI2MTdjM2UzZDlhNGY0YjQ4ZjcuLjU2
NTZlOGU3ZjEyNWIwMGNmYjFjYWQzOWQ2NThlMGZkYWE0MGFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2
aWRlb2VuZ2luZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MKQEAgLTM4Myw2ICszODMsOSBA
QCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6Q29uZmlndXJlVmlk
ZW9FbmNvZGVyU2V0dGluZ3MoCiAgICAgaWYgKCFpc19zY3JlZW5jYXN0KSB7CiAgICAgICAvLyBM
aW1pdCBpbnRlci1sYXllciBwcmVkaWN0aW9uIHRvIGtleSBwaWN0dXJlcy4KICAgICAgIHZwOV9z
ZXR0aW5ncy5pbnRlckxheWVyUHJlZCA9IHdlYnJ0Yzo6SW50ZXJMYXllclByZWRNb2RlOjprT25L
ZXlQaWM7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIDMgc3BhdGlhbCBsYXllcnMgdnA5IHNjcmVl
bnNoYXJlIG5lZWRzIGZsZXhpYmxlIG1vZGUuCisgICAgICB2cDlfc2V0dGluZ3MuZmxleGlibGVN
b2RlID0gdnA5X3NldHRpbmdzLm51bWJlck9mU3BhdGlhbExheWVycyA+IDI7CiAgICAgfQogICAg
IHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PAogICAgICAgICB3ZWJydGM6OlZpZGVv
RW5jb2RlckNvbmZpZzo6VnA5RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+KHZwOV9zZXR0aW5ncyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL0JVSUxELmduCmluZGV4IGRmNGJh
MjNmZmY1ZDM3NzQwMTM4Yzc3YjgwMjIzOWI0YzYyODMxNWMuLmRiNzEwNzlhN2U1MzEwZDMxYmI3
YjcyMmY1MTdlYTNhYWRiZDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL0JVSUxELmduCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL0JVSUxELmduCkBAIC0yMTAzLDcgKzIxMDMsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICIuLi8uLi9sb2dnaW5nOm1vY2tzIiwKICAgICAgICIuLi8uLi9sb2dnaW5nOnJ0
Y19ldmVudF9hdWRpbyIsCiAgICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIs
Ci0gICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICAg
Ii4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9idWZf
dXRpbHMiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3Qu
Y2MKaW5kZXggZThiNTAyMzc3MDMxNDhhMzNhZWZhODM0YzEzYTAzZmM4NWY2ZWZkZi4uMmFjZWQ2
YWE3ZTg0NjM5MmZkMmQxMmIwZWZmMWQ1YTgwNDBiMzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvbmV0ZXFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2MK
QEAgLTIyLDEyICsyMiwxMiBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgi
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9hdWRpb19sb29wLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0
X3NvdXJjZV9pbnB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rv
b2xzL25ldGVxX3Rlc3QuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9ydHBfZmlsZV9zb3VyY2UuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL0JVSUxELmduCmluZGV4IDE4OWJjZmQ3MTI1NTMz
OWJjN2RiZjc3ZjBmMzcwY2ViYjMxZjRlNDMuLjY4NGYxOTJjYzU5NzE3ZjEyOTdkMzcyNmE0Zjk4
YjY1YTgzZDc3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL0JVSUxELmduCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL0JVSUxELmduCkBAIC0yMCw4ICsyMCw2IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgiYWVjMyIpIHsKICAgICAiYWVjM19mZnQuaCIsCiAgICAgImFlY19zdGF0ZS5jYyIsCiAgICAg
ImFlY19zdGF0ZS5oIiwKLSAgICAiYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MiLAotICAgICJh
cGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIiwKICAgICAiYmxvY2tfZGVsYXlfYnVmZmVyLmNjIiwK
ICAgICAiYmxvY2tfZGVsYXlfYnVmZmVyLmgiLAogICAgICJibG9ja19mcmFtZXIuY2MiLApAQCAt
MTk0LDcgKzE5Miw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAiYWRhcHRp
dmVfZmlyX2ZpbHRlcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJhZWMzX2ZmdF91bml0dGVzdC5j
YyIsCiAgICAgICAgICJhZWNfc3RhdGVfdW5pdHRlc3QuY2MiLAotICAgICAgICAiYXBpX2NhbGxf
aml0dGVyX21ldHJpY3NfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tfZGVsYXlfYnVmZmVy
X3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImJsb2NrX2ZyYW1lcl91bml0dGVzdC5jYyIsCiAgICAg
ICAgICJibG9ja19wcm9jZXNzb3JfbWV0cmljc191bml0dGVzdC5jYyIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuY2MK
aW5kZXggZDVmMjU2YjFjMTI1NmU5ZmVmMjc0OTBkNTA4MGYyOTJlYmJkOGFhYi4uNDViMzYxZmM1
OTQyMTkzNzQ0MDFlMDU1OTZkOTQ3OTE5ODE5NjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjX3N0YXRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5jYwpAQCAtMTUx
LDggKzE1MSw3IEBAIHZvaWQgQWVjU3RhdGU6OlVwZGF0ZSgKICAgc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfLlVwZGF0ZShzdWJ0cmFjdG9yX291dHB1dCk7CiAKICAgLy8gQW5hbHl6ZSB0aGUg
cHJvcGVydGllcyBvZiB0aGUgZmlsdGVyLgotICBmaWx0ZXJfYW5hbHl6ZXJfLlVwZGF0ZShhZGFw
dGl2ZV9maWx0ZXJfaW1wdWxzZV9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRhcHRpdmVfZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgcmVuZGVyX2J1ZmZlcik7CisgIGZp
bHRlcl9hbmFseXplcl8uVXBkYXRlKGFkYXB0aXZlX2ZpbHRlcl9pbXB1bHNlX3Jlc3BvbnNlLCBy
ZW5kZXJfYnVmZmVyKTsKIAogICAvLyBFc3RpbWF0ZSB0aGUgZGlyZWN0IHBhdGggZGVsYXkgb2Yg
dGhlIGZpbHRlci4KICAgZGVsYXlfc3RhdGVfLlVwZGF0ZShmaWx0ZXJfYW5hbHl6ZXJfLCBleHRl
cm5hbF9kZWxheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9t
ZXRyaWNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjU2YTVkY2U2ZmFiMTM3MWYyNDRlODllMmMw
MjVmN2E0NDBjOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIgot
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCi0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5h
bWVzcGFjZSB7Ci0KLWJvb2wgVGltZVRvUmVwb3J0TWV0cmljcyhpbnQgZnJhbWVzX3NpbmNlX2xh
c3RfcmVwb3J0KSB7Ci0gIGNvbnN0ZXhwciBpbnQga051bUZyYW1lc1BlclNlY29uZCA9IDEwMDsK
LSAgY29uc3RleHByIGludCBrUmVwb3J0aW5nSW50ZXJ2YWxGcmFtZXMgPSAxMCAqIGtOdW1GcmFt
ZXNQZXJTZWNvbmQ7Ci0gIHJldHVybiBmcmFtZXNfc2luY2VfbGFzdF9yZXBvcnQgPT0ga1JlcG9y
dGluZ0ludGVydmFsRnJhbWVzOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotQXBpQ2FsbEppdHRl
ck1ldHJpY3M6OkppdHRlcjo6Sml0dGVyKCkKLSAgICA6IG1heF8oMCksIG1pbl8oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKSkge30KLQotdm9pZCBBcGlDYWxsSml0dGVyTWV0cmljczo6
Sml0dGVyOjpVcGRhdGUoaW50IG51bV9hcGlfY2FsbHNfaW5fYV9yb3cpIHsKLSAgbWluXyA9IHN0
ZDo6bWluKG1pbl8sIG51bV9hcGlfY2FsbHNfaW5fYV9yb3cpOwotICBtYXhfID0gc3RkOjptYXgo
bWF4XywgbnVtX2FwaV9jYWxsc19pbl9hX3Jvdyk7Ci19Ci0KLXZvaWQgQXBpQ2FsbEppdHRlck1l
dHJpY3M6OkppdHRlcjo6UmVzZXQoKSB7Ci0gIG1pbl8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpOwotICBtYXhfID0gMDsKLX0KLQotdm9pZCBBcGlDYWxsSml0dGVyTWV0cmljczo6
UmVzZXQoKSB7Ci0gIHJlbmRlcl9qaXR0ZXJfLlJlc2V0KCk7Ci0gIGNhcHR1cmVfaml0dGVyXy5S
ZXNldCgpOwotICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDA7Ci0gIGZyYW1lc19zaW5jZV9s
YXN0X3JlcG9ydF8gPSAwOwotICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKLSAgcHJv
cGVyX2NhbGxfb2JzZXJ2ZWRfID0gZmFsc2U7Ci19Ci0KLXZvaWQgQXBpQ2FsbEppdHRlck1ldHJp
Y3M6OlJlcG9ydFJlbmRlckNhbGwoKSB7Ci0gIGlmICghbGFzdF9jYWxsX3dhc19yZW5kZXJfKSB7
Ci0gICAgLy8gSWYgdGhlIHByZXZpb3VzIGNhbGwgd2FzIGEgY2FwdHVyZSBhbmQgYSBwcm9wZXIg
Y2FsbCBoYXMgYmVlbiBvYnNlcnZlZAotICAgIC8vIChjb250YWluaW5nIGJvdGggcmVuZGVyIGFu
ZCBjYXB0dXJlIGRhdGEpLCBzdG9yaW5nIHRoZSBsYXN0IG51bWJlciBvZgotICAgIC8vIGNhcHR1
cmUgY2FsbHMgaW50byB0aGUgbWV0cmljcy4KLSAgICBpZiAocHJvcGVyX2NhbGxfb2JzZXJ2ZWRf
KSB7Ci0gICAgICBjYXB0dXJlX2ppdHRlcl8uVXBkYXRlKG51bV9hcGlfY2FsbHNfaW5fYV9yb3df
KTsKLSAgICB9Ci0KLSAgICAvLyBSZXNldCB0aGUgY2FsbCBjb3VudGVyIHRvIHN0YXJ0IGNvdW50
aW5nIHJlbmRlciBjYWxscy4KLSAgICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDA7Ci0gIH0K
LSAgKytudW1fYXBpX2NhbGxzX2luX2Ffcm93XzsKLSAgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0g
dHJ1ZTsKLX0KLQotdm9pZCBBcGlDYWxsSml0dGVyTWV0cmljczo6UmVwb3J0Q2FwdHVyZUNhbGwo
KSB7Ci0gIGlmIChsYXN0X2NhbGxfd2FzX3JlbmRlcl8pIHsKLSAgICAvLyBJZiB0aGUgcHJldmlv
dXMgY2FsbCB3YXMgYSByZW5kZXIgYW5kIGEgcHJvcGVyIGNhbGwgaGFzIGJlZW4gb2JzZXJ2ZWQK
LSAgICAvLyAoY29udGFpbmluZyBib3RoIHJlbmRlciBhbmQgY2FwdHVyZSBkYXRhKSwgc3Rvcmlu
ZyB0aGUgbGFzdCBudW1iZXIgb2YKLSAgICAvLyByZW5kZXIgY2FsbHMgaW50byB0aGUgbWV0cmlj
cy4KLSAgICBpZiAocHJvcGVyX2NhbGxfb2JzZXJ2ZWRfKSB7Ci0gICAgICByZW5kZXJfaml0dGVy
Xy5VcGRhdGUobnVtX2FwaV9jYWxsc19pbl9hX3Jvd18pOwotICAgIH0KLSAgICAvLyBSZXNldCB0
aGUgY2FsbCBjb3VudGVyIHRvIHN0YXJ0IGNvdW50aW5nIGNhcHR1cmUgY2FsbHMuCi0gICAgbnVt
X2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOwotCi0gICAgLy8gSWYgdGhpcyBzdGF0ZW1lbnQgaXMg
cmVhY2hlZCwgYXQgbGVhc3Qgb25lIHJlbmRlciBhbmQgb25lIGNhcHR1cmUgY2FsbAotICAgIC8v
IGhhdmUgYmVlbiBvYnNlcnZlZC4KLSAgICBwcm9wZXJfY2FsbF9vYnNlcnZlZF8gPSB0cnVlOwot
ICB9Ci0gICsrbnVtX2FwaV9jYWxsc19pbl9hX3Jvd187Ci0gIGxhc3RfY2FsbF93YXNfcmVuZGVy
XyA9IGZhbHNlOwotCi0gIC8vIE9ubHkgcmVwb3J0IGFuZCB1cGRhdGUgaml0dGVyIG1ldHJpY3Mg
Zm9yIHdoZW4gYSBwcm9wZXIgY2FsbCwgY29udGFpbmluZwotICAvLyBib3RoIHJlbmRlciBhbmQg
Y2FwdHVyZSBkYXRhLCBoYXMgYmVlbiBvYnNlcnZlZC4KLSAgaWYgKHByb3Blcl9jYWxsX29ic2Vy
dmVkXyAmJgotICAgICAgVGltZVRvUmVwb3J0TWV0cmljcygrK2ZyYW1lc19zaW5jZV9sYXN0X3Jl
cG9ydF8pKSB7Ci0gICAgLy8gUmVwb3J0IGppdHRlciwgd2hlcmUgdGhlIGJhc2UgYmFzaWMgdW5p
dCBpcyBmcmFtZXMuCi0gICAgY29uc3RleHByIGludCBrTWF4Sml0dGVyVG9SZXBvcnQgPSA1MDsK
LQotICAgIC8vIFJlcG9ydCBtYXggYW5kIG1pbiBqaXR0ZXIgZm9yIHJlbmRlciBhbmQgY2FwdHVy
ZSwgaW4gdW5pdHMgb2YgMjAgbXMuCi0gICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfTElORUFSKAot
ICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxsZXIuTWF4UmVuZGVySml0dGVyIiwKLSAg
ICAgICAgc3RkOjptaW4oa01heEppdHRlclRvUmVwb3J0LCByZW5kZXJfaml0dGVyKCkubWF4KCkp
LCAxLAotICAgICAgICBrTWF4Sml0dGVyVG9SZXBvcnQsIGtNYXhKaXR0ZXJUb1JlcG9ydCk7Ci0g
ICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfTElORUFSKAotICAgICAgICAiV2ViUlRDLkF1ZGlvLkVj
aG9DYW5jZWxsZXIuTWluUmVuZGVySml0dGVyIiwKLSAgICAgICAgc3RkOjptaW4oa01heEppdHRl
clRvUmVwb3J0LCByZW5kZXJfaml0dGVyKCkubWluKCkpLCAxLAotICAgICAgICBrTWF4Sml0dGVy
VG9SZXBvcnQsIGtNYXhKaXR0ZXJUb1JlcG9ydCk7Ci0KLSAgICBSVENfSElTVE9HUkFNX0NPVU5U
U19MSU5FQVIoCi0gICAgICAgICJXZWJSVEMuQXVkaW8uRWNob0NhbmNlbGxlci5NYXhDYXB0dXJl
Sml0dGVyIiwKLSAgICAgICAgc3RkOjptaW4oa01heEppdHRlclRvUmVwb3J0LCBjYXB0dXJlX2pp
dHRlcigpLm1heCgpKSwgMSwKLSAgICAgICAga01heEppdHRlclRvUmVwb3J0LCBrTWF4Sml0dGVy
VG9SZXBvcnQpOwotICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTX0xJTkVBUigKLSAgICAgICAgIldl
YlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLk1pbkNhcHR1cmVKaXR0ZXIiLAotICAgICAgICBzdGQ6
Om1pbihrTWF4Sml0dGVyVG9SZXBvcnQsIGNhcHR1cmVfaml0dGVyKCkubWluKCkpLCAxLAotICAg
ICAgICBrTWF4Sml0dGVyVG9SZXBvcnQsIGtNYXhKaXR0ZXJUb1JlcG9ydCk7Ci0KLSAgICBmcmFt
ZXNfc2luY2VfbGFzdF9yZXBvcnRfID0gMDsKLSAgICBSZXNldCgpOwotICB9Ci19Ci0KLWJvb2wg
QXBpQ2FsbEppdHRlck1ldHJpY3M6OldpbGxSZXBvcnRNZXRyaWNzQXROZXh0Q2FwdHVyZSgpIGNv
bnN0IHsKLSAgcmV0dXJuIFRpbWVUb1JlcG9ydE1ldHJpY3MoZnJhbWVzX3NpbmNlX2xhc3RfcmVw
b3J0XyArIDEpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBp
X2NhbGxfaml0dGVyX21ldHJpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQx
ZmE4MmU5MzI0NzA3MjkyZTg3ZWUyZjM3NWNmODVlNzE3ZjNkYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0
ZXJfbWV0cmljcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQVBJX0NB
TExfSklUVEVSX01FVFJJQ1NfSF8KLSNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfQVBJX0NBTExfSklUVEVSX01FVFJJQ1NfSF8KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8v
IFN0b3JlcyBkYXRhIGZvciByZXBvcnRpbmcgbWV0cmljcyBvbiB0aGUgQVBJIGNhbGwgaml0dGVy
LgotY2xhc3MgQXBpQ2FsbEppdHRlck1ldHJpY3MgewotIHB1YmxpYzoKLSAgY2xhc3MgSml0dGVy
IHsKLSAgIHB1YmxpYzoKLSAgICBKaXR0ZXIoKTsKLSAgICB2b2lkIFVwZGF0ZShpbnQgbnVtX2Fw
aV9jYWxsc19pbl9hX3Jvdyk7Ci0gICAgdm9pZCBSZXNldCgpOwotCi0gICAgaW50IG1pbigpIGNv
bnN0IHsgcmV0dXJuIG1pbl87IH0KLSAgICBpbnQgbWF4KCkgY29uc3QgeyByZXR1cm4gbWF4Xzsg
fQotCi0gICBwcml2YXRlOgotICAgIGludCBtYXhfOwotICAgIGludCBtaW5fOwotICB9OwotCi0g
IEFwaUNhbGxKaXR0ZXJNZXRyaWNzKCkgeyBSZXNldCgpOyB9Ci0KLSAgLy8gVXBkYXRlIG1ldHJp
Y3MgZm9yIHJlbmRlciBBUEkgY2FsbC4KLSAgdm9pZCBSZXBvcnRSZW5kZXJDYWxsKCk7Ci0KLSAg
Ly8gVXBkYXRlIGFuZCBwZXJpb2RpY2FsbHkgcmVwb3J0IG1ldHJpY3MgZm9yIGNhcHR1cmUgQVBJ
IGNhbGwuCi0gIHZvaWQgUmVwb3J0Q2FwdHVyZUNhbGwoKTsKLQotICAvLyBNZXRob2RzIHVzZWQg
b25seSBmb3IgdGVzdGluZy4KLSAgY29uc3QgSml0dGVyJiByZW5kZXJfaml0dGVyKCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyX2ppdHRlcl87IH0KLSAgY29uc3QgSml0dGVyJiBjYXB0dXJlX2ppdHRl
cigpIGNvbnN0IHsgcmV0dXJuIGNhcHR1cmVfaml0dGVyXzsgfQotICBib29sIFdpbGxSZXBvcnRN
ZXRyaWNzQXROZXh0Q2FwdHVyZSgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgdm9pZCBSZXNldCgp
OwotCi0gIEppdHRlciByZW5kZXJfaml0dGVyXzsKLSAgSml0dGVyIGNhcHR1cmVfaml0dGVyXzsK
LQotICBpbnQgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOwotICBpbnQgZnJhbWVzX3NpbmNl
X2xhc3RfcmVwb3J0XyA9IDA7Ci0gIGJvb2wgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7
Ci0gIGJvb2wgcHJvcGVyX2NhbGxfb2JzZXJ2ZWRfID0gZmFsc2U7Ci19OwotCi19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
QVBJX0NBTExfSklUVEVSX01FVFJJQ1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fw
aV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2Nh
bGxfaml0dGVyX21ldHJpY3NfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg2NjA4YWEzZTEwOTNmOTdiYzM3MGRjOWFhNmI5MWJiZmY0OTMzZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2Nh
bGxfaml0dGVyX21ldHJpY3NfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCi0KLSNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBWZXJpZnkgY29uc3RhbnQgaml0
dGVyLgotVEVTVChBcGlDYWxsSml0dGVyTWV0cmljcywgQ29uc3RhbnRKaXR0ZXIpIHsKLSAgZm9y
IChpbnQgaml0dGVyID0gMTsgaml0dGVyIDwgMjA7ICsraml0dGVyKSB7Ci0gICAgQXBpQ2FsbEpp
dHRlck1ldHJpY3MgbWV0cmljczsKLSAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDMwICoga051
bUJsb2Nrc1BlclNlY29uZDsgKytrKSB7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGppdHRl
cjsgKytqKSB7Ci0gICAgICAgIG1ldHJpY3MuUmVwb3J0UmVuZGVyQ2FsbCgpOwotICAgICAgfQot
Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGppdHRlcjsgKytqKSB7Ci0gICAgICAgIG1ldHJp
Y3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKLQotICAgICAgICBpZiAobWV0cmljcy5XaWxsUmVwb3J0
TWV0cmljc0F0TmV4dENhcHR1cmUoKSkgewotICAgICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1l
dHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsKLSAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVy
LCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgoKSk7Ci0gICAgICAgICAgRVhQRUNUX0VRKGpp
dHRlciwgbWV0cmljcy5jYXB0dXJlX2ppdHRlcigpLm1pbigpKTsKLSAgICAgICAgICBFWFBFQ1Rf
RVEoaml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCkubWF4KCkpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgfQotICB9Ci19Ci0KLS8vIFZlcmlmeSBwZWFreSBqaXR0ZXIgZm9yIHRoZSBy
ZW5kZXIuCi1URVNUKEFwaUNhbGxKaXR0ZXJNZXRyaWNzLCBKaXR0ZXJQZWFrUmVuZGVyKSB7Ci0g
IGNvbnN0ZXhwciBpbnQga01pbkppdHRlciA9IDI7Ci0gIGNvbnN0ZXhwciBpbnQga0ppdHRlclBl
YWsgPSAxMDsKLSAgY29uc3RleHByIGludCBrUGVha0ludGVydmFsID0gMTAwOwotCi0gIEFwaUNh
bGxKaXR0ZXJNZXRyaWNzIG1ldHJpY3M7Ci0gIGludCByZW5kZXJfc3VycGx1cyA9IDA7Ci0KLSAg
Zm9yIChzaXplX3QgayA9IDA7IGsgPCAzMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7ICsraykgewot
ICAgIGNvbnN0IGludCBudW1fcmVuZGVyX2NhbGxzID0KLSAgICAgICAgayAlIGtQZWFrSW50ZXJ2
YWwgPT0gMCA/IGtKaXR0ZXJQZWFrIDoga01pbkppdHRlcjsKLSAgICBmb3IgKGludCBqID0gMDsg
aiA8IG51bV9yZW5kZXJfY2FsbHM7ICsraikgewotICAgICAgbWV0cmljcy5SZXBvcnRSZW5kZXJD
YWxsKCk7Ci0gICAgICArK3JlbmRlcl9zdXJwbHVzOwotICAgIH0KLQotICAgIEFTU0VSVF9MRShr
TWluSml0dGVyLCByZW5kZXJfc3VycGx1cyk7Ci0gICAgY29uc3QgaW50IG51bV9jYXB0dXJlX2Nh
bGxzID0KLSAgICAgICAgcmVuZGVyX3N1cnBsdXMgPT0ga01pbkppdHRlciA/IGtNaW5KaXR0ZXIg
OiBrTWluSml0dGVyICsgMTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9jYXB0dXJlX2Nh
bGxzOyArK2opIHsKLSAgICAgIG1ldHJpY3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKLQotICAgICAg
aWYgKG1ldHJpY3MuV2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJlKCkpIHsKLSAgICAgICAg
RVhQRUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVy
KCkubWluKCkpOwotICAgICAgICBFWFBFQ1RfRVEoa01pbkppdHRlciArIDEsIG1ldHJpY3MuY2Fw
dHVyZV9qaXR0ZXIoKS5tYXgoKSk7Ci0gICAgICB9Ci0gICAgICAtLXJlbmRlcl9zdXJwbHVzOwot
ICAgIH0KLSAgfQotfQotCi0vLyBWZXJpZnkgcGVha3kgaml0dGVyIGZvciB0aGUgY2FwdHVyZS4K
LVRFU1QoQXBpQ2FsbEppdHRlck1ldHJpY3MsIEppdHRlclBlYWtDYXB0dXJlKSB7Ci0gIGNvbnN0
ZXhwciBpbnQga01pbkppdHRlciA9IDI7Ci0gIGNvbnN0ZXhwciBpbnQga0ppdHRlclBlYWsgPSAx
MDsKLSAgY29uc3RleHByIGludCBrUGVha0ludGVydmFsID0gMTAwOwotCi0gIEFwaUNhbGxKaXR0
ZXJNZXRyaWNzIG1ldHJpY3M7Ci0gIGludCBjYXB0dXJlX3N1cnBsdXMgPSBrTWluSml0dGVyOwot
Ci0gIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMzAgKiBrTnVtQmxvY2tzUGVyU2Vjb25kOyArK2sp
IHsKLSAgICBBU1NFUlRfTEUoa01pbkppdHRlciwgY2FwdHVyZV9zdXJwbHVzKTsKLSAgICBjb25z
dCBpbnQgbnVtX3JlbmRlcl9jYWxscyA9Ci0gICAgICAgIGNhcHR1cmVfc3VycGx1cyA9PSBrTWlu
Sml0dGVyID8ga01pbkppdHRlciA6IGtNaW5KaXR0ZXIgKyAxOwotICAgIGZvciAoaW50IGogPSAw
OyBqIDwgbnVtX3JlbmRlcl9jYWxsczsgKytqKSB7Ci0gICAgICBtZXRyaWNzLlJlcG9ydFJlbmRl
ckNhbGwoKTsKLSAgICAgIC0tY2FwdHVyZV9zdXJwbHVzOwotICAgIH0KLQotICAgIGNvbnN0IGlu
dCBudW1fY2FwdHVyZV9jYWxscyA9Ci0gICAgICAgIGsgJSBrUGVha0ludGVydmFsID09IDAgPyBr
Sml0dGVyUGVhayA6IGtNaW5KaXR0ZXI7Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1fY2Fw
dHVyZV9jYWxsczsgKytqKSB7Ci0gICAgICBtZXRyaWNzLlJlcG9ydENhcHR1cmVDYWxsKCk7Ci0K
LSAgICAgIGlmIChtZXRyaWNzLldpbGxSZXBvcnRNZXRyaWNzQXROZXh0Q2FwdHVyZSgpKSB7Ci0g
ICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5taW4o
KSk7Ci0gICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyICsgMSwgbWV0cmljcy5yZW5kZXJfaml0
dGVyKCkubWF4KCkpOwotICAgICAgICBFWFBFQ1RfRVEoa01pbkppdHRlciwgbWV0cmljcy5jYXB0
dXJlX2ppdHRlcigpLm1pbigpKTsKLSAgICAgICAgRVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBtZXRy
aWNzLmNhcHR1cmVfaml0dGVyKCkubWF4KCkpOwotICAgICAgfQotICAgICAgKytjYXB0dXJlX3N1
cnBsdXM7Ci0gICAgfQotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fY2FuY2VsbGVyMy5jYwppbmRleCBmMDVlZGIxNWMzZTU2YWY5OGNhNmJmY2E5MDI2MjMxNmY4
NmNiMzliLi4zM2U5MGU4ODJlYmY2ZGFmMWM0ZGJjNjVhY2JlYTk3ZDdhNGFlMGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19jYW5jZWxsZXIzLmNjCkBAIC0xNDcsNyArMTQ3LDcgQEAgRWNob0NhbmNlbGxlcjND
b25maWcgQWRqdXN0Q29uZmlnKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsK
ICAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhy
ZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCiAgICAgICAgICAgICAyLjBmLCAwLjI1Zik7CiAKLSAg
ICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJf
dGhyZXNob2xkID0gMTAuZjsKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9u
ZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkID0gMC4xZjsKICAgICBhZGp1c3RlZF9jZmcu
c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkID0gMTAu
ZjsKICAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlv
bi5ob2xkX2R1cmF0aW9uID0gMjU7CiAgIH0KQEAgLTQ0NiwxMCArNDQ2LDYgQEAgdm9pZCBFY2hv
Q2FuY2VsbGVyMzo6UHJvY2Vzc0NhcHR1cmUoQXVkaW9CdWZmZXIqIGNhcHR1cmUsIGJvb2wgbGV2
ZWxfY2hhbmdlKSB7CiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19jYWxsX29yZGVyIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oRWNob0NhbmNlbGxlcjNB
cGlDYWxsOjprQ2FwdHVyZSkpOwogCi0gIC8vIFJlcG9ydCBjYXB0dXJlIGNhbGwgaW4gdGhlIG1l
dHJpY3MgYW5kIHBlcmlvZGljYWxseSB1cGRhdGUgQVBJIGNhbGwKLSAgLy8gbWV0cmljcy4KLSAg
YXBpX2NhbGxfbWV0cmljc18uUmVwb3J0Q2FwdHVyZUNhbGwoKTsKLQogICAvLyBPcHRpb25hbGx5
IGRlbGF5IHRoZSBjYXB0dXJlIHNpZ25hbC4KICAgaWYgKGNvbmZpZ18uZGVsYXkuZml4ZWRfY2Fw
dHVyZV9kZWxheV9zYW1wbGVzID4gMCkgewogICAgIGJsb2NrX2RlbGF5X2J1ZmZlcl8uRGVsYXlT
aWduYWwoY2FwdHVyZSk7CkBAIC01MDQsOSArNTAwLDYgQEAgdm9pZCBFY2hvQ2FuY2VsbGVyMzo6
RW1wdHlSZW5kZXJRdWV1ZSgpIHsKICAgYm9vbCBmcmFtZV90b19idWZmZXIgPQogICAgICAgcmVu
ZGVyX3RyYW5zZmVyX3F1ZXVlXy5SZW1vdmUoJnJlbmRlcl9xdWV1ZV9vdXRwdXRfZnJhbWVfKTsK
ICAgd2hpbGUgKGZyYW1lX3RvX2J1ZmZlcikgewotICAgIC8vIFJlcG9ydCByZW5kZXIgY2FsbCBp
biB0aGUgbWV0cmljcy4KLSAgICBhcGlfY2FsbF9tZXRyaWNzXy5SZXBvcnRSZW5kZXJDYWxsKCk7
Ci0KICAgICBCdWZmZXJSZW5kZXJGcmFtZUNvbnRlbnQoJnJlbmRlcl9xdWV1ZV9vdXRwdXRfZnJh
bWVfLCAwLCAmcmVuZGVyX2Jsb2NrZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
bG9ja19wcm9jZXNzb3JfLmdldCgpLCAmYmxvY2tfLCAmc3ViX2ZyYW1lX3ZpZXdfKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX2NhbmNlbGxlcjMuaAppbmRleCA2NzFkMjcxNjc2NzVjNjZjOTljM2UyMWUyNTcyYzZi
YWY3MzRlNGYyLi4wZDA3NzAyYzg0ZjQ3YjRlYTNhODI1NDk5OTE5NTFhNTcyOWMwZmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lY2hvX2NhbmNlbGxlcjMuaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jb250cm9sLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19kZWxheV9idWZmZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19mcmFtZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3Iu
aCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBjbGFzcyBFY2hvQ2FuY2VsbGVyMyA6IHB1YmxpYyBFY2hv
Q29udHJvbCB7CiAgIHN0ZDo6dmVjdG9yPHJ0Yzo6QXJyYXlWaWV3PGZsb2F0Pj4gc3ViX2ZyYW1l
X3ZpZXdfCiAgICAgICBSVENfR1VBUkRFRF9CWShjYXB0dXJlX3JhY2VfY2hlY2tlcl8pOwogICBC
bG9ja0RlbGF5QnVmZmVyIGJsb2NrX2RlbGF5X2J1ZmZlcl8gUlRDX0dVQVJERURfQlkoY2FwdHVy
ZV9yYWNlX2NoZWNrZXJfKTsKLSAgQXBpQ2FsbEppdHRlck1ldHJpY3MgYXBpX2NhbGxfbWV0cmlj
c18gUlRDX0dVQVJERURfQlkoY2FwdHVyZV9yYWNlX2NoZWNrZXJfKTsKIAogICBSVENfRElTQUxM
T1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEVjaG9DYW5jZWxsZXIzKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0
ZXJfYW5hbHl6ZXIuY2MKaW5kZXggNWI4OTBkNzQ3NDZjOWRlMWJjY2ZjNWYyYWUzMTM0ODAzYmMz
MWJkNS4uM2U2OWJlNjU4NTA2NmYwZWY1MWQzMjBiNTBjZWFkZWQyODAwOGNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2ZpbHRlcl9hbmFseXplci5jYwpAQCAtMjUsMTggKzI1LDIyIEBACiBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSB7CiAKLXNpemVfdCBGaW5kUGVha0luZGV4KHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBmaWx0ZXJfdGltZV9kb21haW4pIHsKLSAgc2l6ZV90IHBlYWtfaW5kZXggPSAw
OwotICBmbG9hdCBtYXhfaDIgPSBmaWx0ZXJfdGltZV9kb21haW5bMF0gKiBmaWx0ZXJfdGltZV9k
b21haW5bMF07Ci0gIGZvciAoc2l6ZV90IGsgPSAxOyBrIDwgZmlsdGVyX3RpbWVfZG9tYWluLnNp
emUoKTsgKytrKSB7CitzaXplX3QgRmluZFBlYWtJbmRleChydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gZmlsdGVyX3RpbWVfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBl
YWtfaW5kZXhfaW4sCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3RhcnRfc2FtcGxlLAor
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGVuZF9zYW1wbGUpIHsKKyAgc2l6ZV90IHBlYWtf
aW5kZXhfb3V0ID0gcGVha19pbmRleF9pbjsKKyAgZmxvYXQgbWF4X2gyID0KKyAgICAgIGZpbHRl
cl90aW1lX2RvbWFpbltwZWFrX2luZGV4X291dF0gKiBmaWx0ZXJfdGltZV9kb21haW5bcGVha19p
bmRleF9vdXRdOworICBmb3IgKHNpemVfdCBrID0gc3RhcnRfc2FtcGxlOyBrIDw9IGVuZF9zYW1w
bGU7ICsraykgewogICAgIGZsb2F0IHRtcCA9IGZpbHRlcl90aW1lX2RvbWFpbltrXSAqIGZpbHRl
cl90aW1lX2RvbWFpbltrXTsKICAgICBpZiAodG1wID4gbWF4X2gyKSB7Ci0gICAgICBwZWFrX2lu
ZGV4ID0gazsKKyAgICAgIHBlYWtfaW5kZXhfb3V0ID0gazsKICAgICAgIG1heF9oMiA9IHRtcDsK
ICAgICB9CiAgIH0KIAotICByZXR1cm4gcGVha19pbmRleDsKKyAgcmV0dXJuIHBlYWtfaW5kZXhf
b3V0OwogfQogCiBib29sIEVuYWJsZUZpbHRlclByZXByb2Nlc3NpbmcoKSB7CkBAIC00NCw2ICs0
OCwxMSBAQCBib29sIEVuYWJsZUZpbHRlclByZXByb2Nlc3NpbmcoKSB7CiAgICAgICAiV2ViUlRD
LUFlYzNGaWx0ZXJBbmFseXplclByZXByb2Nlc3NvcktpbGxTd2l0Y2giKTsKIH0KIAorYm9vbCBF
bmFibGVJbmNyZW1lbnRhbEFuYWx5c2lzKCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0Vu
YWJsZWQoCisgICAgICAiV2ViUlRDLUFlYzNGaWx0ZXJBbmFseXplckluY3JlbWVudGFsQW5hbHlz
aXNLaWxsU3dpdGNoIik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBpbnQgRmlsdGVyQW5hbHl6
ZXI6Omluc3RhbmNlX2NvdW50XyA9IDA7CkBAIC01NCw0NiArNjMsMzcgQEAgRmlsdGVyQW5hbHl6
ZXI6OkZpbHRlckFuYWx5emVyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpCiAg
ICAgICB1c2VfcHJlcHJvY2Vzc2VkX2ZpbHRlcl8oRW5hYmxlRmlsdGVyUHJlcHJvY2Vzc2luZygp
KSwKICAgICAgIGJvdW5kZWRfZXJsXyhjb25maWcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwpLAog
ICAgICAgZGVmYXVsdF9nYWluXyhjb25maWcuZXBfc3RyZW5ndGgubGYpLAotICAgICAgYWN0aXZl
X3JlbmRlcl90aHJlc2hvbGRfKGNvbmZpZy5yZW5kZXJfbGV2ZWxzLmFjdGl2ZV9yZW5kZXJfbGlt
aXQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJfbGV2ZWxz
LmFjdGl2ZV9yZW5kZXJfbGltaXQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtG
ZnRMZW5ndGhCeTIpLAorICAgICAgdXNlX2luY3JlbWVudGFsX2FuYWx5c2lzXyhFbmFibGVJbmNy
ZW1lbnRhbEFuYWx5c2lzKCkpLAogICAgICAgaF9oaWdocGFzc18oR2V0VGltZURvbWFpbkxlbmd0
aChjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyksIDAuZiksCi0gICAgICBmaWx0ZXJf
bGVuZ3RoX2Jsb2Nrc18oY29uZmlnLmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2Nrcykg
eworICAgICAgZmlsdGVyX2xlbmd0aF9ibG9ja3NfKGNvbmZpZy5maWx0ZXIubWFpbl9pbml0aWFs
Lmxlbmd0aF9ibG9ja3MpLAorICAgICAgY29uc2lzdGVudF9maWx0ZXJfZGV0ZWN0b3JfKGNvbmZp
ZykgewogICBSZXNldCgpOwogfQogCi12b2lkIEZpbHRlckFuYWx5emVyOjpQcmVQcm9jZXNzRmls
dGVyKAotICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBmaWx0ZXJfdGltZV9kb21haW4p
IHsKLSAgUlRDX0RDSEVDS19HRShoX2hpZ2hwYXNzXy5jYXBhY2l0eSgpLCBmaWx0ZXJfdGltZV9k
b21haW4uc2l6ZSgpKTsKLSAgaF9oaWdocGFzc18ucmVzaXplKGZpbHRlcl90aW1lX2RvbWFpbi5z
aXplKCkpOwotICAvLyBNaW5pbXVtIHBoYXNlIGhpZ2gtcGFzcyBmaWx0ZXIgd2l0aCBjdXRvZmYg
ZnJlcXVlbmN5IGF0IGFib3V0IDYwMCBIei4KLSAgY29uc3RleHByIHN0ZDo6YXJyYXk8ZmxvYXQs
IDM+IGggPSB7ezAuNzkyOTc0MmYsIC0wLjM2MDcyMTI4ZiwgLTAuNDcwNDc3NjZmfX07Ci0KLSAg
c3RkOjpmaWxsKGhfaGlnaHBhc3NfLmJlZ2luKCksIGhfaGlnaHBhc3NfLmVuZCgpLCAwLmYpOwot
ICBmb3IgKHNpemVfdCBrID0gaC5zaXplKCkgLSAxOyBrIDwgZmlsdGVyX3RpbWVfZG9tYWluLnNp
emUoKTsgKytrKSB7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBoLnNpemUoKTsgKytqKSB7
Ci0gICAgICBoX2hpZ2hwYXNzX1trXSArPSBmaWx0ZXJfdGltZV9kb21haW5bayAtIGpdICogaFtq
XTsKLSAgICB9Ci0gIH0KLX0KLQogRmlsdGVyQW5hbHl6ZXI6On5GaWx0ZXJBbmFseXplcigpID0g
ZGVmYXVsdDsKIAogdm9pZCBGaWx0ZXJBbmFseXplcjo6UmVzZXQoKSB7CiAgIGRlbGF5X2Jsb2Nr
c18gPSAwOwotICBjb25zaXN0ZW50X2VzdGltYXRlXyA9IGZhbHNlOwogICBibG9ja3Nfc2luY2Vf
cmVzZXRfID0gMDsKLSAgY29uc2lzdGVudF9lc3RpbWF0ZV8gPSBmYWxzZTsKLSAgY29uc2lzdGVu
dF9lc3RpbWF0ZV9jb3VudGVyXyA9IDA7Ci0gIGNvbnNpc3RlbnRfZGVsYXlfcmVmZXJlbmNlXyA9
IC0xMDsKICAgZ2Fpbl8gPSBkZWZhdWx0X2dhaW5fOworICBwZWFrX2luZGV4XyA9IDA7CisgIFJl
c2V0UmVnaW9uKCk7CisgIGNvbnNpc3RlbnRfZmlsdGVyX2RldGVjdG9yXy5SZXNldCgpOworfQor
Cit2b2lkIEZpbHRlckFuYWx5emVyOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IGZpbHRlcl90aW1lX2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIpIHsKKyAgU2V0UmVnaW9uVG9BbmFseXplKGZpbHRl
cl90aW1lX2RvbWFpbik7CisgIEFuYWx5emVSZWdpb24oZmlsdGVyX3RpbWVfZG9tYWluLCByZW5k
ZXJfYnVmZmVyKTsKIH0KIAotdm9pZCBGaWx0ZXJBbmFseXplcjo6VXBkYXRlKAordm9pZCBGaWx0
ZXJBbmFseXplcjo6QW5hbHl6ZVJlZ2lvbigKICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gZmlsdGVyX3RpbWVfZG9tYWluLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgotICAgICAgICBmaWx0ZXJfZnJlcV9yZXNwb25z
ZSwKICAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIpIHsKKyAgUlRDX0RDSEVD
S19MVChyZWdpb25fLnN0YXJ0X3NhbXBsZV8sIGZpbHRlcl90aW1lX2RvbWFpbi5zaXplKCkpOwor
ICBSVENfRENIRUNLX0xUKHBlYWtfaW5kZXhfLCBmaWx0ZXJfdGltZV9kb21haW4uc2l6ZSgpKTsK
KyAgUlRDX0RDSEVDS19MVChyZWdpb25fLmVuZF9zYW1wbGVfLCBmaWx0ZXJfdGltZV9kb21haW4u
c2l6ZSgpKTsKKwogICAvLyBQcmVwcm9jZXNzIHRoZSBmaWx0ZXIgdG8gYXZvaWQgaXNzdWVzIHdp
dGggbG93LWZyZXF1ZW5jeSBjb21wb25lbnRzIGluIHRoZQogICAvLyBmaWx0ZXIuCiAgIFByZVBy
b2Nlc3NGaWx0ZXIoZmlsdGVyX3RpbWVfZG9tYWluKTsKQEAgLTEwMyw1MSArMTAzLDE1IEBAIHZv
aWQgRmlsdGVyQW5hbHl6ZXI6OlVwZGF0ZSgKICAgICAgIHVzZV9wcmVwcm9jZXNzZWRfZmlsdGVy
XyA/IGhfaGlnaHBhc3NfIDogZmlsdGVyX3RpbWVfZG9tYWluOwogICBSVENfRENIRUNLX0VRKGZp
bHRlcl90b19hbmFseXplLnNpemUoKSwgZmlsdGVyX3RpbWVfZG9tYWluLnNpemUoKSk7CiAKLSAg
c2l6ZV90IHBlYWtfaW5kZXggPSBGaW5kUGVha0luZGV4KGZpbHRlcl90b19hbmFseXplKTsKLSAg
ZGVsYXlfYmxvY2tzXyA9IHBlYWtfaW5kZXggPj4ga0Jsb2NrU2l6ZUxvZzI7Ci0gIFVwZGF0ZUZp
bHRlckdhaW4oZmlsdGVyX3RvX2FuYWx5emUsIHBlYWtfaW5kZXgpOwotCi0gIGZsb2F0IGZpbHRl
cl9mbG9vciA9IDA7Ci0gIGZsb2F0IGZpbHRlcl9zZWNvbmRhcnlfcGVhayA9IDA7Ci0gIHNpemVf
dCBsaW1pdDEgPSBwZWFrX2luZGV4IDwgNjQgPyAwIDogcGVha19pbmRleCAtIDY0OwotICBzaXpl
X3QgbGltaXQyID0KLSAgICAgIHBlYWtfaW5kZXggPiBmaWx0ZXJfdG9fYW5hbHl6ZS5zaXplKCkg
LSAxMjkgPyAwIDogcGVha19pbmRleCArIDEyODsKLQotICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IGxpbWl0MTsgKytrKSB7Ci0gICAgZmxvYXQgYWJzX2ggPSBmYWJzZihmaWx0ZXJfdG9fYW5hbHl6
ZVtrXSk7Ci0gICAgZmlsdGVyX2Zsb29yICs9IGFic19oOwotICAgIGZpbHRlcl9zZWNvbmRhcnlf
cGVhayA9IHN0ZDo6bWF4KGZpbHRlcl9zZWNvbmRhcnlfcGVhaywgYWJzX2gpOwotICB9Ci0gIGZv
ciAoc2l6ZV90IGsgPSBsaW1pdDI7IGsgPCBmaWx0ZXJfdG9fYW5hbHl6ZS5zaXplKCk7ICsraykg
ewotICAgIGZsb2F0IGFic19oID0gZmFic2YoZmlsdGVyX3RvX2FuYWx5emVba10pOwotICAgIGZp
bHRlcl9mbG9vciArPSBhYnNfaDsKLSAgICBmaWx0ZXJfc2Vjb25kYXJ5X3BlYWsgPSBzdGQ6Om1h
eChmaWx0ZXJfc2Vjb25kYXJ5X3BlYWssIGFic19oKTsKLSAgfQotCi0gIGZpbHRlcl9mbG9vciAv
PSAobGltaXQxICsgZmlsdGVyX3RvX2FuYWx5emUuc2l6ZSgpIC0gbGltaXQyKTsKLQotICBmbG9h
dCBhYnNfcGVhayA9IGZhYnNmKGZpbHRlcl90b19hbmFseXplW3BlYWtfaW5kZXhdKTsKLSAgYm9v
bCBzaWduaWZpY2FudF9wZWFrX2luZGV4ID0KLSAgICAgIGFic19wZWFrID4gMTAuZiAqIGZpbHRl
cl9mbG9vciAmJiBhYnNfcGVhayA+IDIuZiAqIGZpbHRlcl9zZWNvbmRhcnlfcGVhazsKLQotICBp
ZiAoY29uc2lzdGVudF9kZWxheV9yZWZlcmVuY2VfICE9IGRlbGF5X2Jsb2Nrc18gfHwgIXNpZ25p
ZmljYW50X3BlYWtfaW5kZXgpIHsKLSAgICBjb25zaXN0ZW50X2VzdGltYXRlX2NvdW50ZXJfID0g
MDsKLSAgICBjb25zaXN0ZW50X2RlbGF5X3JlZmVyZW5jZV8gPSBkZWxheV9ibG9ja3NfOwotICB9
IGVsc2UgewotICAgIGNvbnN0IGF1dG8mIHggPSByZW5kZXJfYnVmZmVyLkJsb2NrKC1kZWxheV9i
bG9ja3NfKVswXTsKLSAgICBjb25zdCBmbG9hdCB4X2VuZXJneSA9Ci0gICAgICAgIHN0ZDo6aW5u
ZXJfcHJvZHVjdCh4LmJlZ2luKCksIHguZW5kKCksIHguYmVnaW4oKSwgMC5mKTsKLSAgICBjb25z
dCBib29sIGFjdGl2ZV9yZW5kZXJfYmxvY2sgPSB4X2VuZXJneSA+IGFjdGl2ZV9yZW5kZXJfdGhy
ZXNob2xkXzsKLQotICAgIGlmIChhY3RpdmVfcmVuZGVyX2Jsb2NrKSB7Ci0gICAgICArK2NvbnNp
c3RlbnRfZXN0aW1hdGVfY291bnRlcl87Ci0gICAgfQotICB9Ci0KLSAgY29uc2lzdGVudF9lc3Rp
bWF0ZV8gPQotICAgICAgY29uc2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA+IDEuNWYgKiBrTnVt
QmxvY2tzUGVyU2Vjb25kOwotCisgIHBlYWtfaW5kZXhfID0gRmluZFBlYWtJbmRleChmaWx0ZXJf
dG9fYW5hbHl6ZSwgcGVha19pbmRleF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWdpb25fLnN0YXJ0X3NhbXBsZV8sIHJlZ2lvbl8uZW5kX3NhbXBsZV8pOworICBkZWxheV9ibG9j
a3NfID0gcGVha19pbmRleF8gPj4ga0Jsb2NrU2l6ZUxvZzI7CisgIFVwZGF0ZUZpbHRlckdhaW4o
ZmlsdGVyX3RvX2FuYWx5emUsIHBlYWtfaW5kZXhfKTsKICAgZmlsdGVyX2xlbmd0aF9ibG9ja3Nf
ID0gZmlsdGVyX3RpbWVfZG9tYWluLnNpemUoKSAqICgxLmYgLyBrQmxvY2tTaXplKTsKKworICBj
b25zaXN0ZW50X2VzdGltYXRlXyA9IGNvbnNpc3RlbnRfZmlsdGVyX2RldGVjdG9yXy5EZXRlY3Qo
CisgICAgICBmaWx0ZXJfdG9fYW5hbHl6ZSwgcmVnaW9uXywgcmVuZGVyX2J1ZmZlci5CbG9jaygt
ZGVsYXlfYmxvY2tzXylbMF0sCisgICAgICBwZWFrX2luZGV4XywgZGVsYXlfYmxvY2tzXyk7CiB9
CiAKIHZvaWQgRmlsdGVyQW5hbHl6ZXI6OlVwZGF0ZUZpbHRlckdhaW4oCkBAIC0xNjksNCArMTMz
LDExNCBAQCB2b2lkIEZpbHRlckFuYWx5emVyOjpVcGRhdGVGaWx0ZXJHYWluKAogICB9CiB9CiAK
K3ZvaWQgRmlsdGVyQW5hbHl6ZXI6OlByZVByb2Nlc3NGaWx0ZXIoCisgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgZmxvYXQ+IGZpbHRlcl90aW1lX2RvbWFpbikgeworICBSVENfRENIRUNLX0dFKGhf
aGlnaHBhc3NfLmNhcGFjaXR5KCksIGZpbHRlcl90aW1lX2RvbWFpbi5zaXplKCkpOworICBoX2hp
Z2hwYXNzXy5yZXNpemUoZmlsdGVyX3RpbWVfZG9tYWluLnNpemUoKSk7CisgIC8vIE1pbmltdW0g
cGhhc2UgaGlnaC1wYXNzIGZpbHRlciB3aXRoIGN1dG9mZiBmcmVxdWVuY3kgYXQgYWJvdXQgNjAw
IEh6LgorICBjb25zdGV4cHIgc3RkOjphcnJheTxmbG9hdCwgMz4gaCA9IHt7MC43OTI5NzQyZiwg
LTAuMzYwNzIxMjhmLCAtMC40NzA0Nzc2NmZ9fTsKKworICBzdGQ6OmZpbGwoaF9oaWdocGFzc18u
YmVnaW4oKSArIHJlZ2lvbl8uc3RhcnRfc2FtcGxlXywKKyAgICAgICAgICAgIGhfaGlnaHBhc3Nf
LmJlZ2luKCkgKyByZWdpb25fLmVuZF9zYW1wbGVfICsgMSwgMC5mKTsKKyAgZm9yIChzaXplX3Qg
ayA9IHN0ZDo6bWF4KGguc2l6ZSgpIC0gMSwgcmVnaW9uXy5zdGFydF9zYW1wbGVfKTsKKyAgICAg
ICBrIDw9IHJlZ2lvbl8uZW5kX3NhbXBsZV87ICsraykgeworICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgaC5zaXplKCk7ICsraikgeworICAgICAgaF9oaWdocGFzc19ba10gKz0gZmlsdGVyX3Rp
bWVfZG9tYWluW2sgLSBqXSAqIGhbal07CisgICAgfQorICB9Cit9CisKK3ZvaWQgRmlsdGVyQW5h
bHl6ZXI6OlJlc2V0UmVnaW9uKCkgeworICByZWdpb25fLnN0YXJ0X3NhbXBsZV8gPSAwOworICBy
ZWdpb25fLmVuZF9zYW1wbGVfID0gMDsKK30KKwordm9pZCBGaWx0ZXJBbmFseXplcjo6U2V0UmVn
aW9uVG9BbmFseXplKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBmaWx0ZXJfdGlt
ZV9kb21haW4pIHsKKyAgY29uc3RleHByIHNpemVfdCBrTnVtYmVyQmxvY2tzVG9VcGRhdGUgPSAx
OworICBhdXRvJiByID0gcmVnaW9uXzsKKyAgaWYgKHVzZV9pbmNyZW1lbnRhbF9hbmFseXNpc18p
IHsKKyAgICByLnN0YXJ0X3NhbXBsZV8gPQorICAgICAgICByLmVuZF9zYW1wbGVfID09IGZpbHRl
cl90aW1lX2RvbWFpbi5zaXplKCkgLSAxID8gMCA6IHIuZW5kX3NhbXBsZV8gKyAxOworICAgIHIu
ZW5kX3NhbXBsZV8gPQorICAgICAgICBzdGQ6Om1pbihyLnN0YXJ0X3NhbXBsZV8gKyBrTnVtYmVy
QmxvY2tzVG9VcGRhdGUgKiBrQmxvY2tTaXplIC0gMSwKKyAgICAgICAgICAgICAgICAgZmlsdGVy
X3RpbWVfZG9tYWluLnNpemUoKSAtIDEpOworCisgIH0gZWxzZSB7CisgICAgci5zdGFydF9zYW1w
bGVfID0gMDsKKyAgICByLmVuZF9zYW1wbGVfID0gZmlsdGVyX3RpbWVfZG9tYWluLnNpemUoKSAt
IDE7CisgIH0KK30KKworRmlsdGVyQW5hbHl6ZXI6OkNvbnNpc3RlbnRGaWx0ZXJEZXRlY3Rvcjo6
Q29uc2lzdGVudEZpbHRlckRldGVjdG9yKAorICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmln
JiBjb25maWcpCisgICAgOiBhY3RpdmVfcmVuZGVyX3RocmVzaG9sZF8oY29uZmlnLnJlbmRlcl9s
ZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCAqCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0ZmdExlbmd0aEJ5Mikge30KKwordm9pZCBGaWx0ZXJBbmFs
eXplcjo6Q29uc2lzdGVudEZpbHRlckRldGVjdG9yOjpSZXNldCgpIHsKKyAgc2lnbmlmaWNhbnRf
cGVha18gPSBmYWxzZTsKKyAgZmlsdGVyX2Zsb29yX2FjY3VtXyA9IDAuZjsKKyAgZmlsdGVyX3Nl
Y29uZGFyeV9wZWFrXyA9IDAuZjsKKyAgZmlsdGVyX2Zsb29yX2xvd19saW1pdF8gPSAwOworICBm
aWx0ZXJfZmxvb3JfaGlnaF9saW1pdF8gPSAwOworICBjb25zaXN0ZW50X2VzdGltYXRlX2NvdW50
ZXJfID0gMDsKKyAgY29uc2lzdGVudF9kZWxheV9yZWZlcmVuY2VfID0gLTEwOworfQorCitib29s
IEZpbHRlckFuYWx5emVyOjpDb25zaXN0ZW50RmlsdGVyRGV0ZWN0b3I6OkRldGVjdCgKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gZmlsdGVyX3RvX2FuYWx5emUsCisgICAgY29uc3Qg
RmlsdGVyUmVnaW9uJiByZWdpb24sCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHhf
YmxvY2ssCisgICAgc2l6ZV90IHBlYWtfaW5kZXgsCisgICAgaW50IGRlbGF5X2Jsb2Nrcykgewor
ICBpZiAocmVnaW9uLnN0YXJ0X3NhbXBsZV8gPT0gMCkgeworICAgIGZpbHRlcl9mbG9vcl9hY2N1
bV8gPSAwLmY7CisgICAgZmlsdGVyX3NlY29uZGFyeV9wZWFrXyA9IDAuZjsKKyAgICBmaWx0ZXJf
Zmxvb3JfbG93X2xpbWl0XyA9IHBlYWtfaW5kZXggPCA2NCA/IDAgOiBwZWFrX2luZGV4IC0gNjQ7
CisgICAgZmlsdGVyX2Zsb29yX2hpZ2hfbGltaXRfID0KKyAgICAgICAgcGVha19pbmRleCA+IGZp
bHRlcl90b19hbmFseXplLnNpemUoKSAtIDEyOSA/IDAgOiBwZWFrX2luZGV4ICsgMTI4OworICB9
CisKKyAgZm9yIChzaXplX3QgayA9IHJlZ2lvbi5zdGFydF9zYW1wbGVfOworICAgICAgIGsgPCBz
dGQ6Om1pbihyZWdpb24uZW5kX3NhbXBsZV8gKyAxLCBmaWx0ZXJfZmxvb3JfbG93X2xpbWl0Xyk7
ICsraykgeworICAgIGZsb2F0IGFic19oID0gZmFic2YoZmlsdGVyX3RvX2FuYWx5emVba10pOwor
ICAgIGZpbHRlcl9mbG9vcl9hY2N1bV8gKz0gYWJzX2g7CisgICAgZmlsdGVyX3NlY29uZGFyeV9w
ZWFrXyA9IHN0ZDo6bWF4KGZpbHRlcl9zZWNvbmRhcnlfcGVha18sIGFic19oKTsKKyAgfQorCisg
IGZvciAoc2l6ZV90IGsgPSBzdGQ6Om1heChmaWx0ZXJfZmxvb3JfaGlnaF9saW1pdF8sIHJlZ2lv
bi5zdGFydF9zYW1wbGVfKTsKKyAgICAgICBrIDw9IHJlZ2lvbi5lbmRfc2FtcGxlXzsgKytrKSB7
CisgICAgZmxvYXQgYWJzX2ggPSBmYWJzZihmaWx0ZXJfdG9fYW5hbHl6ZVtrXSk7CisgICAgZmls
dGVyX2Zsb29yX2FjY3VtXyArPSBhYnNfaDsKKyAgICBmaWx0ZXJfc2Vjb25kYXJ5X3BlYWtfID0g
c3RkOjptYXgoZmlsdGVyX3NlY29uZGFyeV9wZWFrXywgYWJzX2gpOworICB9CisKKyAgaWYgKHJl
Z2lvbi5lbmRfc2FtcGxlXyA9PSBmaWx0ZXJfdG9fYW5hbHl6ZS5zaXplKCkgLSAxKSB7CisgICAg
ZmxvYXQgZmlsdGVyX2Zsb29yID0gZmlsdGVyX2Zsb29yX2FjY3VtXyAvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKGZpbHRlcl9mbG9vcl9sb3dfbGltaXRfICsgZmlsdGVyX3RvX2FuYWx5emUu
c2l6ZSgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2Zsb29yX2hpZ2hfbGlt
aXRfKTsKKworICAgIGZsb2F0IGFic19wZWFrID0gZmFic2YoZmlsdGVyX3RvX2FuYWx5emVbcGVh
a19pbmRleF0pOworICAgIHNpZ25pZmljYW50X3BlYWtfID0gYWJzX3BlYWsgPiAxMC5mICogZmls
dGVyX2Zsb29yICYmCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNfcGVhayA+IDIuZiAqIGZp
bHRlcl9zZWNvbmRhcnlfcGVha187CisgIH0KKworICBpZiAoc2lnbmlmaWNhbnRfcGVha18pIHsK
KyAgICBjb25zdCBmbG9hdCB4X2VuZXJneSA9IHN0ZDo6aW5uZXJfcHJvZHVjdCh4X2Jsb2NrLmJl
Z2luKCksIHhfYmxvY2suZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeF9ibG9jay5iZWdpbigpLCAwLmYpOworICAgIGNvbnN0IGJvb2wgYWN0aXZl
X3JlbmRlcl9ibG9jayA9IHhfZW5lcmd5ID4gYWN0aXZlX3JlbmRlcl90aHJlc2hvbGRfOworCisg
ICAgaWYgKGNvbnNpc3RlbnRfZGVsYXlfcmVmZXJlbmNlXyA9PSBkZWxheV9ibG9ja3MpIHsKKyAg
ICAgIGlmIChhY3RpdmVfcmVuZGVyX2Jsb2NrKSB7CisgICAgICAgICsrY29uc2lzdGVudF9lc3Rp
bWF0ZV9jb3VudGVyXzsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgY29uc2lzdGVudF9l
c3RpbWF0ZV9jb3VudGVyXyA9IDA7CisgICAgICBjb25zaXN0ZW50X2RlbGF5X3JlZmVyZW5jZV8g
PSBkZWxheV9ibG9ja3M7CisgICAgfQorICB9CisgIHJldHVybiBjb25zaXN0ZW50X2VzdGltYXRl
X2NvdW50ZXJfID4gMS41ZiAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7Cit9CisKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmgKaW5kZXggOTlhMGUyNTk3Mzc3MjM0
YWUyMTkwODFhYThkMzNlMTBmOTc4NTUyYS4uZTBmZDA2OTVjYjllOTY1OTk4YTNmZWQ4ZTdjYjdk
YThmNDU2YWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmgKQEAgLTM3LDggKzM3LDYgQEAg
Y2xhc3MgRmlsdGVyQW5hbHl6ZXIgewogCiAgIC8vIFVwZGF0ZXMgdGhlIGVzdGltYXRlcyB3aXRo
IG5ldyBpbnB1dCBkYXRhLgogICB2b2lkIFVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gZmlsdGVyX3RpbWVfZG9tYWluLAotICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKLSAgICAgICAgICAgICAgICAg
IGZpbHRlcl9mcmVxX3Jlc3BvbnNlLAogICAgICAgICAgICAgICBjb25zdCBSZW5kZXJCdWZmZXIm
IHJlbmRlcl9idWZmZXIpOwogCiAgIC8vIFJldHVybnMgdGhlIGRlbGF5IG9mIHRoZSBmaWx0ZXIg
aW4gdGVybXMgb2YgYmxvY2tzLgpAQCAtNTgsMjQgKzU2LDYxIEBAIGNsYXNzIEZpbHRlckFuYWx5
emVyIHsKICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldEFkanVzdGVkRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gaF9oaWdocGFzc187IH0KIAogIHByaXZhdGU6CisgIHZvaWQgQW5hbHl6
ZVJlZ2lvbihydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gZmlsdGVyX3RpbWVfZG9tYWluLAor
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyKTsK
KwogICB2b2lkIFVwZGF0ZUZpbHRlckdhaW4ocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGZp
bHRlcl90aW1lX2RvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfaW5k
ZXgpOwogICB2b2lkIFByZVByb2Nlc3NGaWx0ZXIocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IGZpbHRlcl90aW1lX2RvbWFpbik7CiAKKyAgdm9pZCBSZXNldFJlZ2lvbigpOworCisgIHZvaWQg
U2V0UmVnaW9uVG9BbmFseXplKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBmaWx0ZXJfdGlt
ZV9kb21haW4pOworCisgIHN0cnVjdCBGaWx0ZXJSZWdpb24geworICAgIHNpemVfdCBzdGFydF9z
YW1wbGVfOworICAgIHNpemVfdCBlbmRfc2FtcGxlXzsKKyAgfTsKKworICAvLyBUaGlzIGNsYXNz
IGNoZWNrcyB3aGV0aGVyIHRoZSBzaGFwZSBvZiB0aGUgaW1wdWxzZSByZXNwb25zZSBoYXMgYmVl
bgorICAvLyBjb25zaXN0ZW50IG92ZXIgdGltZS4KKyAgY2xhc3MgQ29uc2lzdGVudEZpbHRlckRl
dGVjdG9yIHsKKyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBDb25zaXN0ZW50RmlsdGVyRGV0ZWN0
b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisgICAgdm9pZCBSZXNldCgp
OworICAgIGJvb2wgRGV0ZWN0KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBmaWx0ZXJfdG9f
YW5hbHl6ZSwKKyAgICAgICAgICAgICAgICBjb25zdCBGaWx0ZXJSZWdpb24mIHJlZ2lvbiwKKyAg
ICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geF9ibG9jaywKKyAgICAg
ICAgICAgICAgICBzaXplX3QgcGVha19pbmRleCwKKyAgICAgICAgICAgICAgICBpbnQgZGVsYXlf
YmxvY2tzKTsKKworICAgcHJpdmF0ZToKKyAgICBib29sIHNpZ25pZmljYW50X3BlYWtfOworICAg
IGZsb2F0IGZpbHRlcl9mbG9vcl9hY2N1bV87CisgICAgZmxvYXQgZmlsdGVyX3NlY29uZGFyeV9w
ZWFrXzsKKyAgICBzaXplX3QgZmlsdGVyX2Zsb29yX2xvd19saW1pdF87CisgICAgc2l6ZV90IGZp
bHRlcl9mbG9vcl9oaWdoX2xpbWl0XzsKKyAgICBjb25zdCBmbG9hdCBhY3RpdmVfcmVuZGVyX3Ro
cmVzaG9sZF87CisgICAgc2l6ZV90IGNvbnNpc3RlbnRfZXN0aW1hdGVfY291bnRlcl8gPSAwOwor
ICAgIGludCBjb25zaXN0ZW50X2RlbGF5X3JlZmVyZW5jZV8gPSAtMTA7CisgIH07CisKICAgc3Rh
dGljIGludCBpbnN0YW5jZV9jb3VudF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVy
PiBkYXRhX2R1bXBlcl87CiAgIGNvbnN0IGJvb2wgdXNlX3ByZXByb2Nlc3NlZF9maWx0ZXJfOwog
ICBjb25zdCBib29sIGJvdW5kZWRfZXJsXzsKICAgY29uc3QgZmxvYXQgZGVmYXVsdF9nYWluXzsK
LSAgY29uc3QgZmxvYXQgYWN0aXZlX3JlbmRlcl90aHJlc2hvbGRfOworICBjb25zdCBib29sIHVz
ZV9pbmNyZW1lbnRhbF9hbmFseXNpc187CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBoX2hpZ2hwYXNz
XzsKICAgaW50IGRlbGF5X2Jsb2Nrc18gPSAwOwogICBzaXplX3QgYmxvY2tzX3NpbmNlX3Jlc2V0
XyA9IDA7CiAgIGJvb2wgY29uc2lzdGVudF9lc3RpbWF0ZV8gPSBmYWxzZTsKLSAgc2l6ZV90IGNv
bnNpc3RlbnRfZXN0aW1hdGVfY291bnRlcl8gPSAwOwotICBpbnQgY29uc2lzdGVudF9kZWxheV9y
ZWZlcmVuY2VfID0gLTEwOwogICBmbG9hdCBnYWluXzsKKyAgc2l6ZV90IHBlYWtfaW5kZXhfOwog
ICBpbnQgZmlsdGVyX2xlbmd0aF9ibG9ja3NfOworICBGaWx0ZXJSZWdpb24gcmVnaW9uXzsKKyAg
Q29uc2lzdGVudEZpbHRlckRldGVjdG9yIGNvbnNpc3RlbnRfZmlsdGVyX2RldGVjdG9yXzsKKwog
ICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZpbHRlckFuYWx5emVyKTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdXBwcmVzc2lvbl9nYWluLmNjCmluZGV4IDg4Y2ZjMGEwMWU0ZTBkMTgzODVjNTliZmM2
MTgwYzdjZTk3NzM2ODEuLmM2ZDJiZjY2NzNlZjQzYzc0OTczMjViODRjNzJkZDRjNmEzNDgzMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5jYwpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQg
U3VwcHJlc3Npb25HYWluOjpEb21pbmFudE5lYXJlbmREZXRlY3Rvcjo6VXBkYXRlKAogICAvLyBE
ZXRlY3Qgc3Ryb25nIGFjdGl2ZSBuZWFyZW5kIGlmIHRoZSBuZWFyZW5kIGlzIHN1ZmZpY2llbnRs
eSBzdHJvbmdlciB0aGFuCiAgIC8vIHRoZSBlY2hvIGFuZCB0aGUgbmVhcmVuZCBub2lzZS4KICAg
aWYgKCghaW5pdGlhbF9zdGF0ZSB8fCB1c2VfZHVyaW5nX2luaXRpYWxfcGhhc2VfKSAmJgotICAg
ICAgbmVfc3VtID4gZW5yX3RocmVzaG9sZF8gKiBlY2hvX3N1bSAmJgorICAgICAgZWNob19zdW0g
PCBlbnJfdGhyZXNob2xkXyAqIG5lX3N1bSAmJgogICAgICAgbmVfc3VtID4gc25yX3RocmVzaG9s
ZF8gKiBub2lzZV9zdW0pIHsKICAgICBpZiAoKyt0cmlnZ2VyX2NvdW50ZXJfID49IHRyaWdnZXJf
dGhyZXNob2xkXykgewogICAgICAgLy8gQWZ0ZXIgYSBwZXJpb2Qgb2Ygc3Ryb25nIGFjdGl2ZSBu
ZWFyZW5kIGFjdGl2aXR5LCBmbGFnIG5lYXJlbmQgbW9kZS4KQEAgLTQzMiw3ICs0MzIsNyBAQCB2
b2lkIFN1cHByZXNzaW9uR2Fpbjo6RG9taW5hbnROZWFyZW5kRGV0ZWN0b3I6OlVwZGF0ZSgKICAg
fQogCiAgIC8vIEV4aXQgbmVhcmVuZC1zdGF0ZSBlYXJseSBhdCBzdHJvbmcgZWNoby4KLSAgaWYg
KG5lX3N1bSA8IGVucl9leGl0X3RocmVzaG9sZF8gKiBlY2hvX3N1bSAmJgorICBpZiAoZWNob19z
dW0gPiBlbnJfZXhpdF90aHJlc2hvbGRfICogbmVfc3VtICYmCiAgICAgICBlY2hvX3N1bSA+IHNu
cl90aHJlc2hvbGRfICogbm9pc2Vfc3VtKSB7CiAgICAgaG9sZF9jb3VudGVyXyA9IDA7CiAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JVSUxELmduCmluZGV4IGVkYjk4MWJjNjdlZGMx
NzJkMWFkODU4YjU5NDM1YTQwYTBiNjU4MzUuLjRmNjIxODQ3ZjVkZWM0MmFhNjU4OTI5YTRjYWQy
MTc1NGM3ZDBiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9CVUlMRC5nbgpAQCAt
MTEsNyArMTEsNiBAQCBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogcnRjX3NvdXJjZV9zZXQo
InJ0cF9ydGNwX2Zvcm1hdCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgcHVibGljID0g
WwotICAgICJpbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIiwKICAgICAiaW5jbHVkZS9ydHBfY3Zv
LmgiLAogICAgICJpbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIiwKICAgICAiaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVf
c3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oCmluZGV4IGMyOTll
YTY5ZDY2ZWMwM2JkNDgxZGM3OWU4NmM1Mzk3MzQ1NDFkYjAuLmY5MDVlYjE1ZjE5OTg2NTkwZDMy
YTk2MzFhYmYyZDY1NDEzZjBhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRp
c3RpY3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgKQEAgLTE4LDcgKzE4
LDYgQEAKICNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRfc2lua19pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9yZXBvcnRfYmxvY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlv
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0Y3Bfc3RhdGlzdGljcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ1NzZk
ZTJkODZmYThlODUyMjZiYmZiNTlmNWE2YjM4NzRiZjYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZu
ZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVENQX1NUQVRJU1RJQ1NfSF8KLSNkZWZpbmUg
TU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUQ1BfU1RBVElTVElDU19IXwotCi0jaW5jbHVkZSA8
c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBTdGF0aXN0aWNzIGZvciBhbiBS
VENQIGNoYW5uZWwKLXN0cnVjdCBSdGNwU3RhdGlzdGljcyB7Ci0gIHVpbnQ4X3QgZnJhY3Rpb25f
bG9zdCA9IDA7Ci0gIGludDMyX3QgcGFja2V0c19sb3N0ID0gMDsgIC8vIERlZmluZWQgYXMgYSAy
NCBiaXQgc2lnbmVkIGludGVnZXIgaW4gUlRDUAotICB1aW50MzJfdCBleHRlbmRlZF9oaWdoZXN0
X3NlcXVlbmNlX251bWJlciA9IDA7Ci0gIHVpbnQzMl90IGppdHRlciA9IDA7Ci19OwotCi1jbGFz
cyBSdGNwU3RhdGlzdGljc0NhbGxiYWNrIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflJ0Y3BTdGF0
aXN0aWNzQ2FsbGJhY2soKSB7fQotCi0gIHZpcnR1YWwgdm9pZCBTdGF0aXN0aWNzVXBkYXRlZChj
b25zdCBSdGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHNzcmMpID0gMDsKLSAgdmlydHVhbCB2b2lkIENOYW1lQ2hhbmdl
ZChjb25zdCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykgPSAwOwotfTsKLQotfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwotI2VuZGlmICAvLyBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUlRDUF9T
VEFUSVNUSUNTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfcnRjcC5oCmluZGV4IGQxMzZhNWU2ZTlhM2JhNzYyM2NjYjNjNGM3MzIxMzEyMTI3MTRk
NjkuLmQ4MWVhOWFiZWM4NTRmZDMwZThkNjIwYTQwYmMzNWM3NjFhNzYzNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9ydHBfcnRjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oCkBAIC0xOCw5
ICsxOCw5IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNs
dWRlL21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVj
X3NlbmRlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3Bf
ZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgKaW5kZXggYWI0ZmNh
ZWNjNzlhNDgxMDcxYmMxNjZkYzc5YTUyZmViMGE2MjU1Ni4uYThiZjVhNzA1ZmM5MDNjOWI0MWE0
NTdiOGMyZDZiZTcyZWVlOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmlu
ZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oCkBAIC0xMDQsNyArMTA0LDcg
QEAgZW51bSBSVFBFeHRlbnNpb25UeXBlIDogaW50IHsKICAga1J0cEV4dGVuc2lvblJlcGFpcmVk
UnRwU3RyZWFtSWQsCiAgIGtSdHBFeHRlbnNpb25NaWQsCiAgIGtSdHBFeHRlbnNpb25HZW5lcmlj
RnJhbWVEZXNjcmlwdG9yLAotICBrUnRwRXh0ZW5zaW9uQ29sb3JTcGFjZSwKKyAga1J0cEV4dGVu
c2lvbkhkck1ldGFkYXRhLAogICBrUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zICAvLyBN
dXN0IGJlIHRoZSBsYXN0IGVudGl0eSBpbiB0aGUgZW51bS4KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaAppbmRleCBi
ZTRjNzBlM2NlYTQ5MTg2ZTAwOWJkMTdmNmQwY2Q0ZTFiNDQ4NjQ1Li45MzNmYWY5Y2VjMmNiMGIw
NjVhN2UyODlmYWRlZTNlMWRmMGYwMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2Vp
dmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5oCkBAIC0xNyw3ICsxNyw2IEBACiAj
aW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfcGFja2V0L2RscnIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9o
ZWFkZXJfZXh0ZW5zaW9uX21hcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21h
cC5jYwppbmRleCA4ZTBhNDg0ZDk3NzRlNjA2ZWFkODQ1Y2RhNDZlNDA4NzI2NmNjNzJmLi40OTg1
N2EwMzM4NjJkYTgwMTQyN2I3NDAyYmZlNTU1MDY2MWEwM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9l
eHRlbnNpb25fbWFwLmNjCkBAIC00Myw3ICs0Myw3IEBAIGNvbnN0ZXhwciBFeHRlbnNpb25JbmZv
IGtFeHRlbnNpb25zW10gPSB7CiAgICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSZXBhaXJlZFJ0cFN0
cmVhbUlkPigpLAogICAgIENyZWF0ZUV4dGVuc2lvbkluZm88UnRwTWlkPigpLAogICAgIENyZWF0
ZUV4dGVuc2lvbkluZm88UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oKSwKLSAg
ICBDcmVhdGVFeHRlbnNpb25JbmZvPENvbG9yU3BhY2VFeHRlbnNpb24+KCksCisgICAgQ3JlYXRl
RXh0ZW5zaW9uSW5mbzxIZHJNZXRhZGF0YUV4dGVuc2lvbj4oKSwKIH07CiAKIC8vIEJlY2F1c2Ug
b2Yga1J0cEV4dGVuc2lvbk5vbmUsIE51bWJlck9mRXh0ZW5zaW9uIGlzIDEgYmlnZ2VyIHRoYW4g
dGhlIGFjdHVhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNjCmluZGV4IDkyNjk0Y2Q1YTNhNDY2
YTMyOGQ4MWM0Mzc3ZjA0NTYxYjI4YjIwODAuLmZlMzI3YjMwMTEyNDBiZjkyNzZhYTlkODI5ZDk1
ZDMxNTU4YjkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MKQEAgLTQzNCwxOCArNDM0
LDE1IEBAIGJvb2wgRnJhbWVNYXJraW5nRXh0ZW5zaW9uOjpXcml0ZShydGM6OkFycmF5Vmlldzx1
aW50OF90PiBkYXRhLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gQ29sb3Igc3BhY2UgaW5jbHVk
aW5nIEhEUiBtZXRhZGF0YSBhcyBhbiBvcHRpb25hbCBmaWVsZC4KKy8vIEhEUiBNZXRhZGF0YS4K
IC8vCiAvLyBSVFAgaGVhZGVyIGV4dGVuc2lvbiB0byBjYXJyeSBIRFIgbWV0YWRhdGEuCiAvLyBG
bG9hdCB2YWx1ZXMgYXJlIHVwc2NhbGVkIGJ5IGEgc3RhdGljIGZhY3RvciBhbmQgdHJhbnNtaXR0
ZWQgYXMgaW50ZWdlcnMuCiAvLwotLy8gRGF0YSBsYXlvdXQgd2l0aCBIRFIgbWV0YWRhdGEKIC8v
ICAgIDAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAg
ICAgICAgIDMKIC8vICAgIDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAw
IDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyCiAvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLS8vICAgfCAgICAgICBJ
RCAgICAgIHwgICBsZW5ndGg9MzAgICAgfCAgIFByaW1hcmllcyAgIHwgICAgVHJhbnNmZXIgICAg
fAotLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rCi0vLyAgIHwgICAgIE1hdHJpeCAgICB8ICAgICAgUmFuZ2UgICAg
IHwgICAgICAgICAgICAgICAgIGx1bWluYW5jZV9tYXggIHwKKy8vICAgfCAgICAgICBJRCAgICAg
IHwgICAgIGxlbmd0aCAgICB8ICAgICAgICAgICAgICAgICBsdW1pbmFuY2VfbWF4ICAgfAogLy8g
ICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rCiAvLyAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgbHVt
aW5hbmNlX21pbiAgICAgICAgICAgICAgICAgIHwKIC8vICAgKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwpAQCAtNDU3LDEx
MSArNDU0LDc3IEBAIGJvb2wgRnJhbWVNYXJraW5nRXh0ZW5zaW9uOjpXcml0ZShydGM6OkFycmF5
Vmlldzx1aW50OF90PiBkYXRhLAogLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCiAvLyAgIHwgICAgICAgICAgICAg
ICAgbWFzdGVyaW5nX21ldGFkYXRhLndoaXRlLnggYW5kIC55ICAgICAgICAgICAgICAgIHwKIC8v
ICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKwotLy8gICB8ICAgICBtYXhfY29udGVudF9saWdodF9sZXZlbCAgICB8IG1h
eF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsICB8CisvLyAgIHwgICAgICAgICAgICAgICAgICAg
ICBtYXhfY29udGVudF9saWdodF9sZXZlbCAgICAgICAgICAgICAgICAgICAgIHwKIC8vICAgKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKwotLy8KLS8vIERhdGEgbGF5b3V0IHdpdGhvdXQgSERSIG1ldGFkYXRhCi0vLyAgICAw
ICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAg
ICAzCi0vLyAgICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIg
MyA0IDUgNiA3IDggOSAwIDEgMgorLy8gICB8ICAgICAgICAgICAgICAgICAgbWF4X2ZyYW1lX2F2
ZXJhZ2VfbGlnaHRfbGV2ZWwgICAgICAgICAgICAgICAgICB8CiAvLyAgICstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLS8v
ICAgfCAgICAgICBJRCAgICAgIHwgICAgbGVuZ3RoPTQgICAgfCAgIFByaW1hcmllcyAgIHwgICAg
VHJhbnNmZXIgICAgfAotLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0vLyAgIHwgICAgIE1hdHJpeCAgICB8ICAg
ICAgUmFuZ2UgICAgIHwKLS8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLQot
Ci1jb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBDb2xvclNwYWNlRXh0ZW5zaW9uOjprSWQ7Ci1j
b25zdGV4cHIgdWludDhfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjprVmFsdWVTaXplQnl0ZXM7Ci1j
b25zdGV4cHIgY29uc3QgY2hhciBDb2xvclNwYWNlRXh0ZW5zaW9uOjprVXJpW107Ci0KLWJvb2wg
Q29sb3JTcGFjZUV4dGVuc2lvbjo6UGFyc2UocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4g
ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSogY29sb3Jf
c3BhY2UpIHsKLSAgUlRDX0RDSEVDSyhjb2xvcl9zcGFjZSk7Ci0gIGlmIChkYXRhLnNpemUoKSAh
PSBrVmFsdWVTaXplQnl0ZXMgJiYKLSAgICAgIGRhdGEuc2l6ZSgpICE9IGtWYWx1ZVNpemVCeXRl
c1dpdGhvdXRIZHJNZXRhZGF0YSkKK2NvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIEhkck1ldGFk
YXRhRXh0ZW5zaW9uOjprSWQ7Citjb25zdGV4cHIgdWludDhfdCBIZHJNZXRhZGF0YUV4dGVuc2lv
bjo6a1ZhbHVlU2l6ZUJ5dGVzOworY29uc3RleHByIGNvbnN0IGNoYXIgSGRyTWV0YWRhdGFFeHRl
bnNpb246OmtVcmlbXTsKKworYm9vbCBIZHJNZXRhZGF0YUV4dGVuc2lvbjo6UGFyc2UocnRjOjpB
cnJheVZpZXc8Y29uc3QgdWludDhfdD4gZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEhkck1ldGFkYXRhKiBoZHJfbWV0YWRhdGEpIHsKKyAgUlRDX0RDSEVDSyhoZHJfbWV0
YWRhdGEpOworICBpZiAoZGF0YS5zaXplKCkgIT0ga1ZhbHVlU2l6ZUJ5dGVzKQogICAgIHJldHVy
biBmYWxzZTsKIAogICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgLy8gUmVhZCBjb2xvciBzcGFjZSBp
bmZvcm1hdGlvbi4KLSAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X3ByaW1hcmllc19mcm9tX3VpbnQ4
KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoIWNvbG9y
X3NwYWNlLT5zZXRfdHJhbnNmZXJfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQrK10pKQot
ICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X21hdHJpeF9mcm9tX3Vp
bnQ4KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoIWNv
bG9yX3NwYWNlLT5zZXRfcmFuZ2VfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQrK10pKQot
ICAgIHJldHVybiBmYWxzZTsKLQotICAvLyBSZWFkIEhEUiBtZXRhZGF0YSBpZiBpdCBleGlzdHMs
IG90aGVyd2lzZSBjbGVhciBpdC4KLSAgaWYgKGRhdGEuc2l6ZSgpID09IGtWYWx1ZVNpemVCeXRl
c1dpdGhvdXRIZHJNZXRhZGF0YSkgewotICAgIGNvbG9yX3NwYWNlLT5zZXRfaGRyX21ldGFkYXRh
KG51bGxwdHIpOwotICB9IGVsc2UgewotICAgIEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0YTsKLSAg
ICBvZmZzZXQgKz0gUGFyc2VMdW1pbmFuY2UoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLmx1
bWluYW5jZV9tYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VNYXhE
ZW5vbWluYXRvcik7Ci0gICAgb2Zmc2V0ICs9IFBhcnNlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsg
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1hc3Rl
cmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrTHVtaW5hbmNlTWluRGVub21pbmF0b3IpOwotICAgIG9mZnNldCArPSBQYXJzZUNocm9tYXRp
Y2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9yKTsKLSAgICBvZmZz
ZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnBy
aW1hcnlfZyk7Ci0gICAgb2Zmc2V0ICs9IFBhcnNlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsg
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IpOwotICAgIG9mZnNldCArPSBQYXJzZUNocm9tYXRp
Y2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVfcG9pbnQpOwotICAgIGhk
cl9tZXRhZGF0YS5tYXhfY29udGVudF9saWdodF9sZXZlbCA9Ci0gICAgICAgIEJ5dGVSZWFkZXI8
dWludDE2X3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEuZGF0YSgpICsgb2Zmc2V0KTsKLSAgICBvZmZz
ZXQgKz0gMjsKLSAgICBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwg
PQotICAgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6UmVhZEJpZ0VuZGlhbihkYXRhLmRhdGEo
KSArIG9mZnNldCk7Ci0gICAgb2Zmc2V0ICs9IDI7Ci0gICAgY29sb3Jfc3BhY2UtPnNldF9oZHJf
bWV0YWRhdGEoJmhkcl9tZXRhZGF0YSk7Ci0gIH0KLSAgUlRDX0RDSEVDS19FUShWYWx1ZVNpemUo
KmNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsKKyAgb2Zmc2V0ICs9IFBhcnNlTHVtaW5hbmNlKGRhdGEu
ZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhkcl9tZXRhZGF0
YS0+bWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9tYXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrTHVtaW5hbmNlTWF4RGVub21pbmF0b3IpOworICBvZmZzZXQgKz0gUGFyc2VMdW1p
bmFuY2UoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAm
aGRyX21ldGFkYXRhLT5tYXN0ZXJpbmdfbWV0YWRhdGEubHVtaW5hbmNlX21pbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VNaW5EZW5vbWluYXRvcik7CisgIG9mZnNldCAr
PSBQYXJzZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEtPm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5
X3IpOworICBvZmZzZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRhLT5tYXN0ZXJpbmdf
bWV0YWRhdGEucHJpbWFyeV9nKTsKKyAgb2Zmc2V0ICs9IFBhcnNlQ2hyb21hdGljaXR5KGRhdGEu
ZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhkcl9tZXRh
ZGF0YS0+bWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYik7CisgIG9mZnNldCArPSBQYXJzZUNo
cm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZoZHJfbWV0YWRhdGEtPm1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludCk7Cisg
IC8vIFRPRE8oa3Jvbik6IERvIHdlIG5lZWQgMzIgYml0IGhlcmUgb3IgaXMgaXQgZW5vdWdoIHdp
dGggMTYgYml0cz8KKyAgLy8gQWxzbywgd2hhdCByZXNvbHV0aW9uIGlzIG5lZWRlZD8KKyAgaGRy
X21ldGFkYXRhLT5tYXhfY29udGVudF9saWdodF9sZXZlbCA9CisgICAgICBCeXRlUmVhZGVyPHVp
bnQzMl90Pjo6UmVhZEJpZ0VuZGlhbihkYXRhLmRhdGEoKSArIG9mZnNldCk7CisgIG9mZnNldCAr
PSA0OworICBoZHJfbWV0YWRhdGEtPm1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0KKyAg
ICAgIEJ5dGVSZWFkZXI8dWludDMyX3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEuZGF0YSgpICsgb2Zm
c2V0KTsKKyAgUlRDX0RDSEVDS19FUShrVmFsdWVTaXplQnl0ZXMsIG9mZnNldCArIDQpOwogICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpXcml0ZShydGM6OkFy
cmF5Vmlldzx1aW50OF90PiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb2xvclNwYWNlJiBjb2xvcl9zcGFjZSkgewotICBSVENfRENIRUNLKGRhdGEuc2l6ZSgp
ID49IFZhbHVlU2l6ZShjb2xvcl9zcGFjZSkpOworYm9vbCBIZHJNZXRhZGF0YUV4dGVuc2lvbjo6
V3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhfdD4gZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEhkck1ldGFkYXRhJiBoZHJfbWV0YWRhdGEpIHsKKyAgUlRDX0RD
SEVDS19FUShkYXRhLnNpemUoKSwga1ZhbHVlU2l6ZUJ5dGVzKTsKICAgc2l6ZV90IG9mZnNldCA9
IDA7Ci0gIC8vIFdyaXRlIGNvbG9yIHNwYWNlIGluZm9ybWF0aW9uLgotICBkYXRhLmRhdGEoKVtv
ZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7
Ci0gIGRhdGEuZGF0YSgpW29mZnNldCsrXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yX3Nw
YWNlLnRyYW5zZmVyKCkpOwotICBkYXRhLmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1
aW50OF90Pihjb2xvcl9zcGFjZS5tYXRyaXgoKSk7Ci0gIGRhdGEuZGF0YSgpW29mZnNldCsrXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yX3NwYWNlLnJhbmdlKCkpOwotCi0gIC8vIFdyaXRl
IEhEUiBtZXRhZGF0YSBpZiBpdCBleGlzdHMuCi0gIGlmIChjb2xvcl9zcGFjZS5oZHJfbWV0YWRh
dGEoKSkgewotICAgIGNvbnN0IEhkck1ldGFkYXRhJiBoZHJfbWV0YWRhdGEgPSAqY29sb3Jfc3Bh
Y2UuaGRyX21ldGFkYXRhKCk7Ci0gICAgb2Zmc2V0ICs9IFdyaXRlTHVtaW5hbmNlKGRhdGEuZGF0
YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEu
bWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9tYXgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtMdW1pbmFuY2VNYXhEZW5vbWluYXRvcik7Ci0gICAgb2Zmc2V0ICs9IFdyaXRlTHVt
aW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9taW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VNaW5EZW5vbWluYXRvcik7Ci0gICAgb2Zm
c2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnBy
aW1hcnlfcik7Ci0gICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsg
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZyk7Ci0gICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGlj
aXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYik7Ci0gICAgb2Zmc2V0
ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRl
X3BvaW50KTsKLQotICAgIEJ5dGVXcml0ZXI8dWludDE2X3Q+OjpXcml0ZUJpZ0VuZGlhbihkYXRh
LmRhdGEoKSArIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGRyX21ldGFkYXRhLm1heF9jb250ZW50X2xpZ2h0X2xldmVsKTsKLSAgICBvZmZzZXQgKz0g
MjsKLSAgICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRpYW4oCi0gICAgICAgIGRh
dGEuZGF0YSgpICsgb2Zmc2V0LCBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRf
bGV2ZWwpOwotICAgIG9mZnNldCArPSAyOwotICB9Ci0gIFJUQ19EQ0hFQ0tfRVEoVmFsdWVTaXpl
KGNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsKKyAgb2Zmc2V0ICs9IFdyaXRlTHVtaW5hbmNlKGRhdGEu
ZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRh
Lm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWF4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0x1bWluYW5jZU1heERlbm9taW5hdG9yKTsKKyAgb2Zmc2V0ICs9IFdyaXRlTHVtaW5h
bmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRy
X21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAga0x1bWluYW5jZU1pbkRlbm9taW5hdG9yKTsKKyAgb2Zmc2V0ICs9IFdy
aXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3IpOwor
ICBvZmZzZXQgKz0gV3JpdGVDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRh
LnByaW1hcnlfZyk7CisgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSAr
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkcl9tZXRhZGF0YS5tYXN0
ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9iKTsKKyAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5
KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRy
X21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludCk7CisKKyAgLy8gVE9ETyhr
cm9uKTogRG8gd2UgbmVlZCAzMiBiaXQgaGVyZSBvciBpcyBpdCBlbm91Z2ggd2l0aCAxNiBiaXRz
PworICAvLyBBbHNvLCB3aGF0IHJlc29sdXRpb24gaXMgbmVlZGVkPworICBCeXRlV3JpdGVyPHVp
bnQzMl90Pjo6V3JpdGVCaWdFbmRpYW4oZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWF4X2NvbnRlbnRfbGln
aHRfbGV2ZWwpOworICBvZmZzZXQgKz0gNDsKKyAgQnl0ZVdyaXRlcjx1aW50MzJfdD46OldyaXRl
QmlnRW5kaWFuKAorICAgICAgZGF0YS5kYXRhKCkgKyBvZmZzZXQsIGhkcl9tZXRhZGF0YS5tYXhf
ZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbCk7CisgIFJUQ19EQ0hFQ0tfRVEoa1ZhbHVlU2l6ZUJ5
dGVzLCBvZmZzZXQgKyA0KTsKICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBDb2xvclNwYWNl
RXh0ZW5zaW9uOjpQYXJzZUNocm9tYXRpY2l0eSgKK3NpemVfdCBIZHJNZXRhZGF0YUV4dGVuc2lv
bjo6UGFyc2VDaHJvbWF0aWNpdHkoCiAgICAgY29uc3QgdWludDhfdCogZGF0YSwKICAgICBIZHJN
YXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5KiBwKSB7CiAgIHVpbnQxNl90IGNocm9tYXRp
Y2l0eV94X3NjYWxlZCA9IEJ5dGVSZWFkZXI8dWludDE2X3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEp
OwpAQCAtNTcyLDE1ICs1MzUsMTUgQEAgc2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OlBhcnNl
Q2hyb21hdGljaXR5KAogICByZXR1cm4gNDsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgcmVh
ZC4KIH0KIAotc2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OlBhcnNlTHVtaW5hbmNlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQqIGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGRlbm9taW5hdG9yKSB7CitzaXplX3QgSGRyTWV0YWRhdGFFeHRlbnNpb246OlBhcnNlTHVt
aW5hbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0KiBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZGVub21pbmF0b3IpIHsKICAgdWludDMyX3QgbHVtaW5hbmNlX3Nj
YWxlZCA9IEJ5dGVSZWFkZXI8dWludDMyX3QsIDM+OjpSZWFkQmlnRW5kaWFuKGRhdGEpOwogICAq
ZiA9IHN0YXRpY19jYXN0PGZsb2F0PihsdW1pbmFuY2Vfc2NhbGVkKSAvIGRlbm9taW5hdG9yOwog
ICByZXR1cm4gMzsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KIH0KIAotc2l6ZV90
IENvbG9yU3BhY2VFeHRlbnNpb246OldyaXRlQ2hyb21hdGljaXR5KAorc2l6ZV90IEhkck1ldGFk
YXRhRXh0ZW5zaW9uOjpXcml0ZUNocm9tYXRpY2l0eSgKICAgICB1aW50OF90KiBkYXRhLAogICAg
IGNvbnN0IEhkck1hc3RlcmluZ01ldGFkYXRhOjpDaHJvbWF0aWNpdHkmIHApIHsKICAgUlRDX0RD
SEVDS19HRShwLngsIDAuMGYpOwpAQCAtNTkyLDkgKzU1NSw5IEBAIHNpemVfdCBDb2xvclNwYWNl
RXh0ZW5zaW9uOjpXcml0ZUNocm9tYXRpY2l0eSgKICAgcmV0dXJuIDQ7ICAvLyBSZXR1cm4gbnVt
YmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCiB9CiAKLXNpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpX
cml0ZUx1bWluYW5jZSh1aW50OF90KiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGRlbm9taW5hdG9yKSB7CitzaXplX3QgSGRyTWV0YWRhdGFFeHRlbnNp
b246OldyaXRlTHVtaW5hbmNlKHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBkZW5vbWluYXRvcikgewogICBSVENfRENIRUNLX0dFKGYs
IDAuMGYpOwogICBCeXRlV3JpdGVyPHVpbnQzMl90LCAzPjo6V3JpdGVCaWdFbmRpYW4oZGF0YSwg
c3RkOjpyb3VuZChmICogZGVub21pbmF0b3IpKTsKICAgcmV0dXJuIDM7ICAvLyBSZXR1cm4gbnVt
YmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4
dGVuc2lvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCmluZGV4IDQyYTYy
MTZjN2I1Mjk4OTJmNWJkNThkMjdjZDk0MGM4OTUwMTJkZGEuLmJhNDM0MTVmYmEyNDkwNGFiZjBl
MzRlYTUwZGNiYzMxYzBkMGM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0
ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCkBAIC0xNiw3
ICsxNiw3IEBACiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9y
dHBfaGVhZGVycy5oIgotI2luY2x1ZGUgImFwaS92aWRlby9jb2xvcl9zcGFjZS5oIgorI2luY2x1
ZGUgImFwaS92aWRlby9oZHJfbWV0YWRhdGEuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
Y29udGVudF90eXBlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX21hcmtpbmcu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKQEAgLTE4MiwyMyArMTgy
LDE5IEBAIGNsYXNzIEZyYW1lTWFya2luZ0V4dGVuc2lvbiB7CiAgIHN0YXRpYyBib29sIElzU2Nh
bGFibGUodWludDhfdCB0ZW1wb3JhbF9pZCwgdWludDhfdCBsYXllcl9pZCk7CiB9OwogCi1jbGFz
cyBDb2xvclNwYWNlRXh0ZW5zaW9uIHsKK2NsYXNzIEhkck1ldGFkYXRhRXh0ZW5zaW9uIHsKICBw
dWJsaWM6Ci0gIHVzaW5nIHZhbHVlX3R5cGUgPSBDb2xvclNwYWNlOwotICBzdGF0aWMgY29uc3Rl
eHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvbkNvbG9yU3BhY2U7CisgIHVz
aW5nIHZhbHVlX3R5cGUgPSBIZHJNZXRhZGF0YTsKKyAgc3RhdGljIGNvbnN0ZXhwciBSVFBFeHRl
bnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNpb25IZHJNZXRhZGF0YTsKICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDMwOwotICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3Qga1ZhbHVlU2l6ZUJ5dGVzV2l0aG91dEhkck1ldGFkYXRhID0gNDsKICAgLy8gVE9ETyh3
ZWJydGM6ODY1MSk6IENoYW5nZSB0byBhIHZhbGlkIHVyaS4KLSAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyIGtVcmlbXSA9ICJydHAtY29sb3JzcGFjZS11cmktcGxhY2Vob2xkZXIiOworICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0gInJ0cC1oZHItbWV0YWRhdGEtdXJp
LXBsYWNlaG9sZGVyIjsKIAogICBzdGF0aWMgYm9vbCBQYXJzZShydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PiBkYXRhLAotICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlKiBjb2xvcl9z
cGFjZSk7Ci0gIHN0YXRpYyBzaXplX3QgVmFsdWVTaXplKGNvbnN0IENvbG9yU3BhY2UmIGNvbG9y
X3NwYWNlKSB7Ci0gICAgcmV0dXJuIGNvbG9yX3NwYWNlLmhkcl9tZXRhZGF0YSgpID8ga1ZhbHVl
U2l6ZUJ5dGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga1ZhbHVl
U2l6ZUJ5dGVzV2l0aG91dEhkck1ldGFkYXRhOwotICB9CisgICAgICAgICAgICAgICAgICAgIEhk
ck1ldGFkYXRhKiBoZHJfbWV0YWRhdGEpOworICBzdGF0aWMgc2l6ZV90IFZhbHVlU2l6ZShjb25z
dCBIZHJNZXRhZGF0YSYpIHsgcmV0dXJuIGtWYWx1ZVNpemVCeXRlczsgfQogICBzdGF0aWMgYm9v
bCBXcml0ZShydGM6OkFycmF5Vmlldzx1aW50OF90PiBkYXRhLAotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb2xvclNwYWNlJiBjb2xvcl9zcGFjZSk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEhkck1ldGFkYXRhJiBoZHJfbWV0YWRhdGEpOwogCiAgcHJpdmF0ZToKICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQga0Nocm9tYXRpY2l0eURlbm9taW5hdG9yID0gMTAwMDA7ICAvLyAwLjAwMDEg
cmVzb2x1dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmNjCmluZGV4IGY4MGZhZDY4ZTBkMzI2ZDZl
ZmZlYjU1OTVhMjQwZjI0MTczYTk4MGMuLmZmN2I0ZTg3MTk3NTcxOTEwMGMxOWQ4ZmFhYmY4NzY4
YmViY2JlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5jYwpAQCAtNjksNyArNjksNyBAQCB2b2lk
IFJ0cFBhY2tldFJlY2VpdmVkOjpHZXRIZWFkZXIoUlRQSGVhZGVyKiBoZWFkZXIpIGNvbnN0IHsK
ICAgR2V0RXh0ZW5zaW9uPFJlcGFpcmVkUnRwU3RyZWFtSWQ+KCZoZWFkZXItPmV4dGVuc2lvbi5y
ZXBhaXJlZF9zdHJlYW1faWQpOwogICBHZXRFeHRlbnNpb248UnRwTWlkPigmaGVhZGVyLT5leHRl
bnNpb24ubWlkKTsKICAgR2V0RXh0ZW5zaW9uPFBsYXlvdXREZWxheUxpbWl0cz4oJmhlYWRlci0+
ZXh0ZW5zaW9uLnBsYXlvdXRfZGVsYXkpOwotICBoZWFkZXItPmV4dGVuc2lvbi5jb2xvcl9zcGFj
ZSA9IEdldEV4dGVuc2lvbjxDb2xvclNwYWNlRXh0ZW5zaW9uPigpOworICBoZWFkZXItPmV4dGVu
c2lvbi5oZHJfbWV0YWRhdGEgPSBHZXRFeHRlbnNpb248SGRyTWV0YWRhdGFFeHRlbnNpb24+KCk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3VuaXR0ZXN0LmNjCmluZGV4
IGIxYzBlNDI1MjVlYWU1MjY3N2MwZjgwYTBjY2Y2NDE3MTQ1OWU0ZTcuLjM3YTlhNTMxZGU2Yzg5
ZTVjYjBkNGU1ZDgwZThkZTIxZDgxZDgzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNr
ZXRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF91bml0dGVzdC5jYwpAQCAt
MjAzLDM0ICsyMDMsNiBAQCBIZHJNZXRhZGF0YSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEoKSB7CiAg
IGhkcl9tZXRhZGF0YS5tYXhfZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbCA9IDE3ODk7CiAgIHJl
dHVybiBoZHJfbWV0YWRhdGE7CiB9Ci0KLUNvbG9yU3BhY2UgQ3JlYXRlVGVzdENvbG9yU3BhY2Uo
Ym9vbCB3aXRoX2hkcl9tZXRhZGF0YSkgewotICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlKAotICAg
ICAgQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjprQlQ3MDksIENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6
OmtHQU1NQTIyLAotICAgICAgQ29sb3JTcGFjZTo6TWF0cml4SUQ6OmtTTVBURTIwODUsIENvbG9y
U3BhY2U6OlJhbmdlSUQ6OmtGdWxsKTsKLSAgaWYgKHdpdGhfaGRyX21ldGFkYXRhKSB7Ci0gICAg
SGRyTWV0YWRhdGEgaGRyX21ldGFkYXRhID0gQ3JlYXRlVGVzdEhkck1ldGFkYXRhKCk7Ci0gICAg
Y29sb3Jfc3BhY2Uuc2V0X2hkcl9tZXRhZGF0YSgmaGRyX21ldGFkYXRhKTsKLSAgfQotICByZXR1
cm4gY29sb3Jfc3BhY2U7Ci19Ci0KLXZvaWQgVGVzdENyZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4
dGVuc2lvbihib29sIHdpdGhfaGRyX21ldGFkYXRhKSB7Ci0gIC8vIENyZWF0ZSBwYWNrZXQgd2l0
aCBleHRlbnNpb24uCi0gIFJ0cFBhY2tldDo6RXh0ZW5zaW9uTWFuYWdlciBleHRlbnNpb25zKC8q
ZXh0bWFwLWFsbG93LW1peGVkPSovdHJ1ZSk7Ci0gIGV4dGVuc2lvbnMuUmVnaXN0ZXI8Q29sb3JT
cGFjZUV4dGVuc2lvbj4oMSk7Ci0gIFJ0cFBhY2tldCBwYWNrZXQoJmV4dGVuc2lvbnMpOwotICBj
b25zdCBDb2xvclNwYWNlIGtDb2xvclNwYWNlID0gQ3JlYXRlVGVzdENvbG9yU3BhY2Uod2l0aF9o
ZHJfbWV0YWRhdGEpOwotICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0RXh0ZW5zaW9uPENvbG9yU3Bh
Y2VFeHRlbnNpb24+KGtDb2xvclNwYWNlKSk7Ci0gIHBhY2tldC5TZXRQYXlsb2FkU2l6ZSg0Mik7
Ci0KLSAgLy8gUmVhZCBwYWNrZXQgd2l0aCB0aGUgZXh0ZW5zaW9uLgotICBSdHBQYWNrZXRSZWNl
aXZlZCBwYXJzZWQoJmV4dGVuc2lvbnMpOwotICBFWFBFQ1RfVFJVRShwYXJzZWQuUGFyc2UocGFj
a2V0LkJ1ZmZlcigpKSk7Ci0gIENvbG9yU3BhY2UgcGFyc2VkX2NvbG9yX3NwYWNlOwotICBFWFBF
Q1RfVFJVRShwYXJzZWQuR2V0RXh0ZW5zaW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCZwYXJzZWRf
Y29sb3Jfc3BhY2UpKTsKLSAgRVhQRUNUX0VRKGtDb2xvclNwYWNlLCBwYXJzZWRfY29sb3Jfc3Bh
Y2UpOwotfQogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlTWlu
aW11bSkgewpAQCAtODQ3LDEyICs4MTksMjEgQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBQYXJzZUxl
Z2FjeVRpbWluZ0ZyYW1lRXh0ZW5zaW9uKSB7CiAgIEVYUEVDVF9FUShyZWNlaXZpZWRfdGltaW5n
LmZsYWdzLCAwKTsKIH0KIAotVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVBbmRQYXJzZUNvbG9y
U3BhY2VFeHRlbnNpb24pIHsKLSAgVGVzdENyZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4dGVuc2lv
bigvKndpdGhfaGRyX21ldGFkYXRhPSovdHJ1ZSk7Ci19CitURVNUKFJ0cFBhY2tldFRlc3QsIENy
ZWF0ZUFuZFBhcnNlSGRyTWV0YWRhdGFFeHRlbnNpb24pIHsKKyAgLy8gQ3JlYXRlIHBhY2tldCB3
aXRoIGV4dGVuc2lvbi4KKyAgUnRwUGFja2V0OjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnMo
LypleHRtYXAtYWxsb3ctbWl4ZWQ9Ki90cnVlKTsKKyAgZXh0ZW5zaW9ucy5SZWdpc3RlcjxIZHJN
ZXRhZGF0YUV4dGVuc2lvbj4oMSk7CisgIFJ0cFBhY2tldCBwYWNrZXQoJmV4dGVuc2lvbnMpOwor
ICBjb25zdCBIZHJNZXRhZGF0YSBrSGRyTWV0YWRhdGEgPSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEo
KTsKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNldEV4dGVuc2lvbjxIZHJNZXRhZGF0YUV4dGVuc2lv
bj4oa0hkck1ldGFkYXRhKSk7CisgIHBhY2tldC5TZXRQYXlsb2FkU2l6ZSg0Mik7CiAKLVRFU1Qo
UnRwUGFja2V0VGVzdCwgQ3JlYXRlQW5kUGFyc2VDb2xvclNwYWNlRXh0ZW5zaW9uV2l0aG91dEhk
ck1ldGFkYXRhKSB7Ci0gIFRlc3RDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VFeHRlbnNpb24oLyp3
aXRoX2hkcl9tZXRhZGF0YT0qL2ZhbHNlKTsKKyAgLy8gUmVhZCBwYWNrZXQgd2l0aCB0aGUgZXh0
ZW5zaW9uLgorICBSdHBQYWNrZXRSZWNlaXZlZCBwYXJzZWQoJmV4dGVuc2lvbnMpOworICBFWFBF
Q1RfVFJVRShwYXJzZWQuUGFyc2UocGFja2V0LkJ1ZmZlcigpKSk7CisgIEhkck1ldGFkYXRhIHBh
cnNlZF9oZHJfbWV0YWRhdGE7CisgIEVYUEVDVF9UUlVFKHBhcnNlZC5HZXRFeHRlbnNpb248SGRy
TWV0YWRhdGFFeHRlbnNpb24+KCZwYXJzZWRfaGRyX21ldGFkYXRhKSk7CisgIEVYUEVDVF9FUShr
SGRyTWV0YWRhdGEsIHBhcnNlZF9oZHJfbWV0YWRhdGEpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF91dGlsaXR5LmNjCmluZGV4IDQ0YzY3MWY1MDY3ZWFmMzdiZmFkZjhmOTYwYWZiOGZjOGM1M2Nm
ODEuLjgwZjBlYWI2ODJlYzExMWE1MzMyYjJlZDI3YWQzZjkxNjM5MjZkZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF91dGlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmNjCkBA
IC01MDcsOSArNTA3LDkgQEAgdm9pZCBSdHBIZWFkZXJQYXJzZXI6OlBhcnNlT25lQnl0ZUV4dGVu
c2lvbkhlYWRlcigKICAgICAgICAgICBSVENfTE9HKFdBUk5JTkcpCiAgICAgICAgICAgICAgIDw8
ICJSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yIHVuc3VwcG9ydGVkIGJ5IHJ0cCBoZWFkZXIgcGFy
c2VyLiI7CiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbkNvbG9y
U3BhY2U6CisgICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbkhkck1ldGFkYXRhOgogICAgICAgICAg
IFJUQ19MT0coV0FSTklORykKLSAgICAgICAgICAgICAgPDwgIlJ0cEV4dGVuc2lvbkNvbG9yU3Bh
Y2UgdW5zdXBwb3J0ZWQgYnkgcnRwIGhlYWRlciBwYXJzZXIuIjsKKyAgICAgICAgICAgICAgPDwg
IlJ0cEV4dGVuc2lvbkhkck1ldGFkYXRhIHVuc3VwcG9ydGVkIGJ5IHJ0cCBoZWFkZXIgcGFyc2Vy
LiI7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbk5vbmU6CiAg
ICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbk51bWJlck9mRXh0ZW5zaW9uczogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2xpYnZweC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9saWJ2cHguY2MKaW5kZXggZjY5ZmRlNjg4NDAxMGZj
MzVmYzM5NjcwMmUyNDNiYjI3NmFiNDMwMi4uMWUzNjVkZTFkMWNmYzM5NGE3M2NjZTIxMDcxMzRi
MzA2YjM3YzI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0
X2xpYnZweC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfbGlidnB4
LmNjCkBAIC0xMjQsOSArMTI0LDkgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgQ2hhbmdl
Qml0cmF0ZVZQOSkgewogICAgICAgezUwMCwgMzAsIGtOdW1GcmFtZXNMb25nfX07CiAKICAgc3Rk
Ojp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAg
ezUsIDEsIDAsIDEsIDAuNSwgMC4xLCAwLCAxfSwKLSAgICAgIHsxNSwgMiwgMCwgMSwgMC41LCAw
LjEsIDAsIDB9LAotICAgICAgezEwLCAxLCAwLCAxLCAwLjUsIDAuMSwgMCwgMH19OworICAgICAg
ezUsIDIsIDAsIDEsIDAuNSwgMC4xLCAwLCAxfSwKKyAgICAgIHsxNSwgMywgMCwgMSwgMC41LCAw
LjEsIDAsIDB9LAorICAgICAgezEwLCAyLCAwLCAxLCAwLjUsIDAuMSwgMCwgMH19OwogCiAgIHN0
ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7CiAgICAg
ICB7MzQsIDMzLCAwLjkwLCAwLjg4fSwgezM4LCAzNSwgMC45NSwgMC45MX0sIHszNSwgMzQsIDAu
OTMsIDAuOTB9fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdGVzdC92cDlfaW1wbF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYwpp
bmRleCA4NWZhMjc4YTBkMzc2ZWFmNTUxMmVjMDc1OGI4Y2I3ZGQ3MjFlYWYyLi40NjQ0YTMxY2Ji
N2Y2NGYzZGI3MGVhYWQ3MDFkNDRiMmM4MDA1ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0
L3ZwOV9pbXBsX3VuaXR0ZXN0LmNjCkBAIC05MSwxNSArOTEsMTYgQEAgY2xhc3MgVGVzdFZwOUlt
cGwgOiBwdWJsaWMgVmlkZW9Db2RlY1VuaXRUZXN0IHsKICAgICB9CiAgIH0KIAotICB2b2lkIENv
bmZpZ3VyZVN2YyhzaXplX3QgbnVtX3NwYXRpYWxfbGF5ZXJzKSB7CisgIHZvaWQgQ29uZmlndXJl
U3ZjKHNpemVfdCBudW1fc3BhdGlhbF9sYXllcnMsIHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJz
ID0gMSkgewogICAgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+bnVtYmVyT2ZTcGF0aWFsTGF5ZXJz
ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obnVtX3NwYXRpYWxfbGF5ZXJz
KTsKLSAgICBjb2RlY19zZXR0aW5nc18uVlA5KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMgPSAx
OworICAgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycyA9IG51
bV90ZW1wb3JhbF9sYXllcnM7CiAgICAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5mcmFtZURyb3Bw
aW5nT24gPSBmYWxzZTsKIAotICAgIHN0ZDo6dmVjdG9yPFNwYXRpYWxMYXllcj4gbGF5ZXJzID0g
R2V0U3ZjQ29uZmlnKAotICAgICAgICBjb2RlY19zZXR0aW5nc18ud2lkdGgsIGNvZGVjX3NldHRp
bmdzXy5oZWlnaHQsCi0gICAgICAgIGNvZGVjX3NldHRpbmdzXy5tYXhGcmFtZXJhdGUsIG51bV9z
cGF0aWFsX2xheWVycywgMSwgZmFsc2UpOworICAgIHN0ZDo6dmVjdG9yPFNwYXRpYWxMYXllcj4g
bGF5ZXJzID0KKyAgICAgICAgR2V0U3ZjQ29uZmlnKGNvZGVjX3NldHRpbmdzXy53aWR0aCwgY29k
ZWNfc2V0dGluZ3NfLmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIGNvZGVjX3NldHRpbmdz
Xy5tYXhGcmFtZXJhdGUsIG51bV9zcGF0aWFsX2xheWVycywKKyAgICAgICAgICAgICAgICAgICAg
IG51bV90ZW1wb3JhbF9sYXllcnMsIGZhbHNlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxheWVycy5zaXplKCk7ICsraSkgewogICAgICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXll
cnNbaV0gPSBsYXllcnNbaV07CiAgICAgfQpAQCAtNDAxLDYgKzQwMiw4IEBAIFRFU1RfRihUZXN0
VnA5SW1wbCwgRW5hYmxlRGlzYWJsZVNwYXRpYWxMYXllcnMpIHsKICAgICAgIHN0ZDo6dmVjdG9y
PEVuY29kZWRJbWFnZT4gZW5jb2RlZF9mcmFtZTsKICAgICAgIHN0ZDo6dmVjdG9yPENvZGVjU3Bl
Y2lmaWNJbmZvPiBjb2RlY19zcGVjaWZpY19pbmZvOwogICAgICAgQVNTRVJUX1RSVUUoV2FpdEZv
ckVuY29kZWRGcmFtZXMoJmVuY29kZWRfZnJhbWUsICZjb2RlY19zcGVjaWZpY19pbmZvKSk7Cisg
ICAgICBFWFBFQ1RfRVEoY29kZWNfc3BlY2lmaWNfaW5mb1swXS5jb2RlY1NwZWNpZmljLlZQOS5z
c19kYXRhX2F2YWlsYWJsZSwKKyAgICAgICAgICAgICAgICBmcmFtZV9udW0gPT0gMCk7CiAgICAg
fQogICB9CiAKQEAgLTQxOCw2ICs0MjEsOCBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEVuYWJsZURp
c2FibGVTcGF0aWFsTGF5ZXJzKSB7CiAgICAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkSW1hZ2U+IGVu
Y29kZWRfZnJhbWU7CiAgICAgICBzdGQ6OnZlY3RvcjxDb2RlY1NwZWNpZmljSW5mbz4gY29kZWNf
c3BlY2lmaWNfaW5mbzsKICAgICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZl
bmNvZGVkX2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5mbykpOworICAgICAgRVhQRUNUX0VRKGNv
ZGVjX3NwZWNpZmljX2luZm9bMF0uY29kZWNTcGVjaWZpYy5WUDkuc3NfZGF0YV9hdmFpbGFibGUs
CisgICAgICAgICAgICAgICAgZnJhbWVfbnVtID09IDApOwogICAgIH0KICAgfQogfQpAQCAtNTgx
LDYgKzU4NiwyNDggQEAgVEVTVF9GKFRlc3RWcDlJbXBsLAogICB9CiB9CiAKK1RFU1RfRihUZXN0
VnA5SW1wbCwgRW5hYmxpbmdOZXdMYXllcklzRGVsYXllZEluU2NyZWVuc2hhcmVBbmRBZGRzU3NJ
bmZvKSB7CisgIGNvbnN0IHNpemVfdCBudW1fc3BhdGlhbF9sYXllcnMgPSAzOworICAvLyBDaG9z
ZW4gYnkgaGFuZCwgdGhlIDJuZCBmcmFtZSBpcyBkcm9wcGVkIHdpdGggY29uZmlndXJlZCBwZXIt
bGF5ZXIgbWF4CisgIC8vIGZyYW1lcmF0ZS4KKyAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXNfdG9f
ZW5jb2RlX2JlZm9yZV9kcm9wID0gMTsKKyAgLy8gQ2hvc2VuIGJ5IGhhbmQsIGV4YWN0bHkgNSBm
cmFtZXMgYXJlIGRyb3BwZWQgZm9yIGlucHV0IGZwcz0zMCBhbmQgbWF4CisgIC8vIGZyYW1lcmF0
ZSA9IDUuCisgIGNvbnN0IHNpemVfdCBudW1fZHJvcHBlZF9mcmFtZXMgPSA1OworCisgIGNvZGVj
X3NldHRpbmdzXy5tYXhGcmFtZXJhdGUgPSAzMDsKKyAgQ29uZmlndXJlU3ZjKG51bV9zcGF0aWFs
X2xheWVycyk7CisgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLm1heEZyYW1lcmF0
ZSA9IDUuMDsKKyAgLy8gdXNlIDMwIGZvciB0aGUgU0wgMSBpbnN0ZWFkIG9mIDUsIHNvIGV2ZW4g
aWYgU0wgMCBmcmFtZSBpcyBkcm9wcGVkIGR1ZSB0bworICAvLyBmcmFtZXJhdGUgY2FwcGluZyB3
ZSB3b3VsZCBzdGlsbCBnZXQgYmFjayBhdCBsZWFzdCBhIG1pZGRsZSBsYXllci4gSXQKKyAgLy8g
c2ltcGxpZmllcyB0aGUgdGVzdC4KKyAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMV0u
bWF4RnJhbWVyYXRlID0gMzAuMDsKKyAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMl0u
bWF4RnJhbWVyYXRlID0gMzAuMDsKKyAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5mcmFtZURyb3Bw
aW5nT24gPSBmYWxzZTsKKyAgY29kZWNfc2V0dGluZ3NfLm1vZGUgPSBWaWRlb0NvZGVjTW9kZTo6
a1NjcmVlbnNoYXJpbmc7CisgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+aW50ZXJMYXllclByZWQg
PSBJbnRlckxheWVyUHJlZE1vZGU6OmtPbjsKKyAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5mbGV4
aWJsZU1vZGUgPSB0cnVlOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAg
ICAgICAgICAgZW5jb2Rlcl8tPkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywgMSAvKiBudW1i
ZXIgb2YgY29yZXMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIG1h
eCBwYXlsb2FkIHNpemUgKHVudXNlZCkgKi8pKTsKKworICAvLyBFbmFibGUgYWxsIGJ1dCB0aGUg
bGFzdCBsYXllci4KKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb247
CisgIGZvciAoc2l6ZV90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IG51bV9zcGF0aWFsX2xheWVycyAt
IDE7ICsrc2xfaWR4KSB7CisgICAgYml0cmF0ZV9hbGxvY2F0aW9uLlNldEJpdHJhdGUoCisgICAg
ICAgIHNsX2lkeCwgMCwgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbc2xfaWR4XS50YXJn
ZXRCaXRyYXRlICogMTAwMCk7CisgIH0KKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19P
SywKKyAgICAgICAgICAgIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihiaXRyYXRlX2FsbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfc2V0
dGluZ3NfLm1heEZyYW1lcmF0ZSkpOworCisgIC8vIEVuY29kZSBlbm91Z2ggZnJhbWVzIHRvIGZv
cmNlIGRyb3AgZHVlIHRvIGZyYW1lcmF0ZSBjYXBwaW5nLgorICBmb3IgKHNpemVfdCBmcmFtZV9u
dW0gPSAwOyBmcmFtZV9udW0gPCBudW1fZnJhbWVzX3RvX2VuY29kZV9iZWZvcmVfZHJvcDsKKyAg
ICAgICArK2ZyYW1lX251bSkgeworICAgIFNldFdhaXRGb3JFbmNvZGVkRnJhbWVzVGhyZXNob2xk
KG51bV9zcGF0aWFsX2xheWVycyAtIDEpOworICAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09E
RUNfT0ssCisgICAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCks
IG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkSW1hZ2U+IGVuY29k
ZWRfZnJhbWVzOworICAgIHN0ZDo6dmVjdG9yPENvZGVjU3BlY2lmaWNJbmZvPiBjb2RlY19zcGVj
aWZpY19pbmZvOworICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVk
X2ZyYW1lcywgJmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgfQorCisgIC8vIEVuYWJsZSB0aGUg
bGFzdCBsYXllci4KKyAgYml0cmF0ZV9hbGxvY2F0aW9uLlNldEJpdHJhdGUoCisgICAgICBudW1f
c3BhdGlhbF9sYXllcnMgLSAxLCAwLAorICAgICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXll
cnNbbnVtX3NwYXRpYWxfbGF5ZXJzIC0gMV0udGFyZ2V0Qml0cmF0ZSAqCisgICAgICAgICAgMTAw
MCk7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBlbmNv
ZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZV9hbGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX3NldHRpbmdzXy5tYXhGcmFtZXJhdGUp
KTsKKworICBmb3IgKHNpemVfdCBmcmFtZV9udW0gPSAwOyBmcmFtZV9udW0gPCBudW1fZHJvcHBl
ZF9mcmFtZXM7ICsrZnJhbWVfbnVtKSB7CisgICAgU2V0V2FpdEZvckVuY29kZWRGcmFtZXNUaHJl
c2hvbGQoMSk7CisgICAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAg
ICAgICAgZW5jb2Rlcl8tPkVuY29kZSgqTmV4dElucHV0RnJhbWUoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOworICAgIC8vIEZpcnN0IGxheWVyIGlzIGRyb3BwZWQgZHVlIHRvIGZyYW1lIHJhdGUgY2Fw
LiBUaGUgbGFzdCBsYXllciBzaG91bGQgbm90CisgICAgLy8gYmUgZW5hYmxlZCB5ZXQuCisgICAg
c3RkOjp2ZWN0b3I8RW5jb2RlZEltYWdlPiBlbmNvZGVkX2ZyYW1lczsKKyAgICBzdGQ6OnZlY3Rv
cjxDb2RlY1NwZWNpZmljSW5mbz4gY29kZWNfc3BlY2lmaWNfaW5mbzsKKyAgICBBU1NFUlRfVFJV
RShXYWl0Rm9yRW5jb2RlZEZyYW1lcygmZW5jb2RlZF9mcmFtZXMsICZjb2RlY19zcGVjaWZpY19p
bmZvKSk7CisgIH0KKworICBTZXRXYWl0Rm9yRW5jb2RlZEZyYW1lc1RocmVzaG9sZCgyKTsKKyAg
RVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5F
bmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgLy8gTm93IGFs
bCAzIGxheWVycyBzaG91bGQgYmUgZW5jb2RlZC4KKyAgc3RkOjp2ZWN0b3I8RW5jb2RlZEltYWdl
PiBlbmNvZGVkX2ZyYW1lczsKKyAgc3RkOjp2ZWN0b3I8Q29kZWNTcGVjaWZpY0luZm8+IGNvZGVj
X3NwZWNpZmljX2luZm87CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNv
ZGVkX2ZyYW1lcywgJmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgRVhQRUNUX0VRKGVuY29kZWRf
ZnJhbWVzLnNpemUoKSwgM3UpOworICAvLyBTY2FsYWJpbGl0eSBzdHJ1Y3R1cmUgaGFzIHRvIGJl
IHRyaWdnZXJlZC4KKyAgRVhQRUNUX1RSVUUoY29kZWNfc3BlY2lmaWNfaW5mb1swXS5jb2RlY1Nw
ZWNpZmljLlZQOS5zc19kYXRhX2F2YWlsYWJsZSk7Cit9CisKK1RFU1RfRihUZXN0VnA5SW1wbCwg
UmVtb3ZpbmdMYXllcklzTm90RGVsYXllZEluU2NyZWVuc2hhcmVBbmRBZGRzU3NJbmZvKSB7Cisg
IGNvbnN0IHNpemVfdCBudW1fc3BhdGlhbF9sYXllcnMgPSAzOworICAvLyBDaG9zZW4gYnkgaGFu
ZCwgdGhlIDJuZCBmcmFtZSBpcyBkcm9wcGVkIHdpdGggY29uZmlndXJlZCBwZXItbGF5ZXIgbWF4
CisgIC8vIGZyYW1lcmF0ZS4KKyAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXNfdG9fZW5jb2RlX2Jl
Zm9yZV9kcm9wID0gMTsKKyAgLy8gQ2hvc2VuIGJ5IGhhbmQsIGV4YWN0bHkgNSBmcmFtZXMgYXJl
IGRyb3BwZWQgZm9yIGlucHV0IGZwcz0zMCBhbmQgbWF4CisgIC8vIGZyYW1lcmF0ZSA9IDUuCisg
IGNvbnN0IHNpemVfdCBudW1fZHJvcHBlZF9mcmFtZXMgPSA1OworCisgIGNvZGVjX3NldHRpbmdz
Xy5tYXhGcmFtZXJhdGUgPSAzMDsKKyAgQ29uZmlndXJlU3ZjKG51bV9zcGF0aWFsX2xheWVycyk7
CisgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLm1heEZyYW1lcmF0ZSA9IDUuMDsK
KyAgLy8gdXNlIDMwIGZvciB0aGUgU0wgMSBpbnN0ZWFkIG9mIDUsIHNvIGV2ZW4gaWYgU0wgMCBm
cmFtZSBpcyBkcm9wcGVkIGR1ZSB0bworICAvLyBmcmFtZXJhdGUgY2FwcGluZyB3ZSB3b3VsZCBz
dGlsbCBnZXQgYmFjayBhdCBsZWFzdCBhIG1pZGRsZSBsYXllci4gSXQKKyAgLy8gc2ltcGxpZmll
cyB0aGUgdGVzdC4KKyAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMV0ubWF4RnJhbWVy
YXRlID0gMzAuMDsKKyAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMl0ubWF4RnJhbWVy
YXRlID0gMzAuMDsKKyAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5mcmFtZURyb3BwaW5nT24gPSBm
YWxzZTsKKyAgY29kZWNfc2V0dGluZ3NfLm1vZGUgPSBWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNo
YXJpbmc7CisgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+aW50ZXJMYXllclByZWQgPSBJbnRlckxh
eWVyUHJlZE1vZGU6OmtPbjsKKyAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5mbGV4aWJsZU1vZGUg
PSB0cnVlOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAg
ZW5jb2Rlcl8tPkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywgMSAvKiBudW1iZXIgb2YgY29y
ZXMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIG1heCBwYXlsb2Fk
IHNpemUgKHVudXNlZCkgKi8pKTsKKworICAvLyBBbGwgbGF5ZXJzIGFyZSBlbmFibGVkIGZyb20g
dGhlIHN0YXJ0LgorICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbjsK
KyAgZm9yIChzaXplX3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX3NwYXRpYWxfbGF5ZXJzOyAr
K3NsX2lkeCkgeworICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5TZXRCaXRyYXRlKAorICAgICAgICBz
bF9pZHgsIDAsIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzW3NsX2lkeF0udGFyZ2V0Qml0
cmF0ZSAqIDEwMDApOworICB9CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisg
ICAgICAgICAgICBlbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZV9hbGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX3NldHRpbmdz
Xy5tYXhGcmFtZXJhdGUpKTsKKworICAvLyBFbmNvZGUgZW5vdWdoIGZyYW1lcyB0byBmb3JjZSBk
cm9wIGR1ZSB0byBmcmFtZXJhdGUgY2FwcGluZy4KKyAgZm9yIChzaXplX3QgZnJhbWVfbnVtID0g
MDsgZnJhbWVfbnVtIDwgbnVtX2ZyYW1lc190b19lbmNvZGVfYmVmb3JlX2Ryb3A7CisgICAgICAg
KytmcmFtZV9udW0pIHsKKyAgICBTZXRXYWl0Rm9yRW5jb2RlZEZyYW1lc1RocmVzaG9sZChudW1f
c3BhdGlhbF9sYXllcnMpOworICAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisg
ICAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIs
IG51bGxwdHIpKTsKKyAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkSW1hZ2U+IGVuY29kZWRfZnJhbWVz
OworICAgIHN0ZDo6dmVjdG9yPENvZGVjU3BlY2lmaWNJbmZvPiBjb2RlY19zcGVjaWZpY19pbmZv
OworICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVkX2ZyYW1lcywg
JmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgfQorCisgIC8vIE5vdyB0aGUgZmlyc3QgbGF5ZXIg
c2hvdWxkIG5vdCBoYXZlIGZyYW1lcyBpbiBpdC4KKyAgZm9yIChzaXplX3QgZnJhbWVfbnVtID0g
MDsgZnJhbWVfbnVtIDwgbnVtX2Ryb3BwZWRfZnJhbWVzIC0gMjsgKytmcmFtZV9udW0pIHsKKyAg
ICBTZXRXYWl0Rm9yRW5jb2RlZEZyYW1lc1RocmVzaG9sZCgyKTsKKyAgICBFWFBFQ1RfRVEoV0VC
UlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgICBlbmNvZGVyXy0+RW5jb2RlKCpOZXh0
SW5wdXRGcmFtZSgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgLy8gRmlyc3QgbGF5ZXIgaXMg
ZHJvcHBlZCBkdWUgdG8gZnJhbWUgcmF0ZSBjYXAuIFRoZSBsYXN0IGxheWVyIHNob3VsZCBub3QK
KyAgICAvLyBiZSBlbmFibGVkIHlldC4KKyAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkSW1hZ2U+IGVu
Y29kZWRfZnJhbWVzOworICAgIHN0ZDo6dmVjdG9yPENvZGVjU3BlY2lmaWNJbmZvPiBjb2RlY19z
cGVjaWZpY19pbmZvOworICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNv
ZGVkX2ZyYW1lcywgJmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgICAvLyBGaXJzdCBsYXllciBp
cyBza2lwcGVkLgorICAgIEVYUEVDVF9FUShlbmNvZGVkX2ZyYW1lc1swXS5TcGF0aWFsSW5kZXgo
KS52YWx1ZV9vcigtMSksIDEpOworICB9CisKKyAgLy8gRGlzYWJsZSB0aGUgbGFzdCBsYXllci4K
KyAgYml0cmF0ZV9hbGxvY2F0aW9uLlNldEJpdHJhdGUobnVtX3NwYXRpYWxfbGF5ZXJzIC0gMSwg
MCwgMCk7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBl
bmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZV9hbGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX3NldHRpbmdzXy5tYXhGcmFtZXJh
dGUpKTsKKworICAvLyBTdGlsbCBleHBlY3RlZCB0byBkcm9wIGZpcnN0IGxheWVyLiBMYXN0IGxh
eWVyIGhhcyB0byBiZSBkaXNhYmxlIGFsc28uCisgIGZvciAoc2l6ZV90IGZyYW1lX251bSA9IG51
bV9kcm9wcGVkX2ZyYW1lcyAtIDI7CisgICAgICAgZnJhbWVfbnVtIDwgbnVtX2Ryb3BwZWRfZnJh
bWVzOyArK2ZyYW1lX251bSkgeworICAgIC8vIEV4cGVjdCBiYWNrIG9uZSBmcmFtZS4KKyAgICBT
ZXRXYWl0Rm9yRW5jb2RlZEZyYW1lc1RocmVzaG9sZCgxKTsKKyAgICBFWFBFQ1RfRVEoV0VCUlRD
X1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgICBlbmNvZGVyXy0+RW5jb2RlKCpOZXh0SW5w
dXRGcmFtZSgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgLy8gRmlyc3QgbGF5ZXIgaXMgZHJv
cHBlZCBkdWUgdG8gZnJhbWUgcmF0ZSBjYXAuIFRoZSBsYXN0IGxheWVyIHNob3VsZCBub3QKKyAg
ICAvLyBiZSBlbmFibGVkIHlldC4KKyAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkSW1hZ2U+IGVuY29k
ZWRfZnJhbWVzOworICAgIHN0ZDo6dmVjdG9yPENvZGVjU3BlY2lmaWNJbmZvPiBjb2RlY19zcGVj
aWZpY19pbmZvOworICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVk
X2ZyYW1lcywgJmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgICAvLyBGaXJzdCBsYXllciBpcyBz
a2lwcGVkLgorICAgIEVYUEVDVF9FUShlbmNvZGVkX2ZyYW1lc1swXS5TcGF0aWFsSW5kZXgoKS52
YWx1ZV9vcigtMSksIDEpOworICAgIC8vIE5vIFNTIGRhdGEgb24gbm9uLWJhc2Ugc3BhdGlhbCBs
YXllci4KKyAgICBFWFBFQ1RfRkFMU0UoY29kZWNfc3BlY2lmaWNfaW5mb1swXS5jb2RlY1NwZWNp
ZmljLlZQOS5zc19kYXRhX2F2YWlsYWJsZSk7CisgIH0KKworICBTZXRXYWl0Rm9yRW5jb2RlZEZy
YW1lc1RocmVzaG9sZCgyKTsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAg
ICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsIG51
bGxwdHIpKTsKKyAgc3RkOjp2ZWN0b3I8RW5jb2RlZEltYWdlPiBlbmNvZGVkX2ZyYW1lczsKKyAg
c3RkOjp2ZWN0b3I8Q29kZWNTcGVjaWZpY0luZm8+IGNvZGVjX3NwZWNpZmljX2luZm87CisgIEFT
U0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVkX2ZyYW1lcywgJmNvZGVjX3Nw
ZWNpZmljX2luZm8pKTsKKyAgLy8gRmlyc3QgbGF5ZXIgaXMgbm90IHNraXBwZWQgbm93LgorICBF
WFBFQ1RfRVEoZW5jb2RlZF9mcmFtZXNbMF0uU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoLTEpLCAw
KTsKKyAgLy8gU1MgZGF0YSBzaG91bGQgYmUgcHJlc2VudC4KKyAgRVhQRUNUX1RSVUUoY29kZWNf
c3BlY2lmaWNfaW5mb1swXS5jb2RlY1NwZWNpZmljLlZQOS5zc19kYXRhX2F2YWlsYWJsZSk7Cit9
CisKK1RFU1RfRihUZXN0VnA5SW1wbCwgRGlzYWJsZU5ld0xheWVySW5WaWRlb0RlbGF5c1NzSW5m
b1RpbGxUTDApIHsKKyAgY29uc3Qgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9IDM7CisgIGNv
bnN0IHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKKyAgLy8gQ2hvc2VuIGJ5IGhhbmQs
IHRoZSAybmQgZnJhbWUgaXMgZHJvcHBlZCB3aXRoIGNvbmZpZ3VyZWQgcGVyLWxheWVyIG1heAor
ICAvLyBmcmFtZXJhdGUuCisgIENvbmZpZ3VyZVN2YyhudW1fc3BhdGlhbF9sYXllcnMsIG51bV90
ZW1wb3JhbF9sYXllcnMpOworICBjb2RlY19zZXR0aW5nc18uVlA5KCktPmZyYW1lRHJvcHBpbmdP
biA9IGZhbHNlOworICBjb2RlY19zZXR0aW5nc18ubW9kZSA9IFZpZGVvQ29kZWNNb2RlOjprUmVh
bHRpbWVWaWRlbzsKKyAgY29kZWNfc2V0dGluZ3NfLlZQOSgpLT5pbnRlckxheWVyUHJlZCA9IElu
dGVyTGF5ZXJQcmVkTW9kZTo6a09uS2V5UGljOworICBjb2RlY19zZXR0aW5nc18uVlA5KCktPmZs
ZXhpYmxlTW9kZSA9IGZhbHNlOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAor
ICAgICAgICAgICAgZW5jb2Rlcl8tPkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywgMSAvKiBu
dW1iZXIgb2YgY29yZXMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8q
IG1heCBwYXlsb2FkIHNpemUgKHVudXNlZCkgKi8pKTsKKworICAvLyBFbmFibGUgYWxsIHRoZSBs
YXllcnMuCisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uOworICBm
b3IgKHNpemVfdCBzbF9pZHggPSAwOyBzbF9pZHggPCBudW1fc3BhdGlhbF9sYXllcnM7ICsrc2xf
aWR4KSB7CisgICAgZm9yIChzaXplX3QgdGxfaWR4ID0gMDsgdGxfaWR4IDwgbnVtX3RlbXBvcmFs
X2xheWVyczsgKyt0bF9pZHgpIHsKKyAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5TZXRCaXRyYXRl
KAorICAgICAgICAgIHNsX2lkeCwgdGxfaWR4LAorICAgICAgICAgIGNvZGVjX3NldHRpbmdzXy5z
cGF0aWFsTGF5ZXJzW3NsX2lkeF0udGFyZ2V0Qml0cmF0ZSAqIDEwMDAgLworICAgICAgICAgICAg
ICBudW1fdGVtcG9yYWxfbGF5ZXJzKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKFdFQlJUQ19W
SURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihi
aXRyYXRlX2FsbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29kZWNfc2V0dGluZ3NfLm1heEZyYW1lcmF0ZSkpOworCisgIHN0ZDo6dmVjdG9yPEVuY29k
ZWRJbWFnZT4gZW5jb2RlZF9mcmFtZXM7CisgIHN0ZDo6dmVjdG9yPENvZGVjU3BlY2lmaWNJbmZv
PiBjb2RlY19zcGVjaWZpY19pbmZvOworCisgIC8vIEVuY29kZSBvbmUgVEwwIGZyYW1lCisgIFNl
dFdhaXRGb3JFbmNvZGVkRnJhbWVzVGhyZXNob2xkKG51bV9zcGF0aWFsX2xheWVycyk7CisgIEVY
UEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBlbmNvZGVyXy0+RW5j
b2RlKCpOZXh0SW5wdXRGcmFtZSgpLCBudWxscHRyLCBudWxscHRyKSk7CisgIEFTU0VSVF9UUlVF
KFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVkX2ZyYW1lcywgJmNvZGVjX3NwZWNpZmljX2lu
Zm8pKTsKKyAgRVhQRUNUX0VRKGNvZGVjX3NwZWNpZmljX2luZm9bMF0uY29kZWNTcGVjaWZpYy5W
UDkudGVtcG9yYWxfaWR4LCAwdSk7CisKKyAgLy8gRGlzYWJsZSB0aGUgbGFzdCBsYXllci4KKyAg
Zm9yIChzaXplX3QgdGxfaWR4ID0gMDsgdGxfaWR4IDwgbnVtX3RlbXBvcmFsX2xheWVyczsgKyt0
bF9pZHgpIHsKKyAgICBiaXRyYXRlX2FsbG9jYXRpb24uU2V0Qml0cmF0ZShudW1fc3BhdGlhbF9s
YXllcnMgLSAxLCB0bF9pZHgsIDApOworICB9CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09E
RUNfT0ssCisgICAgICAgICAgICBlbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZV9h
bGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVj
X3NldHRpbmdzXy5tYXhGcmFtZXJhdGUpKTsKKworICAvLyBOZXh0IGlzIFRMMSBmcmFtZS4gVGhl
IGxhc3QgbGF5ZXIgaXMgZGlzYWJsZWQgaW1tZWRpYXRlbHksIGJ1dCBTUyBzdHJ1Y3R1cmUKKyAg
Ly8gaXMgbm90IHByb3ZpZGVkIGhlcmUuCisgIFNldFdhaXRGb3JFbmNvZGVkRnJhbWVzVGhyZXNo
b2xkKG51bV9zcGF0aWFsX2xheWVycyAtIDEpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NP
REVDX09LLAorICAgICAgICAgICAgZW5jb2Rlcl8tPkVuY29kZSgqTmV4dElucHV0RnJhbWUoKSwg
bnVsbHB0ciwgbnVsbHB0cikpOworICBBU1NFUlRfVFJVRShXYWl0Rm9yRW5jb2RlZEZyYW1lcygm
ZW5jb2RlZF9mcmFtZXMsICZjb2RlY19zcGVjaWZpY19pbmZvKSk7CisgIEVYUEVDVF9FUShjb2Rl
Y19zcGVjaWZpY19pbmZvWzBdLmNvZGVjU3BlY2lmaWMuVlA5LnRlbXBvcmFsX2lkeCwgMXUpOwor
CisgIC8vIE5leHQgaXMgVEwwIGZyYW1lLCB3aGljaCBzaG91bGQgaGF2ZSBkZWxheWVkIFNTIHN0
cnVjdHVyZS4KKyAgU2V0V2FpdEZvckVuY29kZWRGcmFtZXNUaHJlc2hvbGQobnVtX3NwYXRpYWxf
bGF5ZXJzIC0gMSk7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAg
ICAgICBlbmNvZGVyXy0+RW5jb2RlKCpOZXh0SW5wdXRGcmFtZSgpLCBudWxscHRyLCBudWxscHRy
KSk7CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWVzKCZlbmNvZGVkX2ZyYW1lcywg
JmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgRVhQRUNUX0VRKGNvZGVjX3NwZWNpZmljX2luZm9b
MF0uY29kZWNTcGVjaWZpYy5WUDkudGVtcG9yYWxfaWR4LCAwdSk7CisgIEVYUEVDVF9UUlVFKGNv
ZGVjX3NwZWNpZmljX2luZm9bMF0uY29kZWNTcGVjaWZpYy5WUDkuc3NfZGF0YV9hdmFpbGFibGUp
OworICBFWFBFQ1RfVFJVRShjb2RlY19zcGVjaWZpY19pbmZvWzBdCisgICAgICAgICAgICAgICAg
ICAuY29kZWNTcGVjaWZpYy5WUDkuc3BhdGlhbF9sYXllcl9yZXNvbHV0aW9uX3ByZXNlbnQpOwor
ICBFWFBFQ1RfRVEoCisgICAgICBjb2RlY19zcGVjaWZpY19pbmZvWzBdLmNvZGVjU3BlY2lmaWMu
VlA5LndpZHRoW251bV9zcGF0aWFsX2xheWVycyAtIDFdLAorICAgICAgMHUpOworfQorCiBURVNU
X0YoVGVzdFZwOUltcGwsCiAgICAgICAgTG93TGF5ZXJNYXJrZWRBc1JlZklmSGlnaExheWVyTm90
RW5jb2RlZEFuZEludGVyTGF5ZXJQcmVkSXNFbmFibGVkKSB7CiAgIENvbmZpZ3VyZVN2YygzKTsK
QEAgLTc2Niw2ICsxMDEzLDcgQEAgVEVTVF9GKFRlc3RWcDlJbXBsRnJhbWVEcm9wcGluZywgRGlm
ZmVyZW50RnJhbWVyYXRlUGVyU3BhdGlhbExheWVyKSB7CiAKICAgY29kZWNfc2V0dGluZ3NfLlZQ
OSgpLT5udW1iZXJPZlNwYXRpYWxMYXllcnMgPSBudW1fc3BhdGlhbF9sYXllcnM7CiAgIGNvZGVj
X3NldHRpbmdzXy5WUDkoKS0+ZnJhbWVEcm9wcGluZ09uID0gZmFsc2U7CisgIGNvZGVjX3NldHRp
bmdzXy5WUDkoKS0+ZmxleGlibGVNb2RlID0gdHJ1ZTsKIAogICBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uIGJpdHJhdGVfYWxsb2NhdGlvbjsKICAgZm9yICh1aW50OF90IHNsX2lkeCA9IDA7IHNsX2lk
eCA8IG51bV9zcGF0aWFsX2xheWVyczsgKytzbF9pZHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDkvdnA5X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmNjCmluZGV4
IDYxNTQyYzUwODIxMTQ5NjI5N2IzNmNlY2RlNDc5NGI0NjI4NGU2MDUuLmI4OTllMWZhYmU0NTMz
MDA5Yjc1ZTE3ZDAyOTlkOGEwYmVjNGRjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkv
dnA5X2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5jYwpAQCAtNDksNiAr
NDksOSBAQCB1aW50OF90IGtVcGRCdWZJZHhbNF0gPSB7MCwgMCwgMSwgMH07CiAKIGludCBrTWF4
TnVtVGlsZXM0a1ZpZGVvID0gODsKIAorLy8gTWF4aW11bSBhbGxvd2VkIFBJRCBkaWZmZXJlbmNl
IGZvciB2YXJpYWJsZSBmcmFtZS1yYXRlIG1vZGUuCitjb25zdCBpbnQga01heEFsbG93ZWRQaWRE
SWZmID0gODsKKwogLy8gT25seSBwb3NpdGl2ZSBzcGVlZHMsIHJhbmdlIGZvciByZWFsLXRpbWUg
Y29kaW5nIGN1cnJlbnRseSBpczogNSAtIDguCiAvLyBMb3dlciBtZWFucyBzbG93ZXIvYmV0dGVy
IHF1YWxpdHksIGhpZ2hlciBtZWFucyBmYXN0ZXN0L2xvd2VyIHF1YWxpdHkuCiBpbnQgR2V0Q3B1
U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CkBAIC0xMjQsNiArMTI3LDE4IEBAIENvbG9y
U3BhY2UgRXh0cmFjdFZQOUNvbG9yU3BhY2UodnB4X2NvbG9yX3NwYWNlX3Qgc3BhY2VfdCwKICAg
fQogICByZXR1cm4gQ29sb3JTcGFjZShwcmltYXJpZXMsIHRyYW5zZmVyLCBtYXRyaXgsIHJhbmdl
KTsKIH0KKworYm9vbCBNb3JlTGF5ZXJzRW5hYmxlZChjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uJiBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiYgc2Vjb25kKSB7CisgIGZvciAoc2l6ZV90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IGtN
YXhTcGF0aWFsTGF5ZXJzOyArK3NsX2lkeCkgeworICAgIGlmIChmaXJzdC5HZXRTcGF0aWFsTGF5
ZXJTdW0oc2xfaWR4KSA+IDAgJiYKKyAgICAgICAgc2Vjb25kLkdldFNwYXRpYWxMYXllclN1bShz
bF9pZHgpID09IDApIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICByZXR1cm4g
ZmFsc2U7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lkIFZQOUVuY29kZXJJbXBsOjpFbmNv
ZGVyT3V0cHV0Q29kZWRQYWNrZXRDYWxsYmFjayh2cHhfY29kZWNfY3hfcGt0KiBwa3QsCkBAIC0x
NTQsMTIgKzE2OSwxMiBAQCBWUDlFbmNvZGVySW1wbDo6VlA5RW5jb2RlckltcGwoY29uc3QgY3Jp
Y2tldDo6VmlkZW9Db2RlYyYgY29kZWMpCiAgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLVZwOUlzc3VlS2V5RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uIikpLAogICAgICAg
aXNfc3ZjXyhmYWxzZSksCiAgICAgICBpbnRlcl9sYXllcl9wcmVkXyhJbnRlckxheWVyUHJlZE1v
ZGU6OmtPbiksCi0gICAgICBleHRlcm5hbF9yZWZfY29udHJvbF8oCi0gICAgICAgICAgZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVZwOUV4dGVybmFsUmVmQ3RybCIpKSwKKyAgICAgIGV4
dGVybmFsX3JlZl9jb250cm9sXyhmYWxzZSksICAvLyBTZXQgaW4gSW5pdEVuY29kZSBiZWNhdXNl
IG9mIHRlc3RzLgogICAgICAgdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXJfKAogICAgICAgICAgIGZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1ZwOVRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwp
KSwKICAgICAgIGZ1bGxfc3VwZXJmcmFtZV9kcm9wXyh0cnVlKSwKICAgICAgIGZpcnN0X2ZyYW1l
X2luX3BpY3R1cmVfKHRydWUpLAorICAgICAgc3NfaW5mb19uZWVkZWRfKGZhbHNlKSwKICAgICAg
IGlzX2ZsZXhpYmxlX21vZGVfKGZhbHNlKSB7CiAgIG1lbXNldCgmY29kZWNfLCAwLCBzaXplb2Yo
Y29kZWNfKSk7CiAgIG1lbXNldCgmc3ZjX3BhcmFtc18sIDAsIHNpemVvZih2cHhfc3ZjX2V4dHJh
X2NmZ190KSk7CkBAIC0zMTQsMTQgKzMyOSw4IEBAIGludCBWUDlFbmNvZGVySW1wbDo6U2V0UmF0
ZUFsbG9jYXRpb24oCiAKICAgY29kZWNfLm1heEZyYW1lcmF0ZSA9IGZyYW1lX3JhdGU7CiAKLSAg
aWYgKCFTZXRTdmNSYXRlcyhiaXRyYXRlX2FsbG9jYXRpb24pKSB7Ci0gICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19FUlJfUEFSQU1FVEVSOwotICB9CisgIHJlcXVlc3RlZF9iaXRyYXRlX2Fs
bG9jYXRpb25fID0gYml0cmF0ZV9hbGxvY2F0aW9uOwogCi0gIC8vIFVwZGF0ZSBlbmNvZGVyIGNv
bnRleHQKLSAgaWYgKHZweF9jb2RlY19lbmNfY29uZmlnX3NldChlbmNvZGVyXywgY29uZmlnXykp
IHsKLSAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotICB9CiAgIHJldHVybiBX
RUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTQ2MSw2ICs0NzAsMjcgQEAgaW50IFZQOUVu
Y29kZXJJbXBsOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAKICAgaXNfZmxl
eGlibGVfbW9kZV8gPSBpbnN0LT5WUDkoKS5mbGV4aWJsZU1vZGU7CiAKKyAgaW50ZXJfbGF5ZXJf
cHJlZF8gPSBpbnN0LT5WUDkoKS5pbnRlckxheWVyUHJlZDsKKworICBkaWZmZXJlbnRfZnJhbWVy
YXRlc191c2VkXyA9IGZhbHNlOworICBmb3IgKHNpemVfdCBzbF9pZHggPSAxOyBzbF9pZHggPCBu
dW1fc3BhdGlhbF9sYXllcnNfOyArK3NsX2lkeCkgeworICAgIGlmIChzdGQ6OmFicyhjb2RlY18u
c3BhdGlhbExheWVyc1tzbF9pZHhdLm1heEZyYW1lcmF0ZSAtCisgICAgICAgICAgICAgICAgIGNv
ZGVjXy5zcGF0aWFsTGF5ZXJzWzBdLm1heEZyYW1lcmF0ZSkgPiAxZS05KSB7CisgICAgICBkaWZm
ZXJlbnRfZnJhbWVyYXRlc191c2VkXyA9IHRydWU7CisgICAgfQorICB9CisKKyAgaWYgKGRpZmZl
cmVudF9mcmFtZXJhdGVzX3VzZWRfICYmICFpc19mbGV4aWJsZV9tb2RlXykgeworICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGbGV4aWJsZSBtb2RlIHJlcXVpcmVkIGZvciBkaWZmZXJlbnQgZnJh
bWVyYXRlcyBvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBzcGF0aWFs
IGxheWVycyI7CisgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJfUEFSQU1FVEVSOwor
ICB9CisKKyAgLy8gRXh0ZXJuYWwgcmVmZXJlbmNlIGNvbnRyb2wgaXMgcmVxdWlyZWQgZm9yIGRp
ZmZlcmVudCBmcmFtZSByYXRlIG9uIHNwYXRpYWwKKyAgLy8gbGF5ZXJzIGJlY2F1c2UgbGlidnB4
IGdlbmVyYXRlcyBydHAgaW5jb21wYXRpYmxlIHJlZmVyZW5jZXMgaW4gdGhpcyBjYXNlLgorICBl
eHRlcm5hbF9yZWZfY29udHJvbF8gPSBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtVnA5
RXh0ZXJuYWxSZWZDdHJsIikgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50
X2ZyYW1lcmF0ZXNfdXNlZF87CisKICAgaWYgKG51bV90ZW1wb3JhbF9sYXllcnNfID09IDEpIHsK
ICAgICBnb2ZfLlNldEdvZkluZm9WUDkoa1RlbXBvcmFsU3RydWN0dXJlTW9kZTEpOwogICAgIGNv
bmZpZ18tPnRlbXBvcmFsX2xheWVyaW5nX21vZGUgPSBWUDlFX1RFTVBPUkFMX0xBWUVSSU5HX01P
REVfTk9MQVlFUklORzsKQEAgLTQ5Myw4ICs1MjMsMTQgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpJ
bml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJfUEFSQU1FVEVSOwogICB9CiAKLSAgaW50ZXJfbGF5ZXJfcHJlZF8gPSBpbnN0
LT5WUDkoKS5pbnRlckxheWVyUHJlZDsKLQorICBpZiAoZXh0ZXJuYWxfcmVmX2NvbnRyb2xfKSB7
CisgICAgY29uZmlnXy0+dGVtcG9yYWxfbGF5ZXJpbmdfbW9kZSA9IFZQOUVfVEVNUE9SQUxfTEFZ
RVJJTkdfTU9ERV9CWVBBU1M7CisgICAgaWYgKG51bV90ZW1wb3JhbF9sYXllcnNfID4gMSAmJiBk
aWZmZXJlbnRfZnJhbWVyYXRlc191c2VkXykgeworICAgICAgLy8gRXh0ZXJuYWwgcmVmZXJlbmNl
IGNvbnRyb2wgZm9yIHNldmVyYWwgdGVtcG9yYWwgbGF5ZXJzIHdpdGggZGlmZmVyZW50CisgICAg
ICAvLyBmcmFtZSByYXRlcyBvbiBzcGF0aWFsIGxheWVycyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
LgorICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJfUEFSQU1FVEVSOworICAgIH0K
KyAgfQogICByZWZfYnVmXy5jbGVhcigpOwogCiAgIHJldHVybiBJbml0QW5kU2V0Q29udHJvbFNl
dHRpbmdzKGluc3QpOwpAQCAtNTc1LDkgKzYxMSw5IEBAIGludCBWUDlFbmNvZGVySW1wbDo6SW5p
dEFuZFNldENvbnRyb2xTZXR0aW5ncyhjb25zdCBWaWRlb0NvZGVjKiBpbnN0KSB7CiAgIH0KIAog
ICBTdmNSYXRlQWxsb2NhdG9yIGluaXRfYWxsb2NhdG9yKGNvZGVjXyk7Ci0gIFZpZGVvQml0cmF0
ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9IGluaXRfYWxsb2NhdG9yLkdldEFsbG9jYXRpb24oCisg
IGN1cnJlbnRfYml0cmF0ZV9hbGxvY2F0aW9uXyA9IGluaXRfYWxsb2NhdG9yLkdldEFsbG9jYXRp
b24oCiAgICAgICBpbnN0LT5zdGFydEJpdHJhdGUgKiAxMDAwLCBpbnN0LT5tYXhGcmFtZXJhdGUp
OwotICBpZiAoIVNldFN2Y1JhdGVzKGFsbG9jYXRpb24pKSB7CisgIGlmICghU2V0U3ZjUmF0ZXMo
Y3VycmVudF9iaXRyYXRlX2FsbG9jYXRpb25fKSkgewogICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfRVJSX1BBUkFNRVRFUjsKICAgfQogCkBAIC01OTUsNiArNjMxLDcgQEAgaW50IFZQOUVu
Y29kZXJJbXBsOjpJbml0QW5kU2V0Q29udHJvbFNldHRpbmdzKGNvbnN0IFZpZGVvQ29kZWMqIGlu
c3QpIHsKICAgICAgICAgICAgICAgICAgICAgaW5zdC0+VlA5KCkuYWRhcHRpdmVRcE1vZGUgPyAz
IDogMCk7CiAKICAgdnB4X2NvZGVjX2NvbnRyb2woZW5jb2Rlcl8sIFZQOUVfU0VUX0ZSQU1FX1BB
UkFMTEVMX0RFQ09ESU5HLCAwKTsKKyAgdnB4X2NvZGVjX2NvbnRyb2woZW5jb2Rlcl8sIFZQOUVf
U0VUX1NWQ19HRl9URU1QT1JBTF9SRUYsIDApOwogCiAgIGlmIChpc19zdmNfKSB7CiAgICAgdnB4
X2NvZGVjX2NvbnRyb2woZW5jb2Rlcl8sIFZQOUVfU0VUX1NWQywgMSk7CkBAIC02OTYsMTUgKzcz
MywxMiBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1
dF9pbWFnZSwKICAgICB9CiAgIH0KIAotICBzaXplX3QgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5
ZXJfaWQgPSAwOwotICBpZiAoVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nID09IGNvZGVj
Xy5tb2RlKSB7Ci0gICAgdnB4X3N2Y19sYXllcl9pZF90IGxheWVyX2lkID0gezB9OwotICAgIGlm
ICghZm9yY2Vfa2V5X2ZyYW1lXykgewotICAgICAgLy8gU2tpcCBlbmNvZGluZyBzcGF0aWFsIGxh
eWVyIGZyYW1lcyBpZiB0aGVpciB0YXJnZXQgZnJhbWUgcmF0ZSBpcyBsb3dlcgotICAgICAgLy8g
dGhhbiBhY3R1YWwgaW5wdXQgZnJhbWUgcmF0ZS4KLSAgICAgIGNvbnN0IHNpemVfdCBnb2ZfaWR4
ID0gKHBpY3Nfc2luY2Vfa2V5XyArIDEpICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsKLSAgICAg
IGxheWVyX2lkLnRlbXBvcmFsX2xheWVyX2lkID0gZ29mXy50ZW1wb3JhbF9pZHhbZ29mX2lkeF07
CisgIHZweF9zdmNfbGF5ZXJfaWRfdCBsYXllcl9pZCA9IHswfTsKKyAgaWYgKCFmb3JjZV9rZXlf
ZnJhbWVfKSB7CisgICAgY29uc3Qgc2l6ZV90IGdvZl9pZHggPSAocGljc19zaW5jZV9rZXlfICsg
MSkgJSBnb2ZfLm51bV9mcmFtZXNfaW5fZ29mOworICAgIGxheWVyX2lkLnRlbXBvcmFsX2xheWVy
X2lkID0gZ29mXy50ZW1wb3JhbF9pZHhbZ29mX2lkeF07CiAKKyAgICBpZiAoVmlkZW9Db2RlY01v
ZGU6OmtTY3JlZW5zaGFyaW5nID09IGNvZGVjXy5tb2RlKSB7CiAgICAgICBjb25zdCB1aW50MzJf
dCBmcmFtZV90aW1lc3RhbXBfbXMgPQogICAgICAgICAgIDEwMDAgKiBpbnB1dF9pbWFnZS50aW1l
c3RhbXAoKSAvIGtWaWRlb1BheWxvYWRUeXBlRnJlcXVlbmN5OwogCkBAIC03MjIsOCArNzU2LDQy
IEBAIGludCBWUDlFbmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2lt
YWdlLAogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogICAgICAgfQogICAg
IH0KLSAgICBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZCA9IGxheWVyX2lkLnNwYXRpYWxf
bGF5ZXJfaWQ7Ci0gICAgdnB4X2NvZGVjX2NvbnRyb2woZW5jb2Rlcl8sIFZQOUVfU0VUX1NWQ19M
QVlFUl9JRCwgJmxheWVyX2lkKTsKKyAgfQorCisgIGZvciAoaW50IHNsX2lkeCA9IDA7IHNsX2lk
eCA8IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfOyArK3NsX2lkeCkgeworICAgIGxheWVyX2lk
LnRlbXBvcmFsX2xheWVyX2lkX3Blcl9zcGF0aWFsW3NsX2lkeF0gPSBsYXllcl9pZC50ZW1wb3Jh
bF9sYXllcl9pZDsKKyAgfQorCisgIHZweF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBWUDlFX1NF
VF9TVkNfTEFZRVJfSUQsICZsYXllcl9pZCk7CisKKyAgaWYgKHJlcXVlc3RlZF9iaXRyYXRlX2Fs
bG9jYXRpb25fKSB7CisgICAgYm9vbCBtb3JlX2xheWVyc19yZXF1ZXN0ZWQgPSBNb3JlTGF5ZXJz
RW5hYmxlZCgKKyAgICAgICAgKnJlcXVlc3RlZF9iaXRyYXRlX2FsbG9jYXRpb25fLCBjdXJyZW50
X2JpdHJhdGVfYWxsb2NhdGlvbl8pOworICAgIGJvb2wgbGVzc19sYXllcnNfcmVxdWVzdGVkID0g
TW9yZUxheWVyc0VuYWJsZWQoCisgICAgICAgIGN1cnJlbnRfYml0cmF0ZV9hbGxvY2F0aW9uXywg
KnJlcXVlc3RlZF9iaXRyYXRlX2FsbG9jYXRpb25fKTsKKyAgICAvLyBJbiBTVkMgY2FuIGVuYWJs
ZSBuZXcgbGF5ZXJzIG9ubHkgaWYgYWxsIGxvd2VyIGxheWVycyBhcmUgZW5jb2RlZCBhbmQgYXQK
KyAgICAvLyB0aGUgYmFzZSB0ZW1wb3JhbCBsYXllci4KKyAgICAvLyBUaGlzIHdpbGwgZGVsYXkg
cmF0ZSBhbGxvY2F0aW9uIGNoYW5nZSB1bnRpbCB0aGUgbmV4dCBmcmFtZSBvbiB0aGUgYmFzZQor
ICAgIC8vIHNwYXRpYWwgbGF5ZXIuCisgICAgLy8gSW4gS1NWQyBvciBzaW11bGNhc3QgbW9kZXMg
S0Ygd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGEgbmV3IGxheWVyLCBzbyBjYW4KKyAgICAvLyB1cGRh
dGUgYWxsb2NhdGlvbiBhbnkgdGltZS4KKyAgICBib29sIGNhbl91cHN3aXRjaCA9CisgICAgICAg
IGludGVyX2xheWVyX3ByZWRfICE9IEludGVyTGF5ZXJQcmVkTW9kZTo6a09uIHx8CisgICAgICAg
IChsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkID09IDAgJiYgbGF5ZXJfaWQudGVtcG9yYWxfbGF5
ZXJfaWQgPT0gMCk7CisgICAgaWYgKCFtb3JlX2xheWVyc19yZXF1ZXN0ZWQgfHwgY2FuX3Vwc3dp
dGNoKSB7CisgICAgICBjdXJyZW50X2JpdHJhdGVfYWxsb2NhdGlvbl8gPSAqcmVxdWVzdGVkX2Jp
dHJhdGVfYWxsb2NhdGlvbl87CisgICAgICByZXF1ZXN0ZWRfYml0cmF0ZV9hbGxvY2F0aW9uXyA9
IGFic2w6Om51bGxvcHQ7CisgICAgICBpZiAoIVNldFN2Y1JhdGVzKGN1cnJlbnRfYml0cmF0ZV9h
bGxvY2F0aW9uXykpIHsKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJfUEFS
QU1FVEVSOworICAgICAgfQorICAgICAgaWYgKGxlc3NfbGF5ZXJzX3JlcXVlc3RlZCB8fCBtb3Jl
X2xheWVyc19yZXF1ZXN0ZWQpIHsKKyAgICAgICAgc3NfaW5mb19uZWVkZWRfID0gdHJ1ZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICBpZiAodnB4X2NvZGVjX2VuY19jb25maWdfc2V0KGVuY29k
ZXJfLCBjb25maWdfKSkgeworICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAg
IH0KIAogICBSVENfRENIRUNLX0VRKGlucHV0X2ltYWdlLndpZHRoKCksIHJhd18tPmRfdyk7CkBA
IC03ODQsNyArODUyLDcgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9G
cmFtZSYgaW5wdXRfaW1hZ2UsCiAKICAgaWYgKGV4dGVybmFsX3JlZl9jb250cm9sXykgewogICAg
IHZweF9zdmNfcmVmX2ZyYW1lX2NvbmZpZ190IHJlZl9jb25maWcgPQotICAgICAgICBTZXRSZWZl
cmVuY2VzKGZvcmNlX2tleV9mcmFtZV8sIGZpcnN0X2FjdGl2ZV9zcGF0aWFsX2xheWVyX2lkKTsK
KyAgICAgICAgU2V0UmVmZXJlbmNlcyhmb3JjZV9rZXlfZnJhbWVfLCBsYXllcl9pZC5zcGF0aWFs
X2xheWVyX2lkKTsKIAogICAgIGlmIChWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJpbmcgPT0g
Y29kZWNfLm1vZGUpIHsKICAgICAgIGZvciAodWludDhfdCBzbF9pZHggPSAwOyBzbF9pZHggPCBu
dW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJzXzsgKytzbF9pZHgpIHsKQEAgLTg0NCw5ICs5MTIsMjIg
QEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lm
aWNJbmZvKiBjb2RlY19zcGVjaWZpYywKICAgdnA5X2luZm8tPnNzX2RhdGFfYXZhaWxhYmxlID0K
ICAgICAgIChwa3QuZGF0YS5mcmFtZS5mbGFncyAmIFZQWF9GUkFNRV9JU19LRVkpID8gdHJ1ZSA6
IGZhbHNlOwogCisgIGlmIChwa3QuZGF0YS5mcmFtZS5mbGFncyAmIFZQWF9GUkFNRV9JU19LRVkp
IHsKKyAgICBwaWNzX3NpbmNlX2tleV8gPSAwOworICB9IGVsc2UgaWYgKGZpcnN0X2ZyYW1lX2lu
X3BpY3R1cmVfKSB7CisgICAgKytwaWNzX3NpbmNlX2tleV87CisgIH0KKwogICB2cHhfc3ZjX2xh
eWVyX2lkX3QgbGF5ZXJfaWQgPSB7MH07CiAgIHZweF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBW
UDlFX0dFVF9TVkNfTEFZRVJfSUQsICZsYXllcl9pZCk7CiAKKyAgaWYgKHNzX2luZm9fbmVlZGVk
XyAmJiBsYXllcl9pZC50ZW1wb3JhbF9sYXllcl9pZCA9PSAwICYmCisgICAgICBsYXllcl9pZC5z
cGF0aWFsX2xheWVyX2lkID09IDApIHsKKyAgICAvLyBGb3JjZSBTUyBpbmZvIGFmdGVyIHRoZSBs
YXllcnMgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZC4KKyAgICB2cDlfaW5mby0+c3NfZGF0YV9h
dmFpbGFibGUgPSB0cnVlOworICAgIHNzX2luZm9fbmVlZGVkXyA9IGZhbHNlOworICB9CisKICAg
UlRDX0NIRUNLX0dUKG51bV90ZW1wb3JhbF9sYXllcnNfLCAwKTsKICAgUlRDX0NIRUNLX0dUKG51
bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfLCAwKTsKICAgaWYgKG51bV90ZW1wb3JhbF9sYXllcnNf
ID09IDEpIHsKQEAgLTg2OCwxMiArOTQ5LDYgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6UG9wdWxh
dGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywKICAgLy8g
VE9ETyhhc2FwZXJzc29uKTogdGhpcyBpbmZvIGhhcyB0byBiZSBvYnRhaW5lZCBmcm9tIHRoZSBl
bmNvZGVyLgogICB2cDlfaW5mby0+dGVtcG9yYWxfdXBfc3dpdGNoID0gZmFsc2U7CiAKLSAgaWYg
KHBrdC5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1FX0lTX0tFWSkgewotICAgIHBpY3Nfc2lu
Y2Vfa2V5XyA9IDA7Ci0gIH0gZWxzZSBpZiAoZmlyc3RfZnJhbWVfaW5fcGljdHVyZV8pIHsKLSAg
ICArK3BpY3Nfc2luY2Vfa2V5XzsKLSAgfQotCiAgIGNvbnN0IGJvb2wgaXNfa2V5X3BpYyA9IChw
aWNzX3NpbmNlX2tleV8gPT0gMCk7CiAgIGNvbnN0IGJvb2wgaXNfaW50ZXJfbGF5ZXJfcHJlZF9h
bGxvd2VkID0KICAgICAgIChpbnRlcl9sYXllcl9wcmVkXyA9PSBJbnRlckxheWVyUHJlZE1vZGU6
OmtPbiB8fApAQCAtOTA1LDggKzk4MCw2IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OlBvcHVsYXRl
Q29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMsCiAgICAgdnA5
X2luZm8tPmdvZl9pZHggPSBrTm9Hb2ZJZHg7CiAgICAgRmlsbFJlZmVyZW5jZUluZGljZXMocGt0
LCBwaWNzX3NpbmNlX2tleV8sIHZwOV9pbmZvLT5pbnRlcl9sYXllcl9wcmVkaWN0ZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdnA5X2luZm8pOwotICAgIC8vIFRPRE8od2VicnRjOjk3OTQp
OiBBZGQgZmFrZSByZWZlcmVuY2UgdG8gZW1wdHkgcmVmZXJlbmNlIGxpc3QgdG8KLSAgICAvLyB3
b3JrYXJvdW5kIHRoZSBmcmFtZSBidWZmZXIgaXNzdWUgb24gcmVjZWl2ZXIuCiAgIH0gZWxzZSB7
CiAgICAgdnA5X2luZm8tPmdvZl9pZHggPQogICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pihw
aWNzX3NpbmNlX2tleV8gJSBnb2ZfLm51bV9mcmFtZXNfaW5fZ29mKTsKQEAgLTEwNTQsMjAgKzEx
MjcsMTMgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6VXBkYXRlUmVmZXJlbmNlQnVmZmVycyhjb25z
dCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCiAgICAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3Qg
ZW5jX2xheWVyX2NvbmYgPSB7ezB9fTsKICAgICB2cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywg
VlA5RV9HRVRfU1ZDX1JFRl9GUkFNRV9DT05GSUcsICZlbmNfbGF5ZXJfY29uZik7CiAKLSAgICBp
ZiAoZW5jX2xheWVyX2NvbmYudXBkYXRlX2xhc3RbbGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9pZF0p
IHsKLSAgICAgIHJlZl9idWZfW2VuY19sYXllcl9jb25mLmxzdF9mYl9pZHhbbGF5ZXJfaWQuc3Bh
dGlhbF9sYXllcl9pZF1dID0KLSAgICAgICAgICBmcmFtZV9idWY7Ci0gICAgfQotCi0gICAgaWYg
KGVuY19sYXllcl9jb25mLnVwZGF0ZV9hbHRfcmVmW2xheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWRd
KSB7Ci0gICAgICByZWZfYnVmX1tlbmNfbGF5ZXJfY29uZi5hbHRfZmJfaWR4W2xheWVyX2lkLnNw
YXRpYWxfbGF5ZXJfaWRdXSA9Ci0gICAgICAgICAgZnJhbWVfYnVmOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwga051bVZwOUJ1ZmZlcnM7ICsraSkgeworICAgICAgaWYgKGVuY19sYXllcl9j
b25mLnVwZGF0ZV9idWZmZXJfc2xvdFtsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkXSAmCisgICAg
ICAgICAgKDEgPDwgaSkpIHsKKyAgICAgICAgcmVmX2J1Zl9baV0gPSBmcmFtZV9idWY7CisgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKGVuY19sYXllcl9jb25mLnVwZGF0ZV9nb2xkZW5bbGF5ZXJf
aWQuc3BhdGlhbF9sYXllcl9pZF0pIHsKLSAgICAgIHJlZl9idWZfW2VuY19sYXllcl9jb25mLmds
ZF9mYl9pZHhbbGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9pZF1dID0KLSAgICAgICAgICBmcmFtZV9i
dWY7Ci0gICAgfQogICB9IGVsc2UgewogICAgIFJUQ19EQ0hFQ0tfRVEobnVtX3NwYXRpYWxfbGF5
ZXJzXywgMSk7CiAgICAgUlRDX0RDSEVDS19FUShudW1fdGVtcG9yYWxfbGF5ZXJzXywgMSk7CkBA
IC0xMTAxLDggKzExNjcsMTAgQEAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgVlA5RW5jb2Rl
ckltcGw6OlNldFJlZmVyZW5jZXMoCiAgIC8vIGZvciB0ZW1wb3JhbCByZWZlcmVuY2VzIHBsdXMg
MSBidWZmZXIgZm9yIHNwYXRpYWwgcmVmZXJlbmNlLiA3IGJ1ZmZlcnMKICAgLy8gaW4gdG90YWwu
CiAKLSAgZm9yIChzaXplX3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0aWFs
X2xheWVyc187ICsrc2xfaWR4KSB7Ci0gICAgY29uc3Qgc2l6ZV90IGdvZl9pZHggPSBwaWNzX3Np
bmNlX2tleV8gJSBnb2ZfLm51bV9mcmFtZXNfaW5fZ29mOworICBmb3IgKHNpemVfdCBzbF9pZHgg
PSBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZDsKKyAgICAgICBzbF9pZHggPCBudW1fYWN0
aXZlX3NwYXRpYWxfbGF5ZXJzXzsgKytzbF9pZHgpIHsKKyAgICBjb25zdCBzaXplX3QgY3Vycl9w
aWNfbnVtID0gaXNfa2V5X3BpYyA/IDAgOiBwaWNzX3NpbmNlX2tleV8gKyAxOworICAgIGNvbnN0
IHNpemVfdCBnb2ZfaWR4ID0gY3Vycl9waWNfbnVtICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsK
IAogICAgIGlmICghaXNfa2V5X3BpYykgewogICAgICAgLy8gU2V0IHVwIHRlbXBvcmFsIHJlZmVy
ZW5jZS4KQEAgLTExMTQsMjAgKzExODIsMjkgQEAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3Qg
VlA5RW5jb2RlckltcGw6OlNldFJlZmVyZW5jZXMoCiAKICAgICAgIC8vIFNhbml0eSBjaGVjayB0
aGF0IHJlZmVyZW5jZSBwaWN0dXJlIG51bWJlciBpcyBzbWFsbGVyIHRoYW4gY3VycmVudAogICAg
ICAgLy8gcGljdHVyZSBudW1iZXIuCi0gICAgICBjb25zdCBzaXplX3QgY3Vycl9waWNfbnVtID0g
cGljc19zaW5jZV9rZXlfICsgMTsKICAgICAgIFJUQ19EQ0hFQ0tfTFQocmVmX2J1Zl9bYnVmX2lk
eF0ucGljX251bSwgY3Vycl9waWNfbnVtKTsKICAgICAgIGNvbnN0IHNpemVfdCBwaWRfZGlmZiA9
IGN1cnJfcGljX251bSAtIHJlZl9idWZfW2J1Zl9pZHhdLnBpY19udW07CisgICAgICAvLyBJbmNv
cnJlY3Qgc3BhdGlhbCBsYXllciBtYXkgYmUgaW4gdGhlIGJ1ZmZlciBkdWUgdG8gYSBrZXktZnJh
bWUuCisgICAgICBjb25zdCBib29sIHNhbWVfc3BhdGlhbF9sYXllciA9CisgICAgICAgICAgcmVm
X2J1Zl9bYnVmX2lkeF0uc3BhdGlhbF9sYXllcl9pZCA9PSBzbF9pZHg7CisgICAgICBib29sIGNv
cnJlY3RfcGlkID0gZmFsc2U7CisgICAgICBpZiAoZGlmZmVyZW50X2ZyYW1lcmF0ZXNfdXNlZF8p
IHsKKyAgICAgICAgY29ycmVjdF9waWQgPSBwaWRfZGlmZiA8IGtNYXhBbGxvd2VkUGlkRElmZjsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEJlbG93IGNvZGUgYXNzdW1lcyBzaW5nbGUgdGVt
cG9yYWwgcmVmZXJlY2VuY2UuCisgICAgICAgIFJUQ19EQ0hFQ0tfRVEoZ29mXy5udW1fcmVmX3Bp
Y3NbZ29mX2lkeF0sIDEpOworICAgICAgICBjb3JyZWN0X3BpZCA9IHBpZF9kaWZmID09IGdvZl8u
cGlkX2RpZmZbZ29mX2lkeF1bMF07CisgICAgICB9CiAKLSAgICAgIC8vIEJlbG93IGNvZGUgYXNz
dW1lcyBzaW5nbGUgdGVtcG9yYWwgcmVmZXJlY2VuY2UuCi0gICAgICBSVENfRENIRUNLX0VRKGdv
Zl8ubnVtX3JlZl9waWNzW2dvZl9pZHhdLCAxKTsKLSAgICAgIGlmIChwaWRfZGlmZiA9PSBnb2Zf
LnBpZF9kaWZmW2dvZl9pZHhdWzBdKSB7CisgICAgICBpZiAoc2FtZV9zcGF0aWFsX2xheWVyICYm
IGNvcnJlY3RfcGlkKSB7CiAgICAgICAgIHJlZl9jb25maWcubHN0X2ZiX2lkeFtzbF9pZHhdID0g
YnVmX2lkeDsKICAgICAgICAgcmVmX2NvbmZpZy5yZWZlcmVuY2VfbGFzdFtzbF9pZHhdID0gMTsK
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgcmVmZXJlbmNlIGRvZXNuJ3QgbWF0Y2gg
d2l0aCBvbmUgc3BlY2lmaWVkIGJ5IEdPRi4gVGhpcyBjYW4KICAgICAgICAgLy8gb25seSBoYXBw
ZW4gaWYgc3BhdGlhbCBsYXllciBpcyBlbmFibGVkIGR5bmFtaWNhbGx5IHdpdGhvdXQga2V5CiAg
ICAgICAgIC8vIGZyYW1lLiBTcGF0aWFsIHByZWRpY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgZW5h
YmxlZCBpbiB0aGlzIGNhc2UuCi0gICAgICAgIFJUQ19EQ0hFQ0soaXNfaW50ZXJfbGF5ZXJfcHJl
ZF9hbGxvd2VkKTsKKyAgICAgICAgUlRDX0RDSEVDSyhpc19pbnRlcl9sYXllcl9wcmVkX2FsbG93
ZWQgJiYKKyAgICAgICAgICAgICAgICAgICBzbF9pZHggPiBmaXJzdF9hY3RpdmVfc3BhdGlhbF9s
YXllcl9pZCk7CiAgICAgICB9CiAgICAgfQogCkBAIC0xMTQ0LDcgKzEyMjEsOCBAQCB2cHhfc3Zj
X3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6U2V0UmVmZXJlbmNlcygKIAogICAg
IGxhc3RfdXBkYXRlZF9idWZfaWR4LnJlc2V0KCk7CiAKLSAgICBpZiAoZ29mXy50ZW1wb3JhbF9p
ZHhbZ29mX2lkeF0gPD0gbnVtX3RlbXBvcmFsX2xheWVyc18gLSAxKSB7CisgICAgaWYgKGdvZl8u
dGVtcG9yYWxfaWR4W2dvZl9pZHhdIDwgbnVtX3RlbXBvcmFsX2xheWVyc18gLSAxIHx8CisgICAg
ICAgIG51bV90ZW1wb3JhbF9sYXllcnNfID09IDEpIHsKICAgICAgIGxhc3RfdXBkYXRlZF9idWZf
aWR4ID0gc2xfaWR4ICogbnVtX3RlbXBvcmFsX3JlZnMgKyBrVXBkQnVmSWR4W2dvZl9pZHhdOwog
CiAgICAgICAvLyBFbnN1cmUgbGFzdCBmcmFtZSBidWZmZXIgaXMgbm90IHVzZWQgZm9yIHRlbXBv
cmFsIHByZWRpY3Rpb24gKGl0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9p
bXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgKaW5kZXggM2JmYWI5YWQ1ZmQ1ODli
YWRkNTIzYjQxOWY4MThkMWYyZTgyMDdiMi4uYTJkYWIyNjAxMDJlMzdhYzQxZDQ1NWI5MWNkOGZj
MDEwOWEwMGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaApAQCAtMTEyLDYgKzExMiw3IEBAIGNsYXNzIFZQ
OUVuY29kZXJJbXBsIDogcHVibGljIFZQOUVuY29kZXIgewogICBHb2ZJbmZvVlA5IGdvZl87ICAv
LyBDb250YWlucyBlYWNoIGZyYW1lJ3MgdGVtcG9yYWwgaW5mb3JtYXRpb24gZm9yCiAgICAgICAg
ICAgICAgICAgICAgIC8vIG5vbi1mbGV4aWJsZSBtb2RlLgogICBib29sIGZvcmNlX2tleV9mcmFt
ZV87CisgIGJvb2wgZGlmZmVyZW50X2ZyYW1lcmF0ZXNfdXNlZF87CiAgIHNpemVfdCBwaWNzX3Np
bmNlX2tleV87CiAgIHVpbnQ4X3QgbnVtX3RlbXBvcmFsX2xheWVyc187CiAgIHVpbnQ4X3QgbnVt
X3NwYXRpYWxfbGF5ZXJzXzsgICAgICAgICAvLyBOdW1iZXIgb2YgY29uZmlndXJlZCBTTHMKQEAg
LTEyMyw2ICsxMjQsOSBAQCBjbGFzcyBWUDlFbmNvZGVySW1wbCA6IHB1YmxpYyBWUDlFbmNvZGVy
IHsKICAgY29uc3QgYm9vbCB0cnVzdGVkX3JhdGVfY29udHJvbGxlcl87CiAgIGNvbnN0IGJvb2wg
ZnVsbF9zdXBlcmZyYW1lX2Ryb3BfOwogICBib29sIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfOwor
ICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGN1cnJlbnRfYml0cmF0ZV9hbGxvY2F0aW9uXzsKKyAg
YWJzbDo6b3B0aW9uYWw8VmlkZW9CaXRyYXRlQWxsb2NhdGlvbj4gcmVxdWVzdGVkX2JpdHJhdGVf
YWxsb2NhdGlvbl87CisgIGJvb2wgc3NfaW5mb19uZWVkZWRfOwogCiAgIHN0ZDo6dmVjdG9yPEZy
YW1lcmF0ZUNvbnRyb2xsZXI+IGZyYW1lcmF0ZV9jb250cm9sbGVyXzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvZW5jb2RlZF9mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZW5jb2RlZF9mcmFtZS5oCmluZGV4IGM3ZWZk
NDAwNzI3Yjg2NGFmZGVlNDkwZDYyOWIxZWExNzQ3ZTk5YzYuLmNkZTBmZjRhN2Y1YjZlODdhYjJm
YjgzNmI0YjdiYzgyMzBiMTJkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2VuY29kZWRfZnJhbWUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9lbmNvZGVkX2ZyYW1lLmgKQEAgLTc4LDggKzc4LDExIEBAIGNsYXNzIFZDTUVu
Y29kZWRGcmFtZSA6IHByb3RlY3RlZCBFbmNvZGVkSW1hZ2UgewogICAvKioKICAgICogICBGcmFt
ZSBSVFAgdGltZXN0YW1wICg5MGtIeikKICAgICovCi0gIHVzaW5nIEVuY29kZWRJbWFnZTo6VGlt
ZXN0YW1wOworICB1c2luZyBFbmNvZGVkSW1hZ2U6OnNldF9zaXplOwogICB1c2luZyBFbmNvZGVk
SW1hZ2U6OlNldFRpbWVzdGFtcDsKKyAgdXNpbmcgRW5jb2RlZEltYWdlOjpzaXplOworICB1c2lu
ZyBFbmNvZGVkSW1hZ2U6OlRpbWVzdGFtcDsKKwogICAvKioKICAgICogICBHZXQgcmVuZGVyIHRp
bWUgaW4gbWlsbGlzZWNvbmRzCiAgICAqLwpAQCAtMTAwLDYgKzEwMyw3IEBAIGNsYXNzIFZDTUVu
Y29kZWRGcmFtZSA6IHByb3RlY3RlZCBFbmNvZGVkSW1hZ2UgewogICAgKiBHZXQgdmlkZW8gdGlt
aW5nCiAgICAqLwogICBFbmNvZGVkSW1hZ2U6OlRpbWluZyB2aWRlb190aW1pbmcoKSBjb25zdCB7
IHJldHVybiB0aW1pbmdfOyB9CisgIEVuY29kZWRJbWFnZTo6VGltaW5nKiB2aWRlb190aW1pbmdf
bXV0YWJsZSgpIHsgcmV0dXJuICZ0aW1pbmdfOyB9CiAgIC8qKgogICAgKiAgIFRydWUgaWYgdGhp
cyBmcmFtZSBpcyBjb21wbGV0ZSwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAqLwpAQCAtMTE5LDggKzEy
MywxMCBAQCBjbGFzcyBWQ01FbmNvZGVkRnJhbWUgOiBwcm90ZWN0ZWQgRW5jb2RlZEltYWdlIHsK
ICAgICogICB0aGUgb2JqZWN0LgogICAgKi8KICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIENv
ZGVjU3BlY2lmaWMoKSBjb25zdCB7IHJldHVybiAmX2NvZGVjU3BlY2lmaWNJbmZvOyB9CisgIHZv
aWQgU2V0Q29kZWNTcGVjaWZpYyhjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lm
aWMpIHsKKyAgICBfY29kZWNTcGVjaWZpY0luZm8gPSAqY29kZWNfc3BlY2lmaWM7CisgIH0KIAot
IHByb3RlY3RlZDoKICAgLyoqCiAgICAqIFZlcmlmaWVzIHRoYXQgY3VycmVudCBhbGxvY2F0ZWQg
YnVmZmVyIHNpemUgaXMgbGFyZ2VyIHRoYW4gb3IgZXF1YWwgdG8gdGhlCiAgICAqIGlucHV0IHNp
emUuCkBAIC0xMzEsNiArMTM3LDcgQEAgY2xhc3MgVkNNRW5jb2RlZEZyYW1lIDogcHJvdGVjdGVk
IEVuY29kZWRJbWFnZSB7CiAgICAqLwogICB2b2lkIFZlcmlmeUFuZEFsbG9jYXRlKHNpemVfdCBt
aW5pbXVtU2l6ZSk7CiAKKyBwcm90ZWN0ZWQ6CiAgIHZvaWQgUmVzZXQoKTsKIAogICB2b2lkIENv
cHlDb2RlY1NwZWNpZmljKGNvbnN0IFJUUFZpZGVvSGVhZGVyKiBoZWFkZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZnJhbWVfYnVmZmVyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MKaW5kZXgg
MDRmYmE4NGNhZjU1YjQ0N2MwNTdkYTkzZDA2ZTY1NDAxNmVjMWVjMy4uZTE1YjEzOTBlMjRhZmU3
NmM2NzkzY2I3MTAyMjkxMDZiYTBkNmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVy
Mi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmNjCkBAIC04MCwxMCArODAsMTAgQEAgRnJh
bWVCdWZmZXI6OlJldHVyblJlYXNvbiBGcmFtZUJ1ZmZlcjo6TmV4dEZyYW1lKAogCiAgICAgICB3
YWl0X21zID0gbWF4X3dhaXRfdGltZV9tczsKIAotICAgICAgLy8gTmVlZCB0byBob2xkIHxjcml0
X3wgaW4gb3JkZXIgdG8gdXNlIHxmcmFtZXNffCwgdGhlcmVmb3JlIHdlCisgICAgICAvLyBOZWVk
IHRvIGhvbGQgfGNyaXRffCBpbiBvcmRlciB0byBhY2Nlc3MgZnJhbWVzX3RvX2RlY29kZV8uIHRo
ZXJlZm9yZSB3ZQogICAgICAgLy8gc2V0IGl0IGhlcmUgaW4gdGhlIGxvb3AgaW5zdGVhZCBvZiBv
dXRzaWRlIHRoZSBsb29wIGluIG9yZGVyIHRvIG5vdAotICAgICAgLy8gYWNxdWlyZSB0aGUgbG9j
ayB1bm5lY2Vzc2VyaWx5LgotICAgICAgbmV4dF9mcmFtZV9pdF8gPSBmcmFtZXNfLmVuZCgpOwor
ICAgICAgLy8gYWNxdWlyZSB0aGUgbG9jayB1bm5lY2Vzc2FyaWx5LgorICAgICAgZnJhbWVzX3Rv
X2RlY29kZV8uY2xlYXIoKTsKIAogICAgICAgLy8gfGZyYW1lX2l0fCBwb2ludHMgdG8gdGhlIGZp
cnN0IGZyYW1lIGFmdGVyIHRoZQogICAgICAgLy8gfGxhc3RfZGVjb2RlZF9mcmFtZV9pdF98LgpA
QCAtMTIxLDcgKzEyMSw1MyBAQCBGcmFtZUJ1ZmZlcjo6UmV0dXJuUmVhc29uIEZyYW1lQnVmZmVy
OjpOZXh0RnJhbWUoCiAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBu
ZXh0X2ZyYW1lX2l0XyA9IGZyYW1lX2l0OworICAgICAgICAvLyBPbmx5IGV2ZXIgcmV0dXJuIGFs
bCBwYXJ0cyBvZiBhIHN1cGVyZnJhbWUuIFRoZXJlZm9yZSBza2lwIHRoaXMKKyAgICAgICAgLy8g
ZnJhbWUgaWYgaXQncyBub3QgYSBiZWdpbm5pbmcgb2YgYSBzdXBlcmZyYW1lLgorICAgICAgICBp
ZiAoZnJhbWUtPmludGVyX2xheWVyX3ByZWRpY3RlZCkgeworICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gR2F0aGVyIGFsbCByZW1haW5pbmcgZnJhbWVzIGZvciB0
aGUgc2FtZSBzdXBlcmZyYW1lLgorICAgICAgICBzdGQ6OnZlY3RvcjxGcmFtZU1hcDo6aXRlcmF0
b3I+IGN1cnJlbnRfc3VwZXJmcmFtZTsKKyAgICAgICAgY3VycmVudF9zdXBlcmZyYW1lLnB1c2hf
YmFjayhmcmFtZV9pdCk7CisgICAgICAgIGJvb2wgbGFzdF9sYXllcl9jb21wbGV0ZWQgPQorICAg
ICAgICAgICAgZnJhbWVfaXQtPnNlY29uZC5mcmFtZS0+aXNfbGFzdF9zcGF0aWFsX2xheWVyOwor
ICAgICAgICBGcmFtZU1hcDo6aXRlcmF0b3IgbmV4dF9mcmFtZV9pdCA9IGZyYW1lX2l0OworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICsrbmV4dF9mcmFtZV9pdDsKKyAgICAgICAg
ICBpZiAobmV4dF9mcmFtZV9pdCA9PSBmcmFtZXNfLmVuZCgpIHx8CisgICAgICAgICAgICAgIG5l
eHRfZnJhbWVfaXQtPmZpcnN0LnBpY3R1cmVfaWQgIT0gZnJhbWUtPmlkLnBpY3R1cmVfaWQgfHwK
KyAgICAgICAgICAgICAgIW5leHRfZnJhbWVfaXQtPnNlY29uZC5jb250aW51b3VzKSB7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5l
eHQgZnJhbWUgaGFzIHNvbWUgdW5kZWNvZGVkIHJlZmVyZW5jZXMgb3RoZXIgdGhhbgorICAgICAg
ICAgIC8vIHRoZSBwcmV2aW91cyBmcmFtZSBpbiB0aGUgc2FtZSBzdXBlcmZyYW1lLgorICAgICAg
ICAgIHNpemVfdCBudW1fYWxsb3dlZF91bmRlY29kZWRfcmVmcyA9CisgICAgICAgICAgICAgIChu
ZXh0X2ZyYW1lX2l0LT5zZWNvbmQuZnJhbWUtPmludGVyX2xheWVyX3ByZWRpY3RlZCkgPyAxIDog
MDsKKyAgICAgICAgICBpZiAobmV4dF9mcmFtZV9pdC0+c2Vjb25kLm51bV9taXNzaW5nX2RlY29k
YWJsZSA+CisgICAgICAgICAgICAgIG51bV9hbGxvd2VkX3VuZGVjb2RlZF9yZWZzKSB7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgLy8gQWxsIGZyYW1lcyBpbiB0
aGUgc3VwZXJmcmFtZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB0aW1lc3RhbXAuCisgICAgICAgICAg
aWYgKGZyYW1lLT5UaW1lc3RhbXAoKSAhPSBuZXh0X2ZyYW1lX2l0LT5zZWNvbmQuZnJhbWUtPlRp
bWVzdGFtcCgpKSB7CisgICAgICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAg
ICAgICAgPDwgIkZyYW1lcyBpbiBhIHNpbmdsZSBzdXBlcmZyYW1lIGhhdmUgZGlmZmVyZW50Igor
ICAgICAgICAgICAgICAgICAgICIgdGltZXN0YW1wcy4gU2tpcHBpbmcgdW5kZWNvZGFibGUgc3Vw
ZXJmcmFtZS4iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIGN1
cnJlbnRfc3VwZXJmcmFtZS5wdXNoX2JhY2sobmV4dF9mcmFtZV9pdCk7CisgICAgICAgICAgbGFz
dF9sYXllcl9jb21wbGV0ZWQgPQorICAgICAgICAgICAgICBuZXh0X2ZyYW1lX2l0LT5zZWNvbmQu
ZnJhbWUtPmlzX2xhc3Rfc3BhdGlhbF9sYXllcjsKKyAgICAgICAgfQorICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgY3VycmVudCBzdXBlcmZyYW1lIGlzIGNvbXBsZXRlLgorICAgICAgICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy8xMDA2NCk6IGNvbnNpZGVyIHJldHVybmluZyBhbGwgYXZhaWxhYmxl
IHRvCisgICAgICAgIC8vIGRlY29kZSBmcmFtZXMgZXZlbiBpZiB0aGUgc3VwZXJmcmFtZSBpcyBu
b3QgY29tcGxldGUgeWV0LgorICAgICAgICBpZiAoIWxhc3RfbGF5ZXJfY29tcGxldGVkKSB7Cisg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmcmFtZXNfdG9fZGVjb2Rl
XyA9IHN0ZDo6bW92ZShjdXJyZW50X3N1cGVyZnJhbWUpOworCiAgICAgICAgIGlmIChmcmFtZS0+
UmVuZGVyVGltZSgpID09IC0xKSB7CiAgICAgICAgICAgZnJhbWUtPlNldFJlbmRlclRpbWUoCiAg
ICAgICAgICAgICAgIHRpbWluZ18tPlJlbmRlclRpbWVNcyhmcmFtZS0+VGltZXN0YW1wKCksIG5v
d19tcykpOwpAQCAtMTQ3LDkgKzE5MywxMCBAQCBGcmFtZUJ1ZmZlcjo6UmV0dXJuUmVhc29uIEZy
YW1lQnVmZmVyOjpOZXh0RnJhbWUoCiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0
Xyk7CiAgICAgbm93X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKLSAgICBpZiAo
bmV4dF9mcmFtZV9pdF8gIT0gZnJhbWVzXy5lbmQoKSkgewotICAgICAgc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRGcmFtZT4gZnJhbWUgPQotICAgICAgICAgIHN0ZDo6bW92ZShuZXh0X2ZyYW1lX2l0
Xy0+c2Vjb25kLmZyYW1lKTsKKyAgICBzdGQ6OnZlY3RvcjxFbmNvZGVkRnJhbWUqPiBmcmFtZXNf
b3V0OworICAgIGZvciAoY29uc3QgRnJhbWVNYXA6Oml0ZXJhdG9yJiBmcmFtZV9pdCA6IGZyYW1l
c190b19kZWNvZGVfKSB7CisgICAgICBSVENfRENIRUNLKGZyYW1lX2l0ICE9IGZyYW1lc18uZW5k
KCkpOworICAgICAgRW5jb2RlZEZyYW1lKiBmcmFtZSA9IGZyYW1lX2l0LT5zZWNvbmQuZnJhbWUu
cmVsZWFzZSgpOwogCiAgICAgICBpZiAoIWZyYW1lLT5kZWxheWVkX2J5X3JldHJhbnNtaXNzaW9u
KCkpIHsKICAgICAgICAgaW50NjRfdCBmcmFtZV9kZWxheTsKQEAgLTE4MCwxNCArMjI3LDIyIEBA
IEZyYW1lQnVmZmVyOjpSZXR1cm5SZWFzb24gRnJhbWVCdWZmZXI6Ok5leHRGcmFtZSgKIAogICAg
ICAgVXBkYXRlSml0dGVyRGVsYXkoKTsKICAgICAgIFVwZGF0ZVRpbWluZ0ZyYW1lSW5mbygpOwot
ICAgICAgUHJvcGFnYXRlRGVjb2RhYmlsaXR5KG5leHRfZnJhbWVfaXRfLT5zZWNvbmQpOworICAg
ICAgUHJvcGFnYXRlRGVjb2RhYmlsaXR5KGZyYW1lX2l0LT5zZWNvbmQpOwogCi0gICAgICBBZHZh
bmNlTGFzdERlY29kZWRGcmFtZShuZXh0X2ZyYW1lX2l0Xyk7CisgICAgICBBZHZhbmNlTGFzdERl
Y29kZWRGcmFtZShmcmFtZV9pdCk7CiAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1w
XyA9IGZyYW1lLT5UaW1lc3RhbXAoKTsKLSAgICAgICpmcmFtZV9vdXQgPSBzdGQ6Om1vdmUoZnJh
bWUpOworICAgICAgZnJhbWVzX291dC5wdXNoX2JhY2soZnJhbWUpOworICAgIH0KKworICAgIGlm
ICghZnJhbWVzX291dC5lbXB0eSgpKSB7CisgICAgICBpZiAoZnJhbWVzX291dC5zaXplKCkgPT0g
MSkgeworICAgICAgICBmcmFtZV9vdXQtPnJlc2V0KGZyYW1lc19vdXRbMF0pOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgZnJhbWVfb3V0LT5yZXNldChDb21iaW5lQW5kRGVsZXRlRnJhbWVzKGZy
YW1lc19vdXQpKTsKKyAgICAgIH0KICAgICAgIHJldHVybiBrRnJhbWVGb3VuZDsKICAgICB9Ci0g
IH0KKyAgfSAgLy8gcnRjOjpDcml0c2NvcGUgbG9jaygmY3JpdF8pCiAKICAgaWYgKGxhdGVzdF9y
ZXR1cm5fdGltZV9tcyAtIG5vd19tcyA+IDApIHsKICAgICAvLyBJZiB8bmV4dF9mcmFtZV9pdF8g
PT0gZnJhbWVzXy5lbmQoKXwgYW5kIHRoZXJlIGlzIHN0aWxsIHRpbWUgbGVmdCwgaXQKQEAgLTE5
Niw3ICsyNTEsNiBAQCBGcmFtZUJ1ZmZlcjo6UmV0dXJuUmVhc29uIEZyYW1lQnVmZmVyOjpOZXh0
RnJhbWUoCiAgICAgLy8gcmVtYWluaW5nIHRpbWUgYW5kIHRoZW4gcmV0dXJuLgogICAgIHJldHVy
biBOZXh0RnJhbWUobGF0ZXN0X3JldHVybl90aW1lX21zIC0gbm93X21zLCBmcmFtZV9vdXQpOwog
ICB9Ci0KICAgcmV0dXJuIGtUaW1lb3V0OwogfQogCkBAIC01OTksMTEgKzY1MywzOCBAQCB2b2lk
IEZyYW1lQnVmZmVyOjpDbGVhckZyYW1lc0FuZEhpc3RvcnkoKSB7CiAgIGZyYW1lc18uY2xlYXIo
KTsKICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyA9IGZyYW1lc18uZW5kKCk7CiAgIGxhc3RfY29u
dGludW91c19mcmFtZV9pdF8gPSBmcmFtZXNfLmVuZCgpOwotICBuZXh0X2ZyYW1lX2l0XyA9IGZy
YW1lc18uZW5kKCk7CisgIGZyYW1lc190b19kZWNvZGVfLmNsZWFyKCk7CiAgIG51bV9mcmFtZXNf
aGlzdG9yeV8gPSAwOwogICBudW1fZnJhbWVzX2J1ZmZlcmVkXyA9IDA7CiB9CiAKK0VuY29kZWRG
cmFtZSogRnJhbWVCdWZmZXI6OkNvbWJpbmVBbmREZWxldGVGcmFtZXMoCisgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8RW5jb2RlZEZyYW1lKj4mIGZyYW1lcykgY29uc3QgeworICBSVENfRENIRUNLKCFm
cmFtZXMuZW1wdHkoKSk7CisgIEVuY29kZWRGcmFtZSogZnJhbWUgPSBmcmFtZXNbMF07CisgIHNp
emVfdCB0b3RhbF9sZW5ndGggPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lcy5z
aXplKCk7ICsraSkgeworICAgIHRvdGFsX2xlbmd0aCArPSBmcmFtZXNbaV0tPnNpemUoKTsKKyAg
fQorICBmcmFtZS0+VmVyaWZ5QW5kQWxsb2NhdGUodG90YWxfbGVuZ3RoKTsKKyAgdWludDhfdCog
YnVmZmVyID0gZnJhbWUtPk11dGFibGVCdWZmZXIoKTsKKyAgLy8gQXBwZW5kIGFsbCByZW1haW5p
bmcgZnJhbWVzIHRvIHRoZSBmaXJzdCBvbmUuCisgIHNpemVfdCB1c2VkX2J1ZmZlcl9ieXRlcyA9
IGZyYW1lLT5zaXplKCk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZnJhbWVzLnNpemUoKTsg
KytpKSB7CisgICAgRW5jb2RlZEZyYW1lKiBmcmFtZV90b19hcHBlbmQgPSBmcmFtZXNbaV07Cisg
ICAgbWVtY3B5KGJ1ZmZlciArIHVzZWRfYnVmZmVyX2J5dGVzLCBmcmFtZV90b19hcHBlbmQtPkJ1
ZmZlcigpLAorICAgICAgICAgICBmcmFtZV90b19hcHBlbmQtPnNpemUoKSk7CisgICAgdXNlZF9i
dWZmZXJfYnl0ZXMgKz0gZnJhbWVfdG9fYXBwZW5kLT5zaXplKCk7CisgICAgZnJhbWUtPnZpZGVv
X3RpbWluZ19tdXRhYmxlKCktPm5ldHdvcmsyX3RpbWVzdGFtcF9tcyA9CisgICAgICAgIGZyYW1l
X3RvX2FwcGVuZC0+dmlkZW9fdGltaW5nKCkubmV0d29yazJfdGltZXN0YW1wX21zOworICAgIGZy
YW1lLT52aWRlb190aW1pbmdfbXV0YWJsZSgpLT5yZWNlaXZlX2ZpbmlzaF9tcyA9CisgICAgICAg
IGZyYW1lX3RvX2FwcGVuZC0+dmlkZW9fdGltaW5nKCkucmVjZWl2ZV9maW5pc2hfbXM7CisgICAg
ZGVsZXRlIGZyYW1lX3RvX2FwcGVuZDsKKyAgfQorICBmcmFtZS0+c2V0X3NpemUodG90YWxfbGVu
Z3RoKTsKKyAgcmV0dXJuIGZyYW1lOworfQorCiBGcmFtZUJ1ZmZlcjo6RnJhbWVJbmZvOjpGcmFt
ZUluZm8oKSA9IGRlZmF1bHQ7CiBGcmFtZUJ1ZmZlcjo6RnJhbWVJbmZvOjpGcmFtZUluZm8oRnJh
bWVJbmZvJiYpID0gZGVmYXVsdDsKIEZyYW1lQnVmZmVyOjpGcmFtZUluZm86On5GcmFtZUluZm8o
KSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9m
cmFtZV9idWZmZXIyLmgKaW5kZXggZGM1ZTVhMmUzNzJmZGMxMGFjODBhYzZlZTcxZjc2OWM4ZDg2
Yzk4My4uYzMxMWJjOGYyZjFjN2U4OTc3NTcyMzczNzJiNGY4ODNjYTAxMmE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuaApAQCAt
MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vZW5j
b2RlZF9mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlk
ZW9fY29kaW5nX2RlZmluZXMuaCIKQEAgLTE1Niw2ICsxNTcsMTMgQEAgY2xhc3MgRnJhbWVCdWZm
ZXIgewogICBib29sIEhhc0JhZFJlbmRlclRpbWluZyhjb25zdCBFbmNvZGVkRnJhbWUmIGZyYW1l
LCBpbnQ2NF90IG5vd19tcykKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3Jp
dF8pOwogCisgIC8vIFRoZSBjbGVhbmVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGhhdmUgdGhlIE5l
eHRGcmFtZSBmdW5jdGlvbiByZXR1cm4gYQorICAvLyB2ZWN0b3Igb2YgZnJhbWVzLCBidXQgdW50
aWwgdGhlIGRlY29kaW5nIHBpcGVsaW5lIGNhbiBzdXBwb3J0IGRlY29kaW5nCisgIC8vIG11bHRp
cGxlIGZyYW1lcyBhdCB0aGUgc2FtZSB0aW1lIHdlIGNvbWJpbmUgYWxsIGZyYW1lcyB0byBvbmUg
ZnJhbWUgYW5kCisgIC8vIHJldHVybiBpdC4gU2VlIGJ1Z3Mud2VicnRjLm9yZy8xMDA2NAorICBF
bmNvZGVkRnJhbWUqIENvbWJpbmVBbmREZWxldGVGcmFtZXMoCisgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxFbmNvZGVkRnJhbWUqPiYgZnJhbWVzKSBjb25zdDsKKwogICBGcmFtZU1hcCBmcmFtZXNf
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0XzsK
QEAgLTE2Nyw3ICsxNzUsNyBAQCBjbGFzcyBGcmFtZUJ1ZmZlciB7CiAgIGFic2w6Om9wdGlvbmFs
PHVpbnQzMl90PiBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyBSVENfR1VBUkRFRF9CWShj
cml0Xyk7CiAgIEZyYW1lTWFwOjppdGVyYXRvciBsYXN0X2RlY29kZWRfZnJhbWVfaXRfIFJUQ19H
VUFSREVEX0JZKGNyaXRfKTsKICAgRnJhbWVNYXA6Oml0ZXJhdG9yIGxhc3RfY29udGludW91c19m
cmFtZV9pdF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwotICBGcmFtZU1hcDo6aXRlcmF0b3IgbmV4
dF9mcmFtZV9pdF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOworICBzdGQ6OnZlY3RvcjxGcmFtZU1h
cDo6aXRlcmF0b3I+IGZyYW1lc190b19kZWNvZGVfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAg
aW50IG51bV9mcmFtZXNfaGlzdG9yeV8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBpbnQgbnVt
X2ZyYW1lc19idWZmZXJlZF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBib29sIHN0b3BwZWRf
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjCmluZGV4IGUxMGY3
ODUyNzk1N2U3N2MwNzVhMGYwODI3YjM3ZDZkN2JmNGNhZjUuLmM4MjU4ZTQ4MGU4NjgxZDMyZDgz
ZDVmMDNhNzc0NDc2ZWY0NWVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMl91bml0dGVzdC5jYwpAQCAtMTI2LDYg
KzEyNiw3IEBAIGNsYXNzIFRlc3RGcmFtZUJ1ZmZlcjIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0ZwczEgPSAxMDAwOwogICBzdGF0aWMgY29uc3Rl
eHByIGludCBrRnBzMTAgPSBrRnBzMSAvIDEwOwogICBzdGF0aWMgY29uc3RleHByIGludCBrRnBz
MjAgPSBrRnBzMSAvIDIwOworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrRnJhbWVTaXplID0g
MTA7CiAKICAgVGVzdEZyYW1lQnVmZmVyMigpCiAgICAgICA6IGNsb2NrXygwKSwKQEAgLTE1Miw2
ICsxNTMsNyBAQCBjbGFzcyBUZXN0RnJhbWVCdWZmZXIyIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiAgICAgICAgICAgICAgICAgICB1aW50OF90IHNwYXRpYWxfbGF5ZXIsCiAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHRzX21zLAogICAgICAgICAgICAgICAgICAgYm9vbCBpbnRlcl9sYXll
cl9wcmVkaWN0ZWQsCisgICAgICAgICAgICAgICAgICBib29sIGxhc3Rfc3BhdGlhbF9sYXllciwK
ICAgICAgICAgICAgICAgICAgIFQuLi4gcmVmcykgewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
Li4uKHJlZnMpIDw9IGtNYXhSZWZlcmVuY2VzLAogICAgICAgICAgICAgICAgICAgIlRvIG1hbnkg
cmVmZXJlbmNlcyBzcGVjaWZpZWQgZm9yIEVuY29kZWRGcmFtZS4iKTsKQEAgLTE2NCw2ICsxNjYs
MTAgQEAgY2xhc3MgVGVzdEZyYW1lQnVmZmVyMiA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgIGZyYW1lLT5TZXRUaW1lc3RhbXAodHNfbXMgKiA5MCk7CiAgICAgZnJhbWUtPm51bV9yZWZl
cmVuY2VzID0gcmVmZXJlbmNlcy5zaXplKCk7CiAgICAgZnJhbWUtPmludGVyX2xheWVyX3ByZWRp
Y3RlZCA9IGludGVyX2xheWVyX3ByZWRpY3RlZDsKKyAgICBmcmFtZS0+aXNfbGFzdF9zcGF0aWFs
X2xheWVyID0gbGFzdF9zcGF0aWFsX2xheWVyOworICAgIC8vIEFkZCBzb21lIGRhdGEgdG8gYnVm
ZmVyLgorICAgIGZyYW1lLT5WZXJpZnlBbmRBbGxvY2F0ZShrRnJhbWVTaXplKTsKKyAgICBmcmFt
ZS0+U2V0U2l6ZShrRnJhbWVTaXplKTsKICAgICBmb3IgKHNpemVfdCByID0gMDsgciA8IHJlZmVy
ZW5jZXMuc2l6ZSgpOyArK3IpCiAgICAgICBmcmFtZS0+cmVmZXJlbmNlc1tyXSA9IHJlZmVyZW5j
ZXNbcl07CiAKQEAgLTE5Niw2ICsyMDIsMTMgQEAgY2xhc3MgVGVzdEZyYW1lQnVmZmVyMiA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIEFTU0VSVF9FUShzcGF0aWFsX2xheWVyLCBmcmFt
ZXNfW2luZGV4XS0+aWQuc3BhdGlhbF9sYXllcik7CiAgIH0KIAorICB2b2lkIENoZWNrRnJhbWVT
aXplKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUpIHsKKyAgICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZjcml0Xyk7CisgICAgQVNTRVJUX0xUKGluZGV4LCBmcmFtZXNfLnNpemUoKSk7CisgICAgQVNT
RVJUX1RSVUUoZnJhbWVzX1tpbmRleF0pOworICAgIEFTU0VSVF9FUShmcmFtZXNfW2luZGV4XS0+
c2l6ZSgpLCBzaXplKTsKKyAgfQorCiAgIHZvaWQgQ2hlY2tOb0ZyYW1lKHNpemVfdCBpbmRleCkg
ewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKICAgICBBU1NFUlRfTFQoaW5kZXgs
IGZyYW1lc18uc2l6ZSgpKTsKQEAgLTI0OCw3ICsyNjEsNyBAQCBURVNUX0YoVGVzdEZyYW1lQnVm
ZmVyMiwgV2FpdEZvckZyYW1lKSB7CiAgIHVpbnQzMl90IHRzID0gUmFuZCgpOwogCiAgIEV4dHJh
Y3RGcmFtZSg1MCk7Ci0gIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNlKTsKKyAgSW5zZXJ0
RnJhbWUocGlkLCAwLCB0cywgZmFsc2UsIHRydWUpOwogICBDaGVja0ZyYW1lKDAsIHBpZCwgMCk7
CiB9CiAKQEAgLTI1NiwxMyArMjY5LDExIEBAIFRFU1RfRihUZXN0RnJhbWVCdWZmZXIyLCBPbmVT
dXBlckZyYW1lKSB7CiAgIHVpbnQxNl90IHBpZCA9IFJhbmQoKTsKICAgdWludDMyX3QgdHMgPSBS
YW5kKCk7CiAKLSAgSW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UpOwotICBFeHRyYWN0RnJh
bWUoKTsKLSAgSW5zZXJ0RnJhbWUocGlkLCAxLCB0cywgdHJ1ZSk7CisgIEluc2VydEZyYW1lKHBp
ZCwgMCwgdHMsIGZhbHNlLCBmYWxzZSk7CisgIEluc2VydEZyYW1lKHBpZCwgMSwgdHMsIHRydWUs
IHRydWUpOwogICBFeHRyYWN0RnJhbWUoKTsKIAogICBDaGVja0ZyYW1lKDAsIHBpZCwgMCk7Ci0g
IENoZWNrRnJhbWUoMSwgcGlkLCAxKTsKIH0KIAogVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIFNl
dFBsYXlvdXREZWxheSkgewpAQCAtMjk1LDggKzMwNiw4IEBAIFRFU1RfRihUZXN0RnJhbWVCdWZm
ZXIyLCBESVNBQkxFRF9PbmVVbm9yZGVyZWRTdXBlckZyYW1lKSB7CiAgIHVpbnQzMl90IHRzID0g
UmFuZCgpOwogCiAgIEV4dHJhY3RGcmFtZSg1MCk7Ci0gIEluc2VydEZyYW1lKHBpZCwgMSwgdHMs
IHRydWUpOwotICBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSk7CisgIEluc2VydEZyYW1l
KHBpZCwgMSwgdHMsIHRydWUsIHRydWUpOworICBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxz
ZSwgZmFsc2UpOwogICBFeHRyYWN0RnJhbWUoKTsKIAogICBDaGVja0ZyYW1lKDAsIHBpZCwgMCk7
CkBAIC0zMDcsMTQgKzMxOCwxNCBAQCBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwgRElTQUJMRURf
T25lTGF5ZXJTdHJlYW1SZW9yZGVyZWQpIHsKICAgdWludDE2X3QgcGlkID0gUmFuZCgpOwogICB1
aW50MzJfdCB0cyA9IFJhbmQoKTsKIAotICBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSk7
CisgIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNlLCB0cnVlKTsKICAgRXh0cmFjdEZyYW1l
KCk7CiAgIENoZWNrRnJhbWUoMCwgcGlkLCAwKTsKICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMDsg
aSArPSAyKSB7CiAgICAgRXh0cmFjdEZyYW1lKDUwKTsKLSAgICBJbnNlcnRGcmFtZShwaWQgKyBp
ICsgMSwgMCwgdHMgKyAoaSArIDEpICoga0ZwczEwLCBmYWxzZSwgcGlkICsgaSk7CisgICAgSW5z
ZXJ0RnJhbWUocGlkICsgaSArIDEsIDAsIHRzICsgKGkgKyAxKSAqIGtGcHMxMCwgZmFsc2UsIHRy
dWUsIHBpZCArIGkpOwogICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrRnBzMTAp
OwotICAgIEluc2VydEZyYW1lKHBpZCArIGksIDAsIHRzICsgaSAqIGtGcHMxMCwgZmFsc2UsIHBp
ZCArIGkgLSAxKTsKKyAgICBJbnNlcnRGcmFtZShwaWQgKyBpLCAwLCB0cyArIGkgKiBrRnBzMTAs
IGZhbHNlLCB0cnVlLCBwaWQgKyBpIC0gMSk7CiAgICAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlz
ZWNvbmRzKGtGcHMxMCk7CiAgICAgRXh0cmFjdEZyYW1lKCk7CiAgICAgQ2hlY2tGcmFtZShpLCBw
aWQgKyBpLCAwKTsKQEAgLTMzMiw5ICszNDMsOSBAQCBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwg
TWlzc2luZ0ZyYW1lKSB7CiAgIHVpbnQxNl90IHBpZCA9IFJhbmQoKTsKICAgdWludDMyX3QgdHMg
PSBSYW5kKCk7CiAKLSAgSW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UpOwotICBJbnNlcnRG
cmFtZShwaWQgKyAyLCAwLCB0cywgZmFsc2UsIHBpZCk7Ci0gIEluc2VydEZyYW1lKHBpZCArIDMs
IDAsIHRzLCBmYWxzZSwgcGlkICsgMSwgcGlkICsgMik7CisgIEluc2VydEZyYW1lKHBpZCwgMCwg
dHMsIGZhbHNlLCB0cnVlKTsKKyAgSW5zZXJ0RnJhbWUocGlkICsgMiwgMCwgdHMsIGZhbHNlLCB0
cnVlLCBwaWQpOworICBJbnNlcnRGcmFtZShwaWQgKyAzLCAwLCB0cywgZmFsc2UsIHRydWUsIHBp
ZCArIDEsIHBpZCArIDIpOwogICBFeHRyYWN0RnJhbWUoKTsKICAgRXh0cmFjdEZyYW1lKCk7CiAg
IEV4dHJhY3RGcmFtZSgpOwpAQCAtMzQ4LDExICszNTksMTEgQEAgVEVTVF9GKFRlc3RGcmFtZUJ1
ZmZlcjIsIE9uZUxheWVyU3RyZWFtKSB7CiAgIHVpbnQxNl90IHBpZCA9IFJhbmQoKTsKICAgdWlu
dDMyX3QgdHMgPSBSYW5kKCk7CiAKLSAgSW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UpOwor
ICBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSwgdHJ1ZSk7CiAgIEV4dHJhY3RGcmFtZSgp
OwogICBDaGVja0ZyYW1lKDAsIHBpZCwgMCk7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwgMTA7ICsr
aSkgewotICAgIEluc2VydEZyYW1lKHBpZCArIGksIDAsIHRzICsgaSAqIGtGcHMxMCwgZmFsc2Us
IHBpZCArIGkgLSAxKTsKKyAgICBJbnNlcnRGcmFtZShwaWQgKyBpLCAwLCB0cyArIGkgKiBrRnBz
MTAsIGZhbHNlLCB0cnVlLCBwaWQgKyBpIC0gMSk7CiAgICAgRXh0cmFjdEZyYW1lKCk7CiAgICAg
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtGcHMxMCk7CiAgICAgQ2hlY2tGcmFtZShp
LCBwaWQgKyBpLCAwKTsKQEAgLTM2MywxMiArMzc0LDEzIEBAIFRFU1RfRihUZXN0RnJhbWVCdWZm
ZXIyLCBEcm9wVGVtcG9yYWxMYXllclNsb3dEZWNvZGVyKSB7CiAgIHVpbnQxNl90IHBpZCA9IFJh
bmQoKTsKICAgdWludDMyX3QgdHMgPSBSYW5kKCk7CiAKLSAgSW5zZXJ0RnJhbWUocGlkLCAwLCB0
cywgZmFsc2UpOwotICBJbnNlcnRGcmFtZShwaWQgKyAxLCAwLCB0cyArIGtGcHMyMCwgZmFsc2Us
IHBpZCk7CisgIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNlLCB0cnVlKTsKKyAgSW5zZXJ0
RnJhbWUocGlkICsgMSwgMCwgdHMgKyBrRnBzMjAsIGZhbHNlLCB0cnVlLCBwaWQpOwogICBmb3Ig
KGludCBpID0gMjsgaSA8IDEwOyBpICs9IDIpIHsKICAgICB1aW50MzJfdCB0c190bDAgPSB0cyAr
IGkgLyAyICoga0ZwczEwOwotICAgIEluc2VydEZyYW1lKHBpZCArIGksIDAsIHRzX3RsMCwgZmFs
c2UsIHBpZCArIGkgLSAyKTsKLSAgICBJbnNlcnRGcmFtZShwaWQgKyBpICsgMSwgMCwgdHNfdGww
ICsga0ZwczIwLCBmYWxzZSwgcGlkICsgaSwgcGlkICsgaSAtIDEpOworICAgIEluc2VydEZyYW1l
KHBpZCArIGksIDAsIHRzX3RsMCwgZmFsc2UsIHRydWUsIHBpZCArIGkgLSAyKTsKKyAgICBJbnNl
cnRGcmFtZShwaWQgKyBpICsgMSwgMCwgdHNfdGwwICsga0ZwczIwLCBmYWxzZSwgdHJ1ZSwgcGlk
ICsgaSwKKyAgICAgICAgICAgICAgICBwaWQgKyBpIC0gMSk7CiAgIH0KIAogICBmb3IgKGludCBp
ID0gMDsgaSA8IDEwOyArK2kpIHsKQEAgLTM4OCw0OSArNDAwLDE1IEBAIFRFU1RfRihUZXN0RnJh
bWVCdWZmZXIyLCBEcm9wVGVtcG9yYWxMYXllclNsb3dEZWNvZGVyKSB7CiAgIENoZWNrTm9GcmFt
ZSg5KTsKIH0KIAotVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIERyb3BTcGF0aWFsTGF5ZXJTbG93
RGVjb2RlcikgewotICB1aW50MTZfdCBwaWQgPSBSYW5kKCk7Ci0gIHVpbnQzMl90IHRzID0gUmFu
ZCgpOwotCi0gIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNlKTsKLSAgSW5zZXJ0RnJhbWUo
cGlkLCAxLCB0cywgZmFsc2UpOwotICBmb3IgKGludCBpID0gMTsgaSA8IDY7ICsraSkgewotICAg
IHVpbnQzMl90IHRzX3RsMCA9IHRzICsgaSAqIGtGcHMxMDsKLSAgICBJbnNlcnRGcmFtZShwaWQg
KyBpLCAwLCB0c190bDAsIGZhbHNlLCBwaWQgKyBpIC0gMSk7Ci0gICAgSW5zZXJ0RnJhbWUocGlk
ICsgaSwgMSwgdHNfdGwwLCBmYWxzZSwgcGlkICsgaSAtIDEpOwotICB9Ci0KLSAgRXh0cmFjdEZy
YW1lKCk7Ci0gIEV4dHJhY3RGcmFtZSgpOwotICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoNTcpOwotICBmb3IgKGludCBpID0gMjsgaSA8IDEyOyArK2kpIHsKLSAgICBFeHRyYWN0RnJh
bWUoKTsKLSAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoNTcpOwotICB9Ci0KLSAg
Q2hlY2tGcmFtZSgwLCBwaWQsIDApOwotICBDaGVja0ZyYW1lKDEsIHBpZCwgMSk7Ci0gIENoZWNr
RnJhbWUoMiwgcGlkICsgMSwgMCk7Ci0gIENoZWNrRnJhbWUoMywgcGlkICsgMSwgMSk7Ci0gIENo
ZWNrRnJhbWUoNCwgcGlkICsgMiwgMCk7Ci0gIENoZWNrRnJhbWUoNSwgcGlkICsgMiwgMSk7Ci0g
IENoZWNrRnJhbWUoNiwgcGlkICsgMywgMCk7Ci0gIENoZWNrRnJhbWUoNywgcGlkICsgNCwgMCk7
Ci0gIENoZWNrRnJhbWUoOCwgcGlkICsgNSwgMCk7Ci0gIENoZWNrTm9GcmFtZSg5KTsKLSAgQ2hl
Y2tOb0ZyYW1lKDEwKTsKLSAgQ2hlY2tOb0ZyYW1lKDExKTsKLX0KLQogVEVTVF9GKFRlc3RGcmFt
ZUJ1ZmZlcjIsIEluc2VydExhdGVGcmFtZSkgewogICB1aW50MTZfdCBwaWQgPSBSYW5kKCk7CiAg
IHVpbnQzMl90IHRzID0gUmFuZCgpOwogCi0gIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNl
KTsKKyAgSW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UsIHRydWUpOwogICBFeHRyYWN0RnJh
bWUoKTsKLSAgSW5zZXJ0RnJhbWUocGlkICsgMiwgMCwgdHMsIGZhbHNlKTsKKyAgSW5zZXJ0RnJh
bWUocGlkICsgMiwgMCwgdHMsIGZhbHNlLCB0cnVlKTsKICAgRXh0cmFjdEZyYW1lKCk7Ci0gIElu
c2VydEZyYW1lKHBpZCArIDEsIDAsIHRzLCBmYWxzZSwgcGlkKTsKKyAgSW5zZXJ0RnJhbWUocGlk
ICsgMSwgMCwgdHMsIGZhbHNlLCB0cnVlLCBwaWQpOwogICBFeHRyYWN0RnJhbWUoKTsKIAogICBD
aGVja0ZyYW1lKDAsIHBpZCwgMCk7CkBAIC00NDMsMTIgKzQyMSwxMiBAQCBURVNUX0YoVGVzdEZy
YW1lQnVmZmVyMiwgUHJvdGVjdGlvbk1vZGUpIHsKICAgdWludDMyX3QgdHMgPSBSYW5kKCk7CiAK
ICAgRVhQRUNUX0NBTEwoaml0dGVyX2VzdGltYXRvcl8sIEdldEppdHRlckVzdGltYXRlKDEuMCkp
OwotICBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSk7CisgIEluc2VydEZyYW1lKHBpZCwg
MCwgdHMsIGZhbHNlLCB0cnVlKTsKICAgRXh0cmFjdEZyYW1lKCk7CiAKICAgYnVmZmVyXy0+U2V0
UHJvdGVjdGlvbk1vZGUoa1Byb3RlY3Rpb25OYWNrRkVDKTsKICAgRVhQRUNUX0NBTEwoaml0dGVy
X2VzdGltYXRvcl8sIEdldEppdHRlckVzdGltYXRlKDAuMCkpOwotICBJbnNlcnRGcmFtZShwaWQg
KyAxLCAwLCB0cywgZmFsc2UpOworICBJbnNlcnRGcmFtZShwaWQgKyAxLCAwLCB0cywgZmFsc2Us
IHRydWUpOwogICBFeHRyYWN0RnJhbWUoKTsKIH0KIApAQCAtNDU2LDQ1ICs0MzQsNDUgQEAgVEVT
VF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIE5vQ29udGludW91c0ZyYW1lKSB7CiAgIHVpbnQxNl90IHBp
ZCA9IFJhbmQoKTsKICAgdWludDMyX3QgdHMgPSBSYW5kKCk7CiAKLSAgRVhQRUNUX0VRKC0xLCBJ
bnNlcnRGcmFtZShwaWQgKyAxLCAwLCB0cywgZmFsc2UsIHBpZCkpOworICBFWFBFQ1RfRVEoLTEs
IEluc2VydEZyYW1lKHBpZCArIDEsIDAsIHRzLCBmYWxzZSwgdHJ1ZSwgcGlkKSk7CiB9CiAKIFRF
U1RfRihUZXN0RnJhbWVCdWZmZXIyLCBMYXN0Q29udGludW91c0ZyYW1lU2luZ2xlTGF5ZXIpIHsK
ICAgdWludDE2X3QgcGlkID0gUmFuZCgpOwogICB1aW50MzJfdCB0cyA9IFJhbmQoKTsKIAotICBF
WFBFQ1RfRVEocGlkLCBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSkpOwotICBFWFBFQ1Rf
RVEocGlkLCBJbnNlcnRGcmFtZShwaWQgKyAyLCAwLCB0cywgZmFsc2UsIHBpZCArIDEpKTsKLSAg
RVhQRUNUX0VRKHBpZCArIDIsIEluc2VydEZyYW1lKHBpZCArIDEsIDAsIHRzLCBmYWxzZSwgcGlk
KSk7Ci0gIEVYUEVDVF9FUShwaWQgKyAyLCBJbnNlcnRGcmFtZShwaWQgKyA0LCAwLCB0cywgZmFs
c2UsIHBpZCArIDMpKTsKLSAgRVhQRUNUX0VRKHBpZCArIDUsIEluc2VydEZyYW1lKHBpZCArIDUs
IDAsIHRzLCBmYWxzZSkpOworICBFWFBFQ1RfRVEocGlkLCBJbnNlcnRGcmFtZShwaWQsIDAsIHRz
LCBmYWxzZSwgdHJ1ZSkpOworICBFWFBFQ1RfRVEocGlkLCBJbnNlcnRGcmFtZShwaWQgKyAyLCAw
LCB0cywgZmFsc2UsIHRydWUsIHBpZCArIDEpKTsKKyAgRVhQRUNUX0VRKHBpZCArIDIsIEluc2Vy
dEZyYW1lKHBpZCArIDEsIDAsIHRzLCBmYWxzZSwgdHJ1ZSwgcGlkKSk7CisgIEVYUEVDVF9FUShw
aWQgKyAyLCBJbnNlcnRGcmFtZShwaWQgKyA0LCAwLCB0cywgZmFsc2UsIHRydWUsIHBpZCArIDMp
KTsKKyAgRVhQRUNUX0VRKHBpZCArIDUsIEluc2VydEZyYW1lKHBpZCArIDUsIDAsIHRzLCBmYWxz
ZSwgdHJ1ZSkpOwogfQogCiBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwgTGFzdENvbnRpbnVvdXNG
cmFtZVR3b0xheWVycykgewogICB1aW50MTZfdCBwaWQgPSBSYW5kKCk7CiAgIHVpbnQzMl90IHRz
ID0gUmFuZCgpOwogCi0gIEVYUEVDVF9FUShwaWQsIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZh
bHNlKSk7Ci0gIEVYUEVDVF9FUShwaWQsIEluc2VydEZyYW1lKHBpZCwgMSwgdHMsIHRydWUpKTsK
LSAgRVhQRUNUX0VRKHBpZCwgSW5zZXJ0RnJhbWUocGlkICsgMSwgMSwgdHMsIHRydWUsIHBpZCkp
OwotICBFWFBFQ1RfRVEocGlkLCBJbnNlcnRGcmFtZShwaWQgKyAyLCAwLCB0cywgZmFsc2UsIHBp
ZCArIDEpKTsKLSAgRVhQRUNUX0VRKHBpZCwgSW5zZXJ0RnJhbWUocGlkICsgMiwgMSwgdHMsIHRy
dWUsIHBpZCArIDEpKTsKLSAgRVhQRUNUX0VRKHBpZCwgSW5zZXJ0RnJhbWUocGlkICsgMywgMCwg
dHMsIGZhbHNlLCBwaWQgKyAyKSk7Ci0gIEVYUEVDVF9FUShwaWQgKyAzLCBJbnNlcnRGcmFtZShw
aWQgKyAxLCAwLCB0cywgZmFsc2UsIHBpZCkpOwotICBFWFBFQ1RfRVEocGlkICsgMywgSW5zZXJ0
RnJhbWUocGlkICsgMywgMSwgdHMsIHRydWUsIHBpZCArIDIpKTsKKyAgRVhQRUNUX0VRKHBpZCwg
SW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UsIGZhbHNlKSk7CisgIEVYUEVDVF9FUShwaWQs
IEluc2VydEZyYW1lKHBpZCwgMSwgdHMsIHRydWUsIHRydWUpKTsKKyAgRVhQRUNUX0VRKHBpZCwg
SW5zZXJ0RnJhbWUocGlkICsgMSwgMSwgdHMsIHRydWUsIHRydWUsIHBpZCkpOworICBFWFBFQ1Rf
RVEocGlkLCBJbnNlcnRGcmFtZShwaWQgKyAyLCAwLCB0cywgZmFsc2UsIGZhbHNlLCBwaWQgKyAx
KSk7CisgIEVYUEVDVF9FUShwaWQsIEluc2VydEZyYW1lKHBpZCArIDIsIDEsIHRzLCB0cnVlLCB0
cnVlLCBwaWQgKyAxKSk7CisgIEVYUEVDVF9FUShwaWQsIEluc2VydEZyYW1lKHBpZCArIDMsIDAs
IHRzLCBmYWxzZSwgZmFsc2UsIHBpZCArIDIpKTsKKyAgRVhQRUNUX0VRKHBpZCArIDMsIEluc2Vy
dEZyYW1lKHBpZCArIDEsIDAsIHRzLCBmYWxzZSwgZmFsc2UsIHBpZCkpOworICBFWFBFQ1RfRVEo
cGlkICsgMywgSW5zZXJ0RnJhbWUocGlkICsgMywgMSwgdHMsIHRydWUsIHRydWUsIHBpZCArIDIp
KTsKIH0KIAogVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIFBpY3R1cmVJZEp1bXBCYWNrKSB7CiAg
IHVpbnQxNl90IHBpZCA9IFJhbmQoKTsKICAgdWludDMyX3QgdHMgPSBSYW5kKCk7CiAKLSAgRVhQ
RUNUX0VRKHBpZCwgSW5zZXJ0RnJhbWUocGlkLCAwLCB0cywgZmFsc2UpKTsKLSAgRVhQRUNUX0VR
KHBpZCArIDEsIEluc2VydEZyYW1lKHBpZCArIDEsIDAsIHRzICsgMSwgZmFsc2UsIHBpZCkpOwor
ICBFWFBFQ1RfRVEocGlkLCBJbnNlcnRGcmFtZShwaWQsIDAsIHRzLCBmYWxzZSwgdHJ1ZSkpOwor
ICBFWFBFQ1RfRVEocGlkICsgMSwgSW5zZXJ0RnJhbWUocGlkICsgMSwgMCwgdHMgKyAxLCBmYWxz
ZSwgdHJ1ZSwgcGlkKSk7CiAgIEV4dHJhY3RGcmFtZSgpOwogICBDaGVja0ZyYW1lKDAsIHBpZCwg
MCk7CiAKICAgLy8gSnVtcCBiYWNrIGluIHBpZCBidXQgaW5jcmVhc2UgdHMuCi0gIEVYUEVDVF9F
UShwaWQgLSAxLCBJbnNlcnRGcmFtZShwaWQgLSAxLCAwLCB0cyArIDIsIGZhbHNlKSk7CisgIEVY
UEVDVF9FUShwaWQgLSAxLCBJbnNlcnRGcmFtZShwaWQgLSAxLCAwLCB0cyArIDIsIGZhbHNlLCB0
cnVlKSk7CiAgIEV4dHJhY3RGcmFtZSgpOwogICBFeHRyYWN0RnJhbWUoKTsKICAgQ2hlY2tGcmFt
ZSgxLCBwaWQgLSAxLCAwKTsKQEAgLTUxMyw2ICs0OTEsNyBAQCBURVNUX0YoVGVzdEZyYW1lQnVm
ZmVyMiwgU3RhdHNDYWxsYmFjaykgewogCiAgIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVP
YmplY3RGYWtlPiBmcmFtZShuZXcgRnJhbWVPYmplY3RGYWtlKCkpOworICAgIGZyYW1lLT5WZXJp
ZnlBbmRBbGxvY2F0ZShrRnJhbWVTaXplKTsKICAgICBmcmFtZS0+U2V0U2l6ZShrRnJhbWVTaXpl
KTsKICAgICBmcmFtZS0+aWQucGljdHVyZV9pZCA9IHBpZDsKICAgICBmcmFtZS0+aWQuc3BhdGlh
bF9sYXllciA9IDA7CkBAIC01MjgsNDIgKzUwNyw0MiBAQCBURVNUX0YoVGVzdEZyYW1lQnVmZmVy
MiwgU3RhdHNDYWxsYmFjaykgewogfQogCiBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwgRm9yd2Fy
ZEp1bXBzKSB7Ci0gIEVYUEVDVF9FUSg1NDUzLCBJbnNlcnRGcmFtZSg1NDUzLCAwLCAxLCBmYWxz
ZSkpOworICBFWFBFQ1RfRVEoNTQ1MywgSW5zZXJ0RnJhbWUoNTQ1MywgMCwgMSwgZmFsc2UsIHRy
dWUpKTsKICAgRXh0cmFjdEZyYW1lKCk7Ci0gIEVYUEVDVF9FUSg1NDU0LCBJbnNlcnRGcmFtZSg1
NDU0LCAwLCAxLCBmYWxzZSwgNTQ1MykpOworICBFWFBFQ1RfRVEoNTQ1NCwgSW5zZXJ0RnJhbWUo
NTQ1NCwgMCwgMSwgZmFsc2UsIHRydWUsIDU0NTMpKTsKICAgRXh0cmFjdEZyYW1lKCk7Ci0gIEVY
UEVDVF9FUSgxNTY3MCwgSW5zZXJ0RnJhbWUoMTU2NzAsIDAsIDEsIGZhbHNlKSk7CisgIEVYUEVD
VF9FUSgxNTY3MCwgSW5zZXJ0RnJhbWUoMTU2NzAsIDAsIDEsIGZhbHNlLCB0cnVlKSk7CiAgIEV4
dHJhY3RGcmFtZSgpOwotICBFWFBFQ1RfRVEoMjk4MDQsIEluc2VydEZyYW1lKDI5ODA0LCAwLCAx
LCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMjk4MDQsIEluc2VydEZyYW1lKDI5ODA0LCAwLCAxLCBm
YWxzZSwgdHJ1ZSkpOwogICBFeHRyYWN0RnJhbWUoKTsKLSAgRVhQRUNUX0VRKDI5ODA1LCBJbnNl
cnRGcmFtZSgyOTgwNSwgMCwgMSwgZmFsc2UsIDI5ODA0KSk7CisgIEVYUEVDVF9FUSgyOTgwNSwg
SW5zZXJ0RnJhbWUoMjk4MDUsIDAsIDEsIGZhbHNlLCB0cnVlLCAyOTgwNCkpOwogICBFeHRyYWN0
RnJhbWUoKTsKLSAgRVhQRUNUX0VRKDI5ODA2LCBJbnNlcnRGcmFtZSgyOTgwNiwgMCwgMSwgZmFs
c2UsIDI5ODA1KSk7CisgIEVYUEVDVF9FUSgyOTgwNiwgSW5zZXJ0RnJhbWUoMjk4MDYsIDAsIDEs
IGZhbHNlLCB0cnVlLCAyOTgwNSkpOwogICBFeHRyYWN0RnJhbWUoKTsKLSAgRVhQRUNUX0VRKDMz
ODE5LCBJbnNlcnRGcmFtZSgzMzgxOSwgMCwgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDMzODE5
LCBJbnNlcnRGcmFtZSgzMzgxOSwgMCwgMSwgZmFsc2UsIHRydWUpKTsKICAgRXh0cmFjdEZyYW1l
KCk7Ci0gIEVYUEVDVF9FUSg0MTI0OCwgSW5zZXJ0RnJhbWUoNDEyNDgsIDAsIDEsIGZhbHNlKSk7
CisgIEVYUEVDVF9FUSg0MTI0OCwgSW5zZXJ0RnJhbWUoNDEyNDgsIDAsIDEsIGZhbHNlLCB0cnVl
KSk7CiAgIEV4dHJhY3RGcmFtZSgpOwogfQogCiBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwgRHVw
bGljYXRlRnJhbWVzKSB7Ci0gIEVYUEVDVF9FUSgyMjI1NiwgSW5zZXJ0RnJhbWUoMjIyNTYsIDAs
IDEsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgyMjI1NiwgSW5zZXJ0RnJhbWUoMjIyNTYsIDAsIDEs
IGZhbHNlLCB0cnVlKSk7CiAgIEV4dHJhY3RGcmFtZSgpOwotICBFWFBFQ1RfRVEoMjIyNTYsIElu
c2VydEZyYW1lKDIyMjU2LCAwLCAxLCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMjIyNTYsIEluc2Vy
dEZyYW1lKDIyMjU2LCAwLCAxLCBmYWxzZSwgdHJ1ZSkpOwogfQogCiAvLyBUT0RPKHBoaWxpcGVs
KTogaW1wbGVtZW50IG1vcmUgdW5pdHRlc3RzIHJlbGF0ZWQgdG8gaW52YWxpZCByZWZlcmVuY2Vz
LgogVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIEludmFsaWRSZWZlcmVuY2VzKSB7Ci0gIEVYUEVD
VF9FUSgtMSwgSW5zZXJ0RnJhbWUoMCwgMCwgMTAwMCwgZmFsc2UsIDIpKTsKLSAgRVhQRUNUX0VR
KDEsIEluc2VydEZyYW1lKDEsIDAsIDIwMDAsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgtMSwgSW5z
ZXJ0RnJhbWUoMCwgMCwgMTAwMCwgZmFsc2UsIHRydWUsIDIpKTsKKyAgRVhQRUNUX0VRKDEsIElu
c2VydEZyYW1lKDEsIDAsIDIwMDAsIGZhbHNlLCB0cnVlKSk7CiAgIEV4dHJhY3RGcmFtZSgpOwot
ICBFWFBFQ1RfRVEoMiwgSW5zZXJ0RnJhbWUoMiwgMCwgMzAwMCwgZmFsc2UsIDEpKTsKKyAgRVhQ
RUNUX0VRKDIsIEluc2VydEZyYW1lKDIsIDAsIDMwMDAsIGZhbHNlLCB0cnVlLCAxKSk7CiB9CiAK
IFRFU1RfRihUZXN0RnJhbWVCdWZmZXIyLCBLZXlmcmFtZVJlcXVpcmVkKSB7Ci0gIEVYUEVDVF9F
USgxLCBJbnNlcnRGcmFtZSgxLCAwLCAxMDAwLCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMiwgSW5z
ZXJ0RnJhbWUoMiwgMCwgMjAwMCwgZmFsc2UsIDEpKTsKLSAgRVhQRUNUX0VRKDMsIEluc2VydEZy
YW1lKDMsIDAsIDMwMDAsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgxLCBJbnNlcnRGcmFtZSgxLCAw
LCAxMDAwLCBmYWxzZSwgdHJ1ZSkpOworICBFWFBFQ1RfRVEoMiwgSW5zZXJ0RnJhbWUoMiwgMCwg
MjAwMCwgZmFsc2UsIHRydWUsIDEpKTsKKyAgRVhQRUNUX0VRKDMsIEluc2VydEZyYW1lKDMsIDAs
IDMwMDAsIGZhbHNlLCB0cnVlKSk7CiAgIEV4dHJhY3RGcmFtZSgpOwogICBFeHRyYWN0RnJhbWUo
MCwgdHJ1ZSk7CiAgIEV4dHJhY3RGcmFtZSgpOwpAQCAtNTc3LDQyICs1NTYsODEgQEAgVEVTVF9G
KFRlc3RGcmFtZUJ1ZmZlcjIsIEtleWZyYW1lQ2xlYXJzRnVsbEJ1ZmZlcikgewogICBjb25zdCBp
bnQga01heEJ1ZmZlclNpemUgPSA2MDA7CiAKICAgZm9yIChpbnQgaSA9IDE7IGkgPD0ga01heEJ1
ZmZlclNpemU7ICsraSkKLSAgICBFWFBFQ1RfRVEoLTEsIEluc2VydEZyYW1lKGksIDAsIGkgKiAx
MDAwLCBmYWxzZSwgaSAtIDEpKTsKKyAgICBFWFBFQ1RfRVEoLTEsIEluc2VydEZyYW1lKGksIDAs
IGkgKiAxMDAwLCBmYWxzZSwgdHJ1ZSwgaSAtIDEpKTsKICAgRXh0cmFjdEZyYW1lKCk7CiAgIENo
ZWNrTm9GcmFtZSgwKTsKIAotICBFWFBFQ1RfRVEoCi0gICAgICBrTWF4QnVmZmVyU2l6ZSArIDEs
Ci0gICAgICBJbnNlcnRGcmFtZShrTWF4QnVmZmVyU2l6ZSArIDEsIDAsIChrTWF4QnVmZmVyU2l6
ZSArIDEpICogMTAwMCwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKGtNYXhCdWZmZXJTaXplICsgMSwK
KyAgICAgICAgICAgIEluc2VydEZyYW1lKGtNYXhCdWZmZXJTaXplICsgMSwgMCwgKGtNYXhCdWZm
ZXJTaXplICsgMSkgKiAxMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUp
KTsKICAgRXh0cmFjdEZyYW1lKCk7CiAgIENoZWNrRnJhbWUoMSwga01heEJ1ZmZlclNpemUgKyAx
LCAwKTsKIH0KIAogVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIERvbnRVcGRhdGVPblVuZGVjb2Rh
YmxlRnJhbWUpIHsKLSAgSW5zZXJ0RnJhbWUoMSwgMCwgMCwgZmFsc2UpOworICBJbnNlcnRGcmFt
ZSgxLCAwLCAwLCBmYWxzZSwgdHJ1ZSk7CiAgIEV4dHJhY3RGcmFtZSgwLCB0cnVlKTsKLSAgSW5z
ZXJ0RnJhbWUoMywgMCwgMCwgZmFsc2UsIDIsIDApOwotICBJbnNlcnRGcmFtZSgzLCAwLCAwLCBm
YWxzZSwgMCk7Ci0gIEluc2VydEZyYW1lKDIsIDAsIDAsIGZhbHNlKTsKKyAgSW5zZXJ0RnJhbWUo
MywgMCwgMCwgZmFsc2UsIHRydWUsIDIsIDApOworICBJbnNlcnRGcmFtZSgzLCAwLCAwLCBmYWxz
ZSwgdHJ1ZSwgMCk7CisgIEluc2VydEZyYW1lKDIsIDAsIDAsIGZhbHNlLCB0cnVlKTsKICAgRXh0
cmFjdEZyYW1lKDAsIHRydWUpOwogICBFeHRyYWN0RnJhbWUoMCwgdHJ1ZSk7CiB9CiAKIFRFU1Rf
RihUZXN0RnJhbWVCdWZmZXIyLCBEb250RGVjb2RlT2xkZXJUaW1lc3RhbXApIHsKLSAgSW5zZXJ0
RnJhbWUoMiwgMCwgMSwgZmFsc2UpOwotICBJbnNlcnRGcmFtZSgxLCAwLCAyLCBmYWxzZSk7ICAv
LyBPbGRlciBwaWN0dXJlIGlkIGJ1dCBuZXdlciB0aW1lc3RhbXAuCisgIEluc2VydEZyYW1lKDIs
IDAsIDEsIGZhbHNlLCB0cnVlKTsKKyAgSW5zZXJ0RnJhbWUoMSwgMCwgMiwgZmFsc2UsIHRydWUp
OyAgLy8gT2xkZXIgcGljdHVyZSBpZCBidXQgbmV3ZXIgdGltZXN0YW1wLgogICBFeHRyYWN0RnJh
bWUoMCk7CiAgIEV4dHJhY3RGcmFtZSgwKTsKICAgQ2hlY2tGcmFtZSgwLCAxLCAwKTsKICAgQ2hl
Y2tOb0ZyYW1lKDEpOwogCi0gIEluc2VydEZyYW1lKDMsIDAsIDQsIGZhbHNlKTsKLSAgSW5zZXJ0
RnJhbWUoNCwgMCwgMywgZmFsc2UpOyAgLy8gTmV3ZXIgcGljdHVyZSBpZCBidXQgb2xkZXIgdGlt
ZXN0YW1wLgorICBJbnNlcnRGcmFtZSgzLCAwLCA0LCBmYWxzZSwgdHJ1ZSk7CisgIEluc2VydEZy
YW1lKDQsIDAsIDMsIGZhbHNlLCB0cnVlKTsgIC8vIE5ld2VyIHBpY3R1cmUgaWQgYnV0IG9sZGVy
IHRpbWVzdGFtcC4KICAgRXh0cmFjdEZyYW1lKDApOwogICBFeHRyYWN0RnJhbWUoMCk7CiAgIENo
ZWNrRnJhbWUoMiwgMywgMCk7CiAgIENoZWNrTm9GcmFtZSgzKTsKIH0KIAorVEVTVF9GKFRlc3RG
cmFtZUJ1ZmZlcjIsIENvbWJpbmVGcmFtZXNUb1N1cGVyZnJhbWUpIHsKKyAgdWludDE2X3QgcGlk
ID0gUmFuZCgpOworICB1aW50MzJfdCB0cyA9IFJhbmQoKTsKKworICBJbnNlcnRGcmFtZShwaWQs
IDAsIHRzLCBmYWxzZSwgZmFsc2UpOworICBJbnNlcnRGcmFtZShwaWQsIDEsIHRzLCB0cnVlLCB0
cnVlKTsKKyAgRXh0cmFjdEZyYW1lKDApOworICBFeHRyYWN0RnJhbWUoMCk7CisgIENoZWNrRnJh
bWUoMCwgcGlkLCAwKTsKKyAgQ2hlY2tOb0ZyYW1lKDEpOworICAvLyBUd28gZnJhbWVzIHNob3Vs
ZCBiZSBjb21iaW5lZCBhbmQgcmV0dXJuZWQgdG9nZXRoZXIuCisgIENoZWNrRnJhbWVTaXplKDAs
IGtGcmFtZVNpemUgKiAyKTsKK30KKworVEVTVF9GKFRlc3RGcmFtZUJ1ZmZlcjIsIEhpZ2hlclNw
YXRpYWxMYXllck5vbkRlY29kYWJsZSkgeworICB1aW50MTZfdCBwaWQgPSBSYW5kKCk7CisgIHVp
bnQzMl90IHRzID0gUmFuZCgpOworCisgIEluc2VydEZyYW1lKHBpZCwgMCwgdHMsIGZhbHNlLCBm
YWxzZSk7CisgIEluc2VydEZyYW1lKHBpZCwgMSwgdHMsIHRydWUsIHRydWUpOworCisgIEV4dHJh
Y3RGcmFtZSgwKTsKKyAgQ2hlY2tGcmFtZSgwLCBwaWQsIDApOworCisgIEluc2VydEZyYW1lKHBp
ZCArIDEsIDEsIHRzICsga0ZwczIwLCBmYWxzZSwgdHJ1ZSwgcGlkKTsKKyAgSW5zZXJ0RnJhbWUo
cGlkICsgMiwgMCwgdHMgKyBrRnBzMTAsIGZhbHNlLCBmYWxzZSwgcGlkKTsKKyAgSW5zZXJ0RnJh
bWUocGlkICsgMiwgMSwgdHMgKyBrRnBzMTAsIHRydWUsIHRydWUsIHBpZCArIDEpOworCisgIGNs
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgLy8gRnJhbWUgcGlkKzEgaXMg
ZGVjb2RhYmxlIGJ1dCB0b28gbGF0ZS4KKyAgLy8gSW4gc3VwZXJmcmFtZSBwaWQrMiBmcmFtZSBz
aWQ9MCBpcyBkZWNvZGFibGUsIGJ1dCBmcmFtZSBzaWQ9MSBpcyBub3QuCisgIC8vIEluY29ycmVj
dCBpbXBsZW1lbnRhdGlvbiBtaWdodCBza2lwIHBpZCsxIGZyYW1lIGFuZCBvdXRwdXQgdW5kZWNv
ZGFibGUKKyAgLy8gcGlkKzIgaW5zdGVhZC4KKyAgRXh0cmFjdEZyYW1lKCk7CisgIEV4dHJhY3RG
cmFtZSgpOworICBDaGVja0ZyYW1lKDEsIHBpZCArIDEsIDEpOworICBDaGVja0ZyYW1lKDIsIHBp
ZCArIDIsIDApOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdmlkZW9fY29kaW5nCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9vYmplY3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9m
cmFtZV9vYmplY3QuY2MKaW5kZXggMDE3MmM1NTQ5M2JiYTkwNThmMjk5N2M4OTRiNTBkNzk5MGFm
N2U4YS4uNGMxNzkxMDFjOTFmOGFkOTg0YTk4ODA2ZmRiM2Q2OTZmYTVlZWMzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZnJhbWVfb2JqZWN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX29iamVjdC5jYwpAQCAt
OTYsNiArOTYsNyBAQCBSdHBGcmFtZU9iamVjdDo6UnRwRnJhbWVPYmplY3QoUGFja2V0QnVmZmVy
KiBwYWNrZXRfYnVmZmVyLAogICAgIHRpbWluZ18ucmVjZWl2ZV9maW5pc2hfbXMgPSBsYXN0X3Bh
Y2tldC0+cmVjZWl2ZV90aW1lX21zOwogICB9CiAgIHRpbWluZ18uZmxhZ3MgPSBsYXN0X3BhY2tl
dC0+dmlkZW9faGVhZGVyLnZpZGVvX3RpbWluZy5mbGFnczsKKyAgaXNfbGFzdF9zcGF0aWFsX2xh
eWVyID0gbGFzdF9wYWNrZXQtPm1hcmtlckJpdDsKIH0KIAogUnRwRnJhbWVPYmplY3Q6On5SdHBG
cmFtZU9iamVjdCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3J0cF9mcmFtZV9yZWZlcmVuY2VfZmlu
ZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXIuY2MKaW5kZXggNDBiMTZm
NDE1NmU4NzJiYzVmYzc3Mjk2NGQ2NmQ0ZTA0N2YzZmM0YS4uZjZmY2UxNzIxNTQ4MDY0MGUzMjhj
NDNkNWM4NTE5ZDM0OTEzYzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcnRwX2ZyYW1lX3JlZmVyZW5j
ZV9maW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXIuY2MKQEAg
LTQ4OSwxMiArNDg5LDI0IEBAIFJ0cEZyYW1lUmVmZXJlbmNlRmluZGVyOjpGcmFtZURlY2lzaW9u
IFJ0cEZyYW1lUmVmZXJlbmNlRmluZGVyOjpNYW5hZ2VGcmFtZVZwOSgKICAgICAgIFVud3JhcFBp
Y3R1cmVJZHMoZnJhbWUpOwogICAgICAgcmV0dXJuIGtIYW5kT2ZmOwogICAgIH0KLSAgfSBlbHNl
IHsKLSAgICBpZiAoZnJhbWUtPmZyYW1lX3R5cGUoKSA9PSBrVmlkZW9GcmFtZUtleSkgeworICB9
IGVsc2UgaWYgKGZyYW1lLT5mcmFtZV90eXBlKCkgPT0ga1ZpZGVvRnJhbWVLZXkpIHsKKyAgICBp
ZiAoZnJhbWUtPmlkLnNwYXRpYWxfbGF5ZXIgPT0gMCkgewogICAgICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiUmVjZWl2ZWQga2V5ZnJhbWUgd2l0aG91dCBzY2FsYWJpbGl0eSBzdHJ1Y3R1cmUi
OwogICAgICAgcmV0dXJuIGtEcm9wOwogICAgIH0KKyAgICBjb25zdCBhdXRvIGdvZl9pbmZvX2l0
ID0gZ29mX2luZm9fLmZpbmQodW53cmFwcGVkX3RsMCk7CisgICAgaWYgKGdvZl9pbmZvX2l0ID09
IGdvZl9pbmZvXy5lbmQoKSkKKyAgICAgIHJldHVybiBrU3Rhc2g7CisKKyAgICBpbmZvID0gJmdv
Zl9pbmZvX2l0LT5zZWNvbmQ7CiAKKyAgICBpZiAoZnJhbWUtPmZyYW1lX3R5cGUoKSA9PSBrVmlk
ZW9GcmFtZUtleSkgeworICAgICAgZnJhbWUtPm51bV9yZWZlcmVuY2VzID0gMDsKKyAgICAgIEZy
YW1lUmVjZWl2ZWRWcDkoZnJhbWUtPmlkLnBpY3R1cmVfaWQsIGluZm8pOworICAgICAgVW53cmFw
UGljdHVyZUlkcyhmcmFtZSk7CisgICAgICByZXR1cm4ga0hhbmRPZmY7CisgICAgfQorICB9IGVs
c2UgewogICAgIGF1dG8gZ29mX2luZm9faXQgPSBnb2ZfaW5mb18uZmluZCgKICAgICAgICAgKGNv
ZGVjX2hlYWRlci50ZW1wb3JhbF9pZHggPT0gMCkgPyB1bndyYXBwZWRfdGwwIC0gMSA6IHVud3Jh
cHBlZF90bDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5l
bC5jYwppbmRleCBmNjEyOTFjNWRkYzAwODI2ZWI0MjQ3MzY0YWM0ZjVhMWJhMjUxMjAzLi4wZDIx
NjEzYmE0YmY4Yzk1YjgzNmQ0NTBiOGIwOTQ0ZDg5M2Y3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRj
aGFubmVsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuY2MKQEAgLTEwOTgsNyArMTA5OCw5IEBAIHZv
aWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6T25DYW5kaWRhdGVSZXNvbHZlZCgKICAgQ2FuZGlkYXRl
IGNhbmRpZGF0ZSA9IHAtPmNhbmRpZGF0ZV87CiAgIHJlc29sdmVyc18uZXJhc2UocCk7CiAgIEFk
ZFJlbW90ZUNhbmRpZGF0ZVdpdGhSZXNvbHZlcihjYW5kaWRhdGUsIHJlc29sdmVyKTsKLSAgcmVz
b2x2ZXItPkRlc3Ryb3koZmFsc2UpOworICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPigKKyAg
ICAgIFJUQ19GUk9NX0hFUkUsIHRocmVhZCgpLAorICAgICAgcnRjOjpCaW5kKCZydGM6OkFzeW5j
UmVzb2x2ZXJJbnRlcmZhY2U6OkRlc3Ryb3ksIHJlc29sdmVyLCBmYWxzZSkpOwogfQogCiB2b2lk
IFAyUFRyYW5zcG9ydENoYW5uZWw6OkFkZFJlbW90ZUNhbmRpZGF0ZVdpdGhSZXNvbHZlcigKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsX3VuaXR0
ZXN0LmNjCmluZGV4IDJhYjNkODhhZmJjNTk3YWQ3ZTUyMGM3ZThmMWJmOWZmYzBjNDhjZjYuLjg1
NDk3OTRiNDdhODc0ZDAyYTNhZDM5NDg3ZGEzN2FiYjg3YTk5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9y
dGNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYwpAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgewogCiB1c2luZyBydGM6OlNvY2tldEFkZHJlc3M7CiB1
c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkFzc2lnbjsKIHVzaW5nIDo6dGVz
dGluZzo6RG9BbGw7CiB1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7CiB1c2luZyA6OnRlc3Rp
bmc6Okludm9rZVdpdGhvdXRBcmdzOwpAQCAtNDU2NSwxMyArNDU2NiwxOCBAQCBURVNUX0YoUDJQ
VHJhbnNwb3J0Q2hhbm5lbE1vc3RMaWtlbHlUb1dvcmtGaXJzdFRlc3QsIFRlc3RUY3BUdXJuKSB7
CiB9CiAKIC8vIFRlc3QgdGhhdCBhIHJlc29sdmVyIGlzIGNyZWF0ZWQsIGFza2VkIGZvciBhIHJl
c3VsdCwgYW5kIGRlc3Ryb3llZAotLy8gd2hlbiB0aGUgYWRkcmVzcyBpcyBhIGhvc3RuYW1lLgor
Ly8gd2hlbiB0aGUgYWRkcmVzcyBpcyBhIGhvc3RuYW1lLiBUaGUgZGVzdHJ1Y3Rpb24gc2hvdWxk
IGhhcHBlbiBldmVuCisvLyBpZiB0aGUgY2hhbm5lbCBpcyBub3QgZGVzdHJveWVkLgogVEVTVChQ
MlBUcmFuc3BvcnRDaGFubmVsUmVzb2x2ZXJUZXN0LCBIb3N0bmFtZUNhbmRpZGF0ZUlzUmVzb2x2
ZWQpIHsKICAgcnRjOjpNb2NrQXN5bmNSZXNvbHZlciBtb2NrX2FzeW5jX3Jlc29sdmVyOwogICBF
WFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyLCBHZXRFcnJvcigpKS5XaWxsT25jZShSZXR1
cm4oMCkpOwogICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyLCBHZXRSZXNvbHZlZEFk
ZHJlc3MoXywgXykpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLSAgRVhQRUNUX0NB
TEwobW9ja19hc3luY19yZXNvbHZlciwgRGVzdHJveShfKSk7CisgIC8vIERlc3Ryb3kgaXMgY2Fs
bGVkIGFzeW5jaHJvbm91c2x5IGFmdGVyIHRoZSBhZGRyZXNzIGlzIHJlc29sdmVkLAorICAvLyBz
byB3ZSBuZWVkIGEgdmFyaWFibGUgdG8gd2FpdCBvbi4KKyAgYm9vbCBkZXN0cm95X2NhbGxlZCA9
IGZhbHNlOworICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyLCBEZXN0cm95KF8pKQor
ICAgICAgLldpbGxPbmNlKEFzc2lnbigmZGVzdHJveV9jYWxsZWQsIHRydWUpKTsKICAgd2VicnRj
OjpNb2NrQXN5bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5Owog
ICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0ZSgpKQogICAg
ICAgLldpbGxPbmNlKFJldHVybigmbW9ja19hc3luY19yZXNvbHZlcikpOwpAQCAtNDU4Niw2ICs0
NTkyLDcgQEAgVEVTVChQMlBUcmFuc3BvcnRDaGFubmVsUmVzb2x2ZXJUZXN0LCBIb3N0bmFtZUNh
bmRpZGF0ZUlzUmVzb2x2ZWQpIHsKICAgQVNTRVJUX0VRX1dBSVQoMXUsIGNoYW5uZWwucmVtb3Rl
X2NhbmRpZGF0ZXMoKS5zaXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIGNvbnN0IFJlbW90ZUNh
bmRpZGF0ZSYgY2FuZGlkYXRlID0gY2hhbm5lbC5yZW1vdGVfY2FuZGlkYXRlcygpWzBdOwogICBF
WFBFQ1RfRkFMU0UoY2FuZGlkYXRlLmFkZHJlc3MoKS5Jc1VucmVzb2x2ZWRJUCgpKTsKKyAgV0FJ
VChkZXN0cm95X2NhbGxlZCwga1Nob3J0VGltZW91dCk7CiB9CiAKIC8vIFRlc3QgdGhhdCBpZiB3
ZSBzaWduYWwgYSBob3N0bmFtZSBjYW5kaWRhdGUgYWZ0ZXIgdGhlIHJlbW90ZSBlbmRwb2ludApA
QCAtNDY0Myw3ICs0NjUwLDExIEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKICAg
ICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyLCBHZXRSZXNvbHZlZEFkZHJlc3MoXywg
XykpCiAgICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmdQb2ludGVlPDE+KGxvY2FsX2FkZHJl
c3MpLCBSZXR1cm4odHJ1ZSkpKTsKICAgfQotICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29s
dmVyLCBEZXN0cm95KF8pKTsKKyAgLy8gRGVzdHJveSBpcyBjYWxsZWQgYXN5bmNocm9ub3VzbHkg
YWZ0ZXIgdGhlIGFkZHJlc3MgaXMgcmVzb2x2ZWQsCisgIC8vIHNvIHdlIG5lZWQgYSB2YXJpYWJs
ZSB0byB3YWl0IG9uLgorICBib29sIGRlc3Ryb3lfY2FsbGVkID0gZmFsc2U7CisgIEVYUEVDVF9D
QUxMKG1vY2tfYXN5bmNfcmVzb2x2ZXIsIERlc3Ryb3koXykpCisgICAgICAuV2lsbE9uY2UoQXNz
aWduKCZkZXN0cm95X2NhbGxlZCwgdHJ1ZSkpOwogICBSZXN1bWVDYW5kaWRhdGVzKDApOwogICAv
LyBWZXJpZnkgZXAyJ3Mgc2VsZWN0ZWQgY29ubmVjdGlvbiBpcyB1cGRhdGVkIHRvIHVzZSB0aGUg
J2xvY2FsJyBjYW5kaWRhdGUuCiAgIEVYUEVDVF9FUV9XQUlUKExPQ0FMX1BPUlRfVFlQRSwKQEAg
LTQ2NTEsNiArNDY2Miw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKICAgICAg
ICAgICAgICAgICAga01lZGl1bVRpbWVvdXQpOwogICBFWFBFQ1RfRVEoc2VsZWN0ZWRfY29ubmVj
dGlvbiwgZXAyX2NoMSgpLT5zZWxlY3RlZF9jb25uZWN0aW9uKCkpOwogCisgIFdBSVQoZGVzdHJv
eV9jYWxsZWQsIGtTaG9ydFRpbWVvdXQpOwogICBEZXN0cm95Q2hhbm5lbHMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3BvcnQuY2MKaW5kZXggNWI4ZTAyZDI4ZmY4OTRkM2QzNzZlZmFiM2IwN2YwZjNiZWU0
MGNiZi4uNDk1NDc0NGNjOGU5NzY1MjFjODQwZjE0ZThhNWQwOTgwMzU1NDM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9y
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wb3J0LmNjCkBAIC00MzAsNTAgKzQzMCw0MiBAQCB2b2lkIFBvcnQ6OkFkZEFkZHJlc3Mo
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLAogICBjLnNldF9uZXR3b3JrX25hbWUo
bmV0d29ya18tPm5hbWUoKSk7CiAgIGMuc2V0X25ldHdvcmtfdHlwZShuZXR3b3JrXy0+dHlwZSgp
KTsKICAgYy5zZXRfdXJsKHVybCk7Ci0gIGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhyZWxhdGVkX2Fk
ZHJlc3MpOwotCi0gIGJvb2wgcGVuZGluZyA9IE1heWJlT2JmdXNjYXRlQWRkcmVzcygmYywgdHlw
ZSwgaXNfZmluYWwpOwotCi0gIGlmICghcGVuZGluZykgewotICAgIEZpbmlzaEFkZGluZ0FkZHJl
c3MoYywgaXNfZmluYWwpOwotICB9Ci19Ci0KLWJvb2wgUG9ydDo6TWF5YmVPYmZ1c2NhdGVBZGRy
ZXNzKENhbmRpZGF0ZSogYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc19maW5hbCkgewogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzIzKTogVXNlIGEgY29u
ZmlnIHRvIGNvbnRyb2wgdGhlIGZlYXR1cmUgb2YgSVAKICAgLy8gaGFuZGxpbmcgd2l0aCBtRE5T
LgotICBpZiAobmV0d29ya18tPkdldE1kbnNSZXNwb25kZXIoKSA9PSBudWxscHRyKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmICh0eXBlICE9IExPQ0FMX1BPUlRfVFlQRSkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGF1dG8gY29weSA9ICpjOwotICBhdXRvIHdlYWtfcHRy
ID0gd2Vha19mYWN0b3J5Xy5HZXRXZWFrUHRyKCk7Ci0gIGF1dG8gY2FsbGJhY2sgPSBbd2Vha19w
dHIsIGNvcHksIGlzX2ZpbmFsXShjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSBtdXRhYmxlIHsKLSAgICBSVENfRENIRUNLKGNvcHkuYWRkcmVzcygpLmlwYWRkcigpID09
IGFkZHIpOwotICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBob3N0bmFtZV9hZGRyZXNzKG5hbWUsIGNv
cHkuYWRkcmVzcygpLnBvcnQoKSk7Ci0gICAgLy8gSW4gUG9ydCBhbmQgQ29ubmVjdGlvbiwgd2Ug
bmVlZCB0aGUgSVAgYWRkcmVzcyBpbmZvcm1hdGlvbiB0bwotICAgIC8vIGNvcnJlY3RseSBoYW5k
bGUgdGhlIHVwZGF0ZSBvZiBjYW5kaWRhdGUgdHlwZSB0byBwcmZseC4gVGhlIHJlbW92YWwKLSAg
ICAvLyBvZiBJUCBhZGRyZXNzIHdoZW4gc2lnbmFsaW5nIHRoaXMgY2FuZGlkYXRlIHdpbGwgdGFr
ZSBwbGFjZSBpbgotICAgIC8vIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246Ok9uQ2FuZGlkYXRl
UmVhZHksIHZpYSBTYW5pdGl6ZUNhbmRpZGF0ZS4KLSAgICBob3N0bmFtZV9hZGRyZXNzLlNldFJl
c29sdmVkSVAoYWRkcik7Ci0gICAgY29weS5zZXRfYWRkcmVzcyhob3N0bmFtZV9hZGRyZXNzKTsK
LSAgICBjb3B5LnNldF9yZWxhdGVkX2FkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCkpOwotICAg
IGlmICh3ZWFrX3B0ciAhPSBudWxscHRyKSB7Ci0gICAgICB3ZWFrX3B0ci0+c2V0X21kbnNfbmFt
ZV9yZWdpc3RyYXRpb25fc3RhdHVzKAotICAgICAgICAgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3Rh
dHVzOjprQ29tcGxldGVkKTsKLSAgICAgIHdlYWtfcHRyLT5GaW5pc2hBZGRpbmdBZGRyZXNzKGNv
cHksIGlzX2ZpbmFsKTsKKyAgaWYgKG5ldHdvcmtfLT5HZXRNZG5zUmVzcG9uZGVyKCkgIT0gbnVs
bHB0cikgeworICAgIC8vIE9iZnVzY2F0ZSB0aGUgSVAgYWRkcmVzcyBvZiBhIGhvc3QgY2FuZGlk
YXRlcyBieSBhbiBtRE5TIGhvc3RuYW1lLgorICAgIGlmICh0eXBlID09IExPQ0FMX1BPUlRfVFlQ
RSkgeworICAgICAgYXV0byB3ZWFrX3B0ciA9IHdlYWtfZmFjdG9yeV8uR2V0V2Vha1B0cigpOwor
ICAgICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrX3B0ciwgYywgaXNfZmluYWxdKGNvbnN0IHJ0Yzo6
SVBBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBtdXRhYmxlIHsKKyAgICAgICAgUlRDX0RD
SEVDSyhjLmFkZHJlc3MoKS5pcGFkZHIoKSA9PSBhZGRyKTsKKyAgICAgICAgcnRjOjpTb2NrZXRB
ZGRyZXNzIGhvc3RuYW1lX2FkZHJlc3MobmFtZSwgYy5hZGRyZXNzKCkucG9ydCgpKTsKKyAgICAg
ICAgLy8gSW4gUG9ydCBhbmQgQ29ubmVjdGlvbiwgd2UgbmVlZCB0aGUgSVAgYWRkcmVzcyBpbmZv
cm1hdGlvbiB0bworICAgICAgICAvLyBjb3JyZWN0bHkgaGFuZGxlIHRoZSB1cGRhdGUgb2YgY2Fu
ZGlkYXRlIHR5cGUgdG8gcHJmbHguIFRoZSByZW1vdmFsCisgICAgICAgIC8vIG9mIElQIGFkZHJl
c3Mgd2hlbiBzaWduYWxpbmcgdGhpcyBjYW5kaWRhdGUgd2lsbCB0YWtlIHBsYWNlIGluCisgICAg
ICAgIC8vIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246Ok9uQ2FuZGlkYXRlUmVhZHksIHZpYSBT
YW5pdGl6ZUNhbmRpZGF0ZS4KKyAgICAgICAgaG9zdG5hbWVfYWRkcmVzcy5TZXRSZXNvbHZlZElQ
KGFkZHIpOworICAgICAgICBjLnNldF9hZGRyZXNzKGhvc3RuYW1lX2FkZHJlc3MpOworICAgICAg
ICBSVENfRENIRUNLKGMucmVsYXRlZF9hZGRyZXNzKCkgPT0gcnRjOjpTb2NrZXRBZGRyZXNzKCkp
OworICAgICAgICBpZiAod2Vha19wdHIgIT0gbnVsbHB0cikgeworICAgICAgICAgIHdlYWtfcHRy
LT5zZXRfbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoCisgICAgICAgICAgICAgIE1kbnNO
YW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprQ29tcGxldGVkKTsKKyAgICAgICAgICB3ZWFrX3B0ci0+
RmluaXNoQWRkaW5nQWRkcmVzcyhjLCBpc19maW5hbCk7CisgICAgICAgIH0KKyAgICAgIH07Cisg
ICAgICBzZXRfbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoCisgICAgICAgICAgTWRuc05h
bWVSZWdpc3RyYXRpb25TdGF0dXM6OmtJblByb2dyZXNzKTsKKyAgICAgIG5ldHdvcmtfLT5HZXRN
ZG5zUmVzcG9uZGVyKCktPkNyZWF0ZU5hbWVGb3JBZGRyZXNzKGMuYWRkcmVzcygpLmlwYWRkcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2spOworICAgICAgcmV0dXJuOwogICAgIH0KLSAgfTsKLSAgc2V0X21kbnNfbmFt
ZV9yZWdpc3RyYXRpb25fc3RhdHVzKE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprSW5Qcm9n
cmVzcyk7Ci0gIG5ldHdvcmtfLT5HZXRNZG5zUmVzcG9uZGVyKCktPkNyZWF0ZU5hbWVGb3JBZGRy
ZXNzKGNvcHkuYWRkcmVzcygpLmlwYWRkcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayk7Ci0gIHJldHVybiB0cnVlOworICAg
IC8vIEZvciBvdGhlciB0eXBlcyBvZiBjYW5kaWRhdGVzLCB0aGUgcmVsYXRlZCBhZGRyZXNzIHNo
b3VsZCBiZSBzZXQgdG8KKyAgICAvLyAwLjAuMC4wIG9yIDo6MC4KKyAgICBjLnNldF9yZWxhdGVk
X2FkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICB9IGVsc2UgeworICAgIGMuc2V0X3Jl
bGF0ZWRfYWRkcmVzcyhyZWxhdGVkX2FkZHJlc3MpOworICB9CisgIEZpbmlzaEFkZGluZ0FkZHJl
c3MoYywgaXNfZmluYWwpOwogfQogCiB2b2lkIFBvcnQ6OkZpbmlzaEFkZGluZ0FkZHJlc3MoY29u
c3QgQ2FuZGlkYXRlJiBjLCBib29sIGlzX2ZpbmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmgKaW5kZXgg
OWE4ZjkyYTk2ZTQ1ZmQ5YTM5ZThjZjhkYjRiNTNjNTM1NmU2NDBiZi4uZTBiM2YwNzg2MDM3Nzdm
NTViZjVmYjRkOWU5ZDg2MDM4YWVjMzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaApAQCAtNTE0LDEw
ICs1MTQsNiBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAKICAgcnRjOjpX
ZWFrUHRyRmFjdG9yeTxQb3J0PiB3ZWFrX2ZhY3RvcnlfOwogCi0gIGJvb2wgTWF5YmVPYmZ1c2Nh
dGVBZGRyZXNzKENhbmRpZGF0ZSogYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNfZmluYWwpOwotCiAgIGZyaWVuZCBjbGFzcyBDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9i
YXNpY3BvcnRhbGxvY2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYwppbmRleCAwYzJmZWYzMTEy
NjA1Nzk2YjY4M2M1ZWRkNTgwMWRmZTc0NzhjNjc3Li4zOTg5NWRmYTVhMTZkMDdmMjgxMzgxNWFl
ZTdiMDczMTc4NTdhZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvci5jYwpAQCAtNTE4LDEwICs1MTgsNiBAQCB2b2lkIEJhc2ljUG9ydEFsbG9jYXRv
clNlc3Npb246OkdldENhbmRpZGF0ZXNGcm9tUG9ydCgKICAgfQogfQogCi1ib29sIEJhc2ljUG9y
dEFsbG9jYXRvclNlc3Npb246Ok1kbnNPYmZ1c2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7Ci0gIHJl
dHVybiBhbGxvY2F0b3JfLT5uZXR3b3JrX21hbmFnZXIoKS0+R2V0TWRuc1Jlc3BvbmRlcigpICE9
IG51bGxwdHI7Ci19Ci0KIENhbmRpZGF0ZSBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpTYW5p
dGl6ZUNhbmRpZGF0ZSgKICAgICBjb25zdCBDYW5kaWRhdGUmIGMpIGNvbnN0IHsKICAgUlRDX0RD
SEVDS19SVU5fT04obmV0d29ya190aHJlYWRfKTsKQEAgLTUzOCw3ICs1MzQsNyBAQCBDYW5kaWRh
dGUgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6U2FuaXRpemVDYW5kaWRhdGUoCiAgIGJvb2wg
ZmlsdGVyX3N0dW5fcmVsYXRlZF9hZGRyZXNzID0KICAgICAgICgoZmxhZ3MoKSAmIFBPUlRBTExP
Q0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKSAmJgogICAgICAgIChmbGFncygpICYg
UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0RFRkFVTFRfTE9DQUxfQ0FORElEQVRFKSkgfHwKLSAgICAg
ICEoY2FuZGlkYXRlX2ZpbHRlcl8gJiBDRl9IT1NUKSB8fCBNZG5zT2JmdXNjYXRpb25FbmFibGVk
KCk7CisgICAgICAhKGNhbmRpZGF0ZV9maWx0ZXJfICYgQ0ZfSE9TVCk7CiAgIC8vIElmIHRoZSBj
YW5kaWRhdGUgZmlsdGVyIGRvZXNuJ3QgYWxsb3cgcmVmbGV4aXZlIGFkZHJlc3NlcywgZW1wdHkg
VFVSTiByYWRkcgogICAvLyB0byBhdm9pZCByZWZsZXhpdmUgYWRkcmVzcyBsZWFrYWdlLgogICBi
b29sIGZpbHRlcl90dXJuX3JlbGF0ZWRfYWRkcmVzcyA9ICEoY2FuZGlkYXRlX2ZpbHRlcl8gJiBD
Rl9SRUZMRVhJVkUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2Nh
dG9yLmgKaW5kZXggNjcyZjNkZGI3YzI2M2IxYTU1ZmEzMTQyMmI5ZjEwM2E1YmU3YjYwMS4uMTAx
MmQ5MmY5NmIxYTY3MzgwYmExNjgyZTE5YzUxMmVlY2UzMDBkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRh
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oCkBAIC0yMzYsMTAgKzIzNiw2IEBAIGNs
YXNzIFJUQ19FWFBPUlQgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBQb3J0QWxs
b2NhdG9yU2Vzc2lvbiwKIAogICBib29sIENoZWNrQ2FuZGlkYXRlRmlsdGVyKGNvbnN0IENhbmRp
ZGF0ZSYgYykgY29uc3Q7CiAgIGJvb2wgQ2FuZGlkYXRlUGFpcmFibGUoY29uc3QgQ2FuZGlkYXRl
JiBjLCBjb25zdCBQb3J0KiBwb3J0KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
cmUgaXMgYW4gbUROUyByZXNwb25kZXIgYXR0YWNoZWQgdG8gdGhlIG5ldHdvcmsgbWFuYWdlcgot
ICBib29sIE1kbnNPYmZ1c2NhdGlvbkVuYWJsZWQoKSBjb25zdDsKLQogICAvLyBDbGVhcnMgMSkg
dGhlIGFkZHJlc3MgaWYgdGhlIGNhbmRpZGF0ZSBpcyBzdXBwb3NlZGx5IGEgaG9zdG5hbWUgY2Fu
ZGlkYXRlOwogICAvLyAyKSB0aGUgcmVsYXRlZCBhZGRyZXNzIGFjY29yZGluZyB0byB0aGUgZmxh
Z3MgYW5kIGNhbmRpZGF0ZSBmaWx0ZXIgaW4gb3JkZXIKICAgLy8gdG8gYXZvaWQgbGVha2luZyBh
bnkgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFz
aWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDg5NDNlYmM3M2RiYTJkYjY4YTJmYmNk
YmU0MDczNTc4NmY0ZWFmMGYuLmEwNzU2OWU5NGI4ZGZhNWFhNTZjNDI1NjE1OTg4OGE4NjYzYWQ2
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxs
b2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC0yMjQ2LDggKzIyNDYsOCBAQCBURVNUX0YoQmFzaWNQb3J0
QWxsb2NhdG9yVGVzdCwgSWNlUmVnYXRoZXJpbmdNZXRyaWNzTG9nZ2VkV2hlbk5ldHdvcmtDaGFu
Z2VzKSB7CiB9CiAKIC8vIFRlc3QgdGhhdCB3aGVuIGFuIG1ETlMgcmVzcG9uZGVyIGlzIHByZXNl
bnQsIHRoZSBsb2NhbCBhZGRyZXNzIG9mIGEgaG9zdAotLy8gY2FuZGlkYXRlIGlzIGNvbmNlYWxl
ZCBieSBhbiBtRE5TIGhvc3RuYW1lIGFuZCB0aGUgcmVsYXRlZCBhZGRyZXNzIG9mIGEgc3JmbHgK
LS8vIGNhbmRpZGF0ZSBpcyBzZXQgdG8gMC4wLjAuMCBvciA6OjAuCisvLyBjYW5kaWRhdGUgaXMg
bWFza2VkIGJ5IGFuIG1ETlMgaG9zdG5hbWUgYW5kIHRoZSByZWxhdGVkIGFkZHJlc3Mgb2YgYW55
IG90aGVyCisvLyB0eXBlIG9mIGNhbmRpZGF0ZXMgaXMgc2V0IHRvIDAuMC4wLjAgb3IgOjowLgog
VEVTVF9GKEJhc2ljUG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBs
YWNlZEJ5SG9zdG5hbWUpIHsKICAgLy8gRGVmYXVsdCBjb25maWcgdXNlcyBHVFVSTiBhbmQgbm8g
TkFULCBzbyByZXBsYWNlIHRoYXQgd2l0aCB0aGUKICAgLy8gZGVzaXJlZCBzZXR1cCAoTkFULCBT
VFVOIHNlcnZlciwgVFVSTiBzZXJ2ZXIsIFVEUC9UQ1ApLgpAQCAtMjI2OSwyOSArMjI2OSwyMyBA
QCBURVNUX0YoQmFzaWNQb3J0QWxsb2NhdG9yVGVzdCwgSG9zdENhbmRpZGF0ZUFkZHJlc3NJc1Jl
cGxhY2VkQnlIb3N0bmFtZSkgewogICBpbnQgbnVtX3NyZmx4X2NhbmRpZGF0ZXMgPSAwOwogICBp
bnQgbnVtX3JlbGF5X2NhbmRpZGF0ZXMgPSAwOwogICBmb3IgKGNvbnN0IGF1dG8mIGNhbmRpZGF0
ZSA6IGNhbmRpZGF0ZXNfKSB7Ci0gICAgY29uc3QgYXV0byYgcmFkZHIgPSBjYW5kaWRhdGUucmVs
YXRlZF9hZGRyZXNzKCk7Ci0KICAgICBpZiAoY2FuZGlkYXRlLnR5cGUoKSA9PSBMT0NBTF9QT1JU
X1RZUEUpIHsKLSAgICAgIEVYUEVDVF9GQUxTRShjYW5kaWRhdGUuYWRkcmVzcygpLmhvc3RuYW1l
KCkuZW1wdHkoKSk7Ci0gICAgICBFWFBFQ1RfVFJVRShyYWRkci5Jc05pbCgpKTsKKyAgICAgIEVY
UEVDVF9UUlVFKGNhbmRpZGF0ZS5hZGRyZXNzKCkuSXNVbnJlc29sdmVkSVAoKSk7CiAgICAgICBp
ZiAoY2FuZGlkYXRlLnByb3RvY29sKCkgPT0gVURQX1BST1RPQ09MX05BTUUpIHsKICAgICAgICAg
KytudW1faG9zdF91ZHBfY2FuZGlkYXRlczsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICsrbnVt
X2hvc3RfdGNwX2NhbmRpZGF0ZXM7CiAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChjYW5kaWRhdGUu
dHlwZSgpID09IFNUVU5fUE9SVF9UWVBFKSB7Ci0gICAgICAvLyBGb3IgYSBzcmZseCBjYW5kaWRh
dGUsIHRoZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0byAwLjAuMC4wIG9yCi0gICAg
ICAvLyA6OjAKLSAgICAgIEVYUEVDVF9UUlVFKElQSXNBbnkocmFkZHIuaXBhZGRyKCkpKTsKLSAg
ICAgIEVYUEVDVF9FUShyYWRkci5wb3J0KCksIDApOwotICAgICAgKytudW1fc3JmbHhfY2FuZGlk
YXRlczsKLSAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gUkVMQVlfUE9SVF9UWVBF
KSB7Ci0gICAgICBFWFBFQ1RfRVEoa05hdFVkcEFkZHIuaXBhZGRyKCksIHJhZGRyLmlwYWRkcigp
KTsKLSAgICAgIEVYUEVDVF9FUShrTmF0VWRwQWRkci5mYW1pbHkoKSwgcmFkZHIuZmFtaWx5KCkp
OwotICAgICAgKytudW1fcmVsYXlfY2FuZGlkYXRlczsKICAgICB9IGVsc2UgewotICAgICAgLy8g
cHJmbHggY2FuZGlkYXRlcyBhcmUgbm90IGV4cGVjdGVkCi0gICAgICBGQUlMKCk7CisgICAgICBF
WFBFQ1RfTkUoUFJGTFhfUE9SVF9UWVBFLCBjYW5kaWRhdGUudHlwZSgpKTsKKyAgICAgIC8vIFRo
ZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0byAwLjAuMC4wIG9yIDo6MCBmb3Igc3Jm
bHggYW5kCisgICAgICAvLyByZWxheSBjYW5kaWRhdGVzLgorICAgICAgRVhQRUNUX0VRKHJ0Yzo6
U29ja2V0QWRkcmVzcygpLCBjYW5kaWRhdGUucmVsYXRlZF9hZGRyZXNzKCkpOworICAgICAgaWYg
KGNhbmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUpIHsKKyAgICAgICAgKytudW1fc3Jm
bHhfY2FuZGlkYXRlczsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICsrbnVtX3JlbGF5X2NhbmRp
ZGF0ZXM7CisgICAgICB9CiAgICAgfQogICB9CiAgIEVYUEVDVF9FUSgxLCBudW1faG9zdF91ZHBf
Y2FuZGlkYXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCmluZGV4IGE2YjQ3YzE2ZGVi
YTM4MWU1N2FiZmJmMTIzMDExODE2NWZiMTU4YTEuLjg5NDM1NTgzYjczODExN2FkOWU2YTMzYjRm
NjVlMjg5OGM1M2VmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCkBAIC0zMzE3LDEz
ICszMzE3LDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6U3RhcnRSdGNFdmVudExvZyhydGM6OlBs
YXRmb3JtRmlsZSBmaWxlLAogICBjb25zdCBzaXplX3QgbWF4X3NpemUgPSAobWF4X3NpemVfYnl0
ZXMgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBSdGNFdmVudExvZzo6a1Vu
bGltaXRlZE91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBydGM6OnNhdHVy
YXRlZF9jYXN0PHNpemVfdD4obWF4X3NpemVfYnl0ZXMpOwotICBpbnQ2NF90IG91dHB1dF9wZXJp
b2RfbXMgPSB3ZWJydGM6OlJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0OwotICBpZiAoZmll
bGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVJ0Y0V2ZW50TG9nTmV3Rm9ybWF0IikpIHsKLSAg
ICBvdXRwdXRfcGVyaW9kX21zID0gNTAwMDsKLSAgfQogICByZXR1cm4gU3RhcnRSdGNFdmVudExv
ZygKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oZmlsZSwg
bWF4X3NpemUpLAotICAgICAgb3V0cHV0X3BlcmlvZF9tcyk7CisgICAgICB3ZWJydGM6OlJ0Y0V2
ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0KTsKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6U3Rh
cnRSdGNFdmVudExvZyhzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1dCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYwppbmRleCA0OTA4
NGRlNGQyMDcxN2MyMmRkYzg5MWI3ZWE0NjMyMDRjYjYzYjRjLi4xOTI2MmQ0MjEyMWQ3YjJlODQ0
NTFiMjg0ZDJhZTRkNjE5MDMwYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c19pbnRlZ3JhdGlvbnRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNfaW50
ZWdyYXRpb250ZXN0LmNjCkBAIC04MTMsMTEgKzgxMywxMSBAQCBURVNUX0YoUlRDU3RhdHNJbnRl
Z3JhdGlvblRlc3QsIEdldFN0YXRzV2l0aEludmFsaWRSZWNlaXZlclNlbGVjdG9yKSB7CiAgIEVY
UEVDVF9GQUxTRShyZXBvcnQtPnNpemUoKSk7CiB9CiAKLS8vIFRPRE8oYnVncy53ZWJydGMub3Jn
LzEwMDQxKSBGb3Igbm93IHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nCi0vLyB0
ZXN0IEdldHNTdGF0c1doaWxlQ2xvc2luZ1BlZXJDb25uZWN0aW9uLCBiZWNhdXNlIHBjKCkgaXMg
Y2xvc2VkIGJ5Ci0vLyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyLiBTZWU6IGJ1Z3Mud2VicnRj
Lm9yZy85ODQ3CisvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODQ3KSBSZW1vdmUgdGhpcyB0ZXN0
IGFsdG9nZXRoZXIgaWYgYSBwcm9wZXIgZml4IGNhbm5vdAorLy8gYmUgZm91bmQuIEZvciBub3cg
aXQgaXMgbHlpbmcsIGFzIHdlIGNhbm5vdCBzYWZlbHkgZ2V0cyBzdGF0cyB3aGlsZQorLy8gZGVz
dHJveWluZyBQZWVyQ29ubmVjdGlvbi4KIFRFU1RfRihSVENTdGF0c0ludGVncmF0aW9uVGVzdCwK
LSAgICAgICBESVNBQkxFRF9HZXRTdGF0c1doaWxlRGVzdHJveWluZ1BlZXJDb25uZWN0aW9uKSB7
CisgICAgICAgRElTQUJMRURfR2V0c1N0YXRzV2hpbGVEZXN0cm95aW5nUGVlckNvbm5lY3Rpb24p
IHsKICAgU3RhcnRDYWxsKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPFJUQ1N0YXRzT2J0YWlu
ZXI+IHN0YXRzX29idGFpbmVyID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNv
bm5lY3Rpb250ZXN0d3JhcHBlci5jYwppbmRleCBhMWRiOWVkOWU2ZjMwYzNlMDcyNjk1NDk0ZTA4
YzVhNjhmOWViMDk0Li4wMDEwZWRiMGY4Y2QzNTg3ZjQ3MjRjMjQ1YzljODFjYWE2YWUwMDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90
ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVy
LmNjCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAicGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rp
b25vYnNlcnZlcnMuaCIKICNpbmNsdWRlICJwYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBw
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZF9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIHVzaW5n
IHdlYnJ0Yzo6RmFrZUNvbnN0cmFpbnRzOwpAQCAtNjYsMjAgKzY1LDkgQEAgUGVlckNvbm5lY3Rp
b25UZXN0V3JhcHBlcjo6UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigKICAgICBydGM6OlRocmVh
ZCogd29ya2VyX3RocmVhZCkKICAgICA6IG5hbWVfKG5hbWUpLAogICAgICAgbmV0d29ya190aHJl
YWRfKG5ldHdvcmtfdGhyZWFkKSwKLSAgICAgIHdvcmtlcl90aHJlYWRfKHdvcmtlcl90aHJlYWQp
IHsKLSAgcGNfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKLX0KKyAgICAgIHdv
cmtlcl90aHJlYWRfKHdvcmtlcl90aHJlYWQpIHt9CiAKLVBlZXJDb25uZWN0aW9uVGVzdFdyYXBw
ZXI6On5QZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyKCkgewotICBSVENfRENIRUNLX1JVTl9PTigm
cGNfdGhyZWFkX2NoZWNrZXJfKTsKLSAgLy8gRWl0aGVyIG5ldHdvcmtfdGhyZWFkIG9yIHdvcmtl
cl90aHJlYWQgbWlnaHQgYmUgYWN0aXZlIGF0IHRoaXMgcG9pbnQuCi0gIC8vIFJlbHlpbmcgb24g
flBlZXJDb25uZWN0aW9uIHRvIHByb3Blcmx5IHdhaXQgZm9yIHRoZW0gZG9lc24ndCB3b3JrLAot
ICAvLyBhcyBhIHZwdHIgcmFjZSBtaWdodCBvY2N1ciAoYmVmb3JlIHdlIGVudGVyIHRoZSBkZXN0
cnVjdGlvbiBib2R5KS4KLSAgLy8gU2VlOiBidWdzLndlYnJ0Yy5vcmcvOTg0NwotICBpZiAocGMo
KSkgewotICAgIHBjKCktPkNsb3NlKCk7Ci0gIH0KLX0KK1BlZXJDb25uZWN0aW9uVGVzdFdyYXBw
ZXI6On5QZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyKCkge30KIAogYm9vbCBQZWVyQ29ubmVjdGlv
blRlc3RXcmFwcGVyOjpDcmVhdGVQYygKICAgICBjb25zdCB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjb25maWcsCkBAIC04OCw4ICs3Niw2IEBAIGJv
b2wgUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6Q3JlYXRlUGMoCiAgIHN0ZDo6dW5pcXVlX3B0
cjxjcmlja2V0OjpQb3J0QWxsb2NhdG9yPiBwb3J0X2FsbG9jYXRvcigKICAgICAgIG5ldyBjcmlj
a2V0OjpGYWtlUG9ydEFsbG9jYXRvcihuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIpKTsKIAotICBS
VENfRENIRUNLX1JVTl9PTigmcGNfdGhyZWFkX2NoZWNrZXJfKTsKLQogICBmYWtlX2F1ZGlvX2Nh
cHR1cmVfbW9kdWxlXyA9IEZha2VBdWRpb0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgpOwogICBpZiAo
ZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZV8gPT0gTlVMTCkgewogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmgK
aW5kZXggYjZhNTdmMzVkMzgyMzMxMWJhNWYzZDNkN2Y2NjQ2ZmYwN2QyMDg4OC4uMjFiYTg5YWNi
ZjA3MzA1ODM5YTUxZDUxOThmYWQ0ZGQ4OTExMWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3
cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmgKQEAgLTIwLDcgKzIwLDYgQEAKICNp
bmNsdWRlICJwYy90ZXN0L2Zha2VhdWRpb2NhcHR1cmVtb2R1bGUuaCIKICNpbmNsdWRlICJwYy90
ZXN0L2Zha2V2aWRlb3RyYWNrcmVuZGVyZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9w
YXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tl
ci5oIgogCiBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyCiAgICAgOiBwdWJsaWMgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLApAQCAtMTA3LDcgKzEwNiw2IEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIKICAgc3RkOjpzdHJpbmcgbmFtZV87CiAgIHJ0Yzo6VGhy
ZWFkKiBjb25zdCBuZXR3b3JrX3RocmVhZF87CiAgIHJ0Yzo6VGhyZWFkKiBjb25zdCB3b3JrZXJf
dGhyZWFkXzsKLSAgcnRjOjpUaHJlYWRDaGVja2VyIHBjX3RocmVhZF9jaGVja2VyXzsKICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IHBlZXJfY29u
bmVjdGlvbl87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZT4KICAgICAgIHBlZXJfY29ubmVjdGlvbl9mYWN0b3J5XzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmluZ2l6ZV9tYWNyb3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAppbmRleCAzOGM2ZjE4MzZiZGYzMmI5Njhh
YjVlNTliZDgzZDM0OGMxZmE0MTAxLi5hY2YwYmE0MDRjYTBlNTY1NGVmN2Q5MzczZDgyNGU0Y2Uz
NmZjYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCkBAIC04
LDcgKzgsNyBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLS8vIE1vZGlmaWVkIGZyb20gdGhlIENoeHNyb21p
dW0gb3JpZ2luYWw6CisvLyBNb2RpZmllZCBmcm9tIHRoZSBDaHJvbWl1bSBvcmlnaW5hbDoKIC8v
IHNyYy9iYXNlL3N0cmluZ3Mvc3RyaW5naXplX21hY3Jvcy5oCiAKIC8vIFRoaXMgZmlsZSBkZWZp
bmVzIHByZXByb2Nlc3NvciBtYWNyb3MgZm9yIHN0cmluZ2l6aW5nIHByZXByb2Nlc3NvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0ZGMwMGM5MjMxZDAwZDI0MTJiNjNjODlmMWEwNDg4ODY5M2IyY2I4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvbmFsdV9yZXdyaXRlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzMyAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0K
LSNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvbmFsdV9yZXdyaXRlci5oIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLXVzaW5nIEgyNjQ6OmtTcHM7Ci0KLXN0YXRpYyBjb25zdCB1aW50OF90
IE5BTFVfVEVTVF9EQVRBXzBbXSA9IHsweEFBLCAweEJCLCAweENDfTsKLXN0YXRpYyBjb25zdCB1
aW50OF90IE5BTFVfVEVTVF9EQVRBXzFbXSA9IHsweERFLCAweEFELCAweEJFLCAweEVGfTsKLQot
VEVTVChIMjY0VmlkZW9Ub29sYm94TmFsdVRlc3QsIFRlc3RDcmVhdGVWaWRlb0Zvcm1hdERlc2Ny
aXB0aW9uKSB7Ci0gIGNvbnN0IHVpbnQ4X3Qgc3BzX3Bwc19idWZmZXJbXSA9IHsKLSAgICAgIC8v
IFNQUyBuYWx1LgotICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyNywgMHg0MiwgMHgw
MCwgMHgxRSwgMHhBQiwgMHg0MCwgMHhGMCwgMHgyOCwKLSAgICAgIDB4RDMsIDB4NzAsIDB4MjAs
IDB4MjAsIDB4MjAsIDB4MjAsCi0gICAgICAvLyBQUFMgbmFsdS4KLSAgICAgIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDEsIDB4MjgsIDB4Q0UsIDB4M0MsIDB4MzB9OwotICBDTVZpZGVvRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPQotICAgICAgQ3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlw
dGlvbihzcHNfcHBzX2J1ZmZlciwgYXJyYXlzaXplKHNwc19wcHNfYnVmZmVyKSk7Ci0gIEVYUEVD
VF9UUlVFKGRlc2NyaXB0aW9uKTsKLSAgaWYgKGRlc2NyaXB0aW9uKSB7Ci0gICAgQ0ZSZWxlYXNl
KGRlc2NyaXB0aW9uKTsKLSAgICBkZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gIH0KLQotICBjb25z
dCB1aW50OF90IHNwc19wcHNfbm90X2F0X3N0YXJ0X2J1ZmZlcltdID0gewotICAgICAgLy8gQWRk
IHNvbWUgbm9uLVNQUy9QUFMgTkFMVXMgYXQgdGhlIGJlZ2lubmluZwotICAgICAgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMSwgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMSwKLSAgICAgIDB4QUIsIDB4MzMsIDB4MjEsCi0gICAgICAvLyBTUFMgbmFsdS4KLSAgICAg
IDB4MDAsIDB4MDAsIDB4MDEsIDB4MjcsIDB4NDIsIDB4MDAsIDB4MUUsIDB4QUIsIDB4NDAsIDB4
RjAsIDB4MjgsIDB4RDMsCi0gICAgICAweDcwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAotICAg
ICAgLy8gUFBTIG5hbHUuCi0gICAgICAweDAwLCAweDAwLCAweDAxLCAweDI4LCAweENFLCAweDND
LCAweDMwfTsKLSAgZGVzY3JpcHRpb24gPSBDcmVhdGVWaWRlb0Zvcm1hdERlc2NyaXB0aW9uKAot
ICAgICAgc3BzX3Bwc19ub3RfYXRfc3RhcnRfYnVmZmVyLCBhcnJheXNpemUoc3BzX3Bwc19ub3Rf
YXRfc3RhcnRfYnVmZmVyKSk7Ci0gIEVYUEVDVF9UUlVFKGRlc2NyaXB0aW9uKTsKLSAgaWYgKGRl
c2NyaXB0aW9uKSB7Ci0gICAgQ0ZSZWxlYXNlKGRlc2NyaXB0aW9uKTsKLSAgICBkZXNjcmlwdGlv
biA9IG51bGxwdHI7Ci0gIH0KLQotICBjb25zdCB1aW50OF90IG90aGVyX2J1ZmZlcltdID0gezB4
MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4Mjh9OwotICBFWFBFQ1RfRkFMU0UoCi0gICAgICBDcmVh
dGVWaWRlb0Zvcm1hdERlc2NyaXB0aW9uKG90aGVyX2J1ZmZlciwgYXJyYXlzaXplKG90aGVyX2J1
ZmZlcikpKTsKLX0KLQotVEVTVChBbm5leEJCdWZmZXJSZWFkZXJUZXN0LCBUZXN0UmVhZEVtcHR5
SW5wdXQpIHsKLSAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDB9Owot
ICBBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCAwKTsKLSAgY29u
c3QgdWludDhfdCogbmFsdSA9IG51bGxwdHI7Ci0gIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7Ci0g
IEVYUEVDVF9FUSgwdSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfRkFMU0Uo
cmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKLSAgRVhQRUNUX0VRKG51bGxw
dHIsIG5hbHUpOwotICBFWFBFQ1RfRVEoMHUsIG5hbHVfbGVuZ3RoKTsKLX0KLQotVEVTVChBbm5l
eEJCdWZmZXJSZWFkZXJUZXN0LCBUZXN0UmVhZFNpbmdsZU5hbHUpIHsKLSAgY29uc3QgdWludDhf
dCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QUF9Owot
ICBBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCBhcnJheXNpemUo
YW5uZXhfYl90ZXN0X2RhdGEpKTsKLSAgY29uc3QgdWludDhfdCogbmFsdSA9IG51bGxwdHI7Ci0g
IHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7Ci0gIEVYUEVDVF9FUShhcnJheXNpemUoYW5uZXhfYl90
ZXN0X2RhdGEpLCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9UUlVFKHJlYWRl
ci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7Ci0gIEVYUEVDVF9FUShhbm5leF9iX3Rl
c3RfZGF0YSArIDQsIG5hbHUpOwotICBFWFBFQ1RfRVEoMXUsIG5hbHVfbGVuZ3RoKTsKLSAgRVhQ
RUNUX0VRKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9GQUxTRShyZWFk
ZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOwotICBFWFBFQ1RfRVEobnVsbHB0ciwg
bmFsdSk7Ci0gIEVYUEVDVF9FUSgwdSwgbmFsdV9sZW5ndGgpOwotfQotCi1URVNUKEFubmV4QkJ1
ZmZlclJlYWRlclRlc3QsIFRlc3RSZWFkU2luZ2xlTmFsdTNCeXRlSGVhZGVyKSB7Ci0gIGNvbnN0
IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsweDAwLCAweDAwLCAweDAxLCAweEFBfTsK
LSAgQW5uZXhCQnVmZmVyUmVhZGVyIHJlYWRlcihhbm5leF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXpl
KGFubmV4X2JfdGVzdF9kYXRhKSk7Ci0gIGNvbnN0IHVpbnQ4X3QqIG5hbHUgPSBudWxscHRyOwot
ICBzaXplX3QgbmFsdV9sZW5ndGggPSAwOwotICBFWFBFQ1RfRVEoYXJyYXlzaXplKGFubmV4X2Jf
dGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfVFJVRShyZWFk
ZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOwotICBFWFBFQ1RfRVEoYW5uZXhfYl90
ZXN0X2RhdGEgKyAzLCBuYWx1KTsKLSAgRVhQRUNUX0VRKDF1LCBuYWx1X2xlbmd0aCk7Ci0gIEVY
UEVDVF9FUSgwdSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfRkFMU0UocmVh
ZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIs
IG5hbHUpOwotICBFWFBFQ1RfRVEoMHUsIG5hbHVfbGVuZ3RoKTsKLX0KLQotVEVTVChBbm5leEJC
dWZmZXJSZWFkZXJUZXN0LCBUZXN0UmVhZE1pc3NpbmdOYWx1KSB7Ci0gIC8vIGNsYW5nLWZvcm1h
dCBvZmYKLSAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRn07Ci0g
IC8vIGNsYW5nLWZvcm1hdCBvbgotICBBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2Jf
dGVzdF9kYXRhLCBhcnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpKTsKLSAgY29uc3QgdWludDhf
dCogbmFsdSA9IG51bGxwdHI7Ci0gIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7Ci0gIEVYUEVDVF9F
USgwdSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfRkFMU0UocmVhZGVyLlJl
YWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIG5hbHUp
OwotICBFWFBFQ1RfRVEoMHUsIG5hbHVfbGVuZ3RoKTsKLX0KLQotVEVTVChBbm5leEJCdWZmZXJS
ZWFkZXJUZXN0LCBUZXN0UmVhZE11bHRpcGxlTmFsdXMpIHsKLSAgLy8gY2xhbmctZm9ybWF0IG9m
ZgotICBjb25zdCB1aW50OF90IGFubmV4X2JfdGVzdF9kYXRhW10gPSB7MHgwMCwgMHgwMCwgMHgw
MCwgMHgwMSwgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwg
MHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAs
IDB4MDEsIDB4QUEsIDB4QkJ9OwotICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgQW5uZXhCQnVmZmVy
UmVhZGVyIHJlYWRlcihhbm5leF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXplKGFubmV4X2JfdGVzdF9k
YXRhKSk7Ci0gIGNvbnN0IHVpbnQ4X3QqIG5hbHUgPSBudWxscHRyOwotICBzaXplX3QgbmFsdV9s
ZW5ndGggPSAwOwotICBFWFBFQ1RfRVEoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwgcmVh
ZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfVFJVRShyZWFkZXIuUmVhZE5hbHUoJm5h
bHUsICZuYWx1X2xlbmd0aCkpOwotICBFWFBFQ1RfRVEoYW5uZXhfYl90ZXN0X2RhdGEgKyA0LCBu
YWx1KTsKLSAgRVhQRUNUX0VRKDh1LCBuYWx1X2xlbmd0aCk7Ci0gIEVYUEVDVF9FUSg2dSwgcmVh
ZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwotICBFWFBFQ1RfVFJVRShyZWFkZXIuUmVhZE5hbHUoJm5h
bHUsICZuYWx1X2xlbmd0aCkpOwotICBFWFBFQ1RfRVEoYW5uZXhfYl90ZXN0X2RhdGEgKyAxNiwg
bmFsdSk7Ci0gIEVYUEVDVF9FUSgydSwgbmFsdV9sZW5ndGgpOwotICBFWFBFQ1RfRVEoMHUsIHJl
YWRlci5CeXRlc1JlbWFpbmluZygpKTsKLSAgRVhQRUNUX0ZBTFNFKHJlYWRlci5SZWFkTmFsdSgm
bmFsdSwgJm5hbHVfbGVuZ3RoKSk7Ci0gIEVYUEVDVF9FUShudWxscHRyLCBuYWx1KTsKLSAgRVhQ
RUNUX0VRKDB1LCBuYWx1X2xlbmd0aCk7Ci19Ci0KLVRFU1QoQW5uZXhCQnVmZmVyUmVhZGVyVGVz
dCwgVGVzdEZpbmROZXh0TmFsdU9mVHlwZSkgewotICBjb25zdCB1aW50OF90IG5vdFNwcyA9IDB4
MUY7Ci0gIGNvbnN0IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsKLSAgICAgIDB4MDAs
IDB4MDAsICAgMHgwMCwgMHgwMSwgICBrU3BzLCAweDAwLCAgIDB4MDAsIDB4MDEsIG5vdFNwcywK
LSAgICAgIDB4MDAsIDB4MDAsICAgMHgwMSwgbm90U3BzLCAweERELCAweDAwLCAgIDB4MDAsIDB4
MDEsIG5vdFNwcywKLSAgICAgIDB4RUUsIDB4RkYsICAgMHgwMCwgMHgwMCwgICAweDAwLCAweEZG
LCAgIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgICAweDAxLCAweDAwLCAgIDB4MDAsIDB4MDAsICAg
MHgwMSwga1NwcywgICAweEJCLCAweDAwLCAweDAwLAotICAgICAgMHgwMSwgbm90U3BzLCAweDAw
LCAweDAwLCAgIDB4MDEsIG5vdFNwcywgMHhERCwgMHgwMCwgMHgwMCwKLSAgICAgIDB4MDEsIG5v
dFNwcywgMHhFRSwgMHhGRiwgICAweDAwLCAweDAwLCAgIDB4MDAsIDB4MDF9OwotCi0gIEFubmV4
QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5leF9i
X3Rlc3RfZGF0YSkpOwotICBjb25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKLSAgc2l6ZV90
IG5hbHVfbGVuZ3RoID0gMDsKLSAgRVhQRUNUX0VRKGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0
YSksIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKLSAgRVhQRUNUX1RSVUUocmVhZGVyLkZpbmRO
ZXh0TmFsdU9mVHlwZShrU3BzKSk7Ci0gIEVYUEVDVF9UUlVFKHJlYWRlci5SZWFkTmFsdSgmbmFs
dSwgJm5hbHVfbGVuZ3RoKSk7Ci0gIEVYUEVDVF9FUShhbm5leF9iX3Rlc3RfZGF0YSArIDQsIG5h
bHUpOwotICBFWFBFQ1RfRVEoMXUsIG5hbHVfbGVuZ3RoKTsKLQotICBFWFBFQ1RfVFJVRShyZWFk
ZXIuRmluZE5leHROYWx1T2ZUeXBlKGtTcHMpKTsKLSAgRVhQRUNUX1RSVUUocmVhZGVyLlJlYWRO
YWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKLSAgRVhQRUNUX0VRKGFubmV4X2JfdGVzdF9kYXRh
ICsgMzIsIG5hbHUpOwotICBFWFBFQ1RfRVEoMnUsIG5hbHVfbGVuZ3RoKTsKLQotICBFWFBFQ1Rf
RkFMU0UocmVhZGVyLkZpbmROZXh0TmFsdU9mVHlwZShrU3BzKSk7Ci0gIEVYUEVDVF9GQUxTRShy
ZWFkZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOwotfQotCi1URVNUKEF2Y2NCdWZm
ZXJXcml0ZXJUZXN0LCBUZXN0RW1wdHlPdXRwdXRCdWZmZXIpIHsKLSAgY29uc3QgdWludDhfdCBl
eHBlY3RlZF9idWZmZXJbXSA9IHsweDAwfTsKLSAgY29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0g
MTsKLSAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50OF90W2J1ZmZl
cl9zaXplXSk7Ci0gIG1lbXNldChidWZmZXIuZ2V0KCksIDAsIGJ1ZmZlcl9zaXplKTsKLSAgQXZj
Y0J1ZmZlcldyaXRlciB3cml0ZXIoYnVmZmVyLmdldCgpLCAwKTsKLSAgRVhQRUNUX0VRKDB1LCB3
cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9GQUxTRSh3cml0ZXIuV3JpdGVOYWx1
KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOwotICBFWFBF
Q1RfRVEoMCwKLSAgICAgICAgICAgIG1lbWNtcChleHBlY3RlZF9idWZmZXIsIGJ1ZmZlci5nZXQo
KSwgYXJyYXlzaXplKGV4cGVjdGVkX2J1ZmZlcikpKTsKLX0KLQotVEVTVChBdmNjQnVmZmVyV3Jp
dGVyVGVzdCwgVGVzdFdyaXRlU2luZ2xlTmFsdSkgewotICBjb25zdCB1aW50OF90IGV4cGVjdGVk
X2J1ZmZlcltdID0gewotICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBQSwgMHhCQiwg
MHhDQywKLSAgfTsKLSAgY29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0gYXJyYXlzaXplKE5BTFVf
VEVTVF9EQVRBXzApICsgNDsKLSAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5l
dyB1aW50OF90W2J1ZmZlcl9zaXplXSk7Ci0gIEF2Y2NCdWZmZXJXcml0ZXIgd3JpdGVyKGJ1ZmZl
ci5nZXQoKSwgYnVmZmVyX3NpemUpOwotICBFWFBFQ1RfRVEoYnVmZmVyX3NpemUsIHdyaXRlci5C
eXRlc1JlbWFpbmluZygpKTsKLSAgRVhQRUNUX1RSVUUod3JpdGVyLldyaXRlTmFsdShOQUxVX1RF
U1RfREFUQV8wLCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkpKTsKLSAgRVhQRUNUX0VRKDB1
LCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9GQUxTRSh3cml0ZXIuV3JpdGVO
YWx1KE5BTFVfVEVTVF9EQVRBXzEsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8xKSkpOwotICBF
WFBFQ1RfRVEoMCwKLSAgICAgICAgICAgIG1lbWNtcChleHBlY3RlZF9idWZmZXIsIGJ1ZmZlci5n
ZXQoKSwgYXJyYXlzaXplKGV4cGVjdGVkX2J1ZmZlcikpKTsKLX0KLQotVEVTVChBdmNjQnVmZmVy
V3JpdGVyVGVzdCwgVGVzdFdyaXRlTXVsdGlwbGVOYWx1cykgewotICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCi0gIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7Ci0gICAgICAweDAwLCAw
eDAwLCAweDAwLCAweDAzLCAweEFBLCAweEJCLCAweENDLAotICAgICAgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwNCwgMHhERSwgMHhBRCwgMHhCRSwgMHhFRgotICB9OwotICAvLyBjbGFuZy1mb3JtYXQg
b24KLSAgY29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0KLSAgICAgIGFycmF5c2l6ZShOQUxVX1RF
U1RfREFUQV8wKSArIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8xKSArIDg7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcihuZXcgdWludDhfdFtidWZmZXJfc2l6ZV0pOwotICBB
dmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKLSAgRVhQ
RUNUX0VRKGJ1ZmZlcl9zaXplLCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9U
UlVFKHdyaXRlci5Xcml0ZU5hbHUoTkFMVV9URVNUX0RBVEFfMCwgYXJyYXlzaXplKE5BTFVfVEVT
VF9EQVRBXzApKSk7Ci0gIEVYUEVDVF9FUShidWZmZXJfc2l6ZSAtIChhcnJheXNpemUoTkFMVV9U
RVNUX0RBVEFfMCkgKyA0KSwKLSAgICAgICAgICAgIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsK
LSAgRVhQRUNUX1RSVUUod3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8xLCBhcnJheXNp
emUoTkFMVV9URVNUX0RBVEFfMSkpKTsKLSAgRVhQRUNUX0VRKDB1LCB3cml0ZXIuQnl0ZXNSZW1h
aW5pbmcoKSk7Ci0gIEVYUEVDVF9FUSgwLAotICAgICAgICAgICAgbWVtY21wKGV4cGVjdGVkX2J1
ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOwotfQotCi1U
RVNUKEF2Y2NCdWZmZXJXcml0ZXJUZXN0LCBUZXN0T3ZlcmZsb3cpIHsKLSAgY29uc3QgdWludDhf
dCBleHBlY3RlZF9idWZmZXJbXSA9IHsweDAwLCAweDAwLCAweDAwfTsKLSAgY29uc3Qgc2l6ZV90
IGJ1ZmZlcl9zaXplID0gYXJyYXlzaXplKE5BTFVfVEVTVF9EQVRBXzApOwotICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDhfdFtdPiBidWZmZXIobmV3IHVpbnQ4X3RbYnVmZmVyX3NpemVdKTsKLSAgbWVt
c2V0KGJ1ZmZlci5nZXQoKSwgMCwgYnVmZmVyX3NpemUpOwotICBBdmNjQnVmZmVyV3JpdGVyIHdy
aXRlcihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKLSAgRVhQRUNUX0VRKGJ1ZmZlcl9zaXpl
LCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7Ci0gIEVYUEVDVF9GQUxTRSh3cml0ZXIuV3JpdGVO
YWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOwotICBF
WFBFQ1RfRVEoYnVmZmVyX3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKLSAgRVhQRUNU
X0VRKDAsCi0gICAgICAgICAgICBtZW1jbXAoZXhwZWN0ZWRfYnVmZmVyLCBidWZmZXIuZ2V0KCks
IGFycmF5c2l6ZShleHBlY3RlZF9idWZmZXIpKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9ydHBfcGFja2V0X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfcGFja2V0X2Z1enplci5jYwpp
bmRleCBmNzc0YzBjYjhiMDE4NDM0MzYwMWE4ZjJmZmJjNjIzMDkwMjc5NGQwLi40NjlmYjM2NGQy
YTg1OGZmZjFjNTA2MDBkNzRhY2NiMjliYTU2ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX3BhY2tldF9mdXp6
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6emVyLmNjCkBAIC0xMjEsOSArMTIxLDkgQEAgdm9pZCBG
dXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAgICAg
cGFja2V0LkdldEV4dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigm
ZGVzY3JpcHRvcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgY2FzZSBrUnRwRXh0
ZW5zaW9uQ29sb3JTcGFjZTogewotICAgICAgICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlOwotICAg
ICAgICBwYWNrZXQuR2V0RXh0ZW5zaW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCZjb2xvcl9zcGFj
ZSk7CisgICAgICBjYXNlIGtSdHBFeHRlbnNpb25IZHJNZXRhZGF0YTogeworICAgICAgICBIZHJN
ZXRhZGF0YSBoZHJfbWV0YWRhdGE7CisgICAgICAgIHBhY2tldC5HZXRFeHRlbnNpb248SGRyTWV0
YWRhdGFFeHRlbnNpb24+KCZoZHJfbWV0YWRhdGEpOwogICAgICAgICBicmVhazsKICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVyZi5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1BlcmYuanNvbgppbmRleCA4OGJm
ZTc1MjY0YWQ1NmIyNTUyYWZkMDFiMzRiZmFiOWE5YTRiOWVkLi40Mjg2YzMwNzZlYzY0Yzk2NDBm
MGMxMzFjYzI5OTM0OTY3YWYxNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJy
dGMvaU9TNjRfUGVyZi5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9Q
ZXJmLmpzb24KQEAgLTIzLDYgKzIzLDEyIEBACiAgICAgICAiaW5jbHVkZSI6ICJwZXJmX3Rlc3Rz
Lmpzb24iLAogICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA3IiwKICAgICAgICJvcyI6ICIx
MS40LjEiLAorICAgICAgImRpbWVuc2lvbnMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAib3Mi
OiAiTWFjIiwKKyAgICAgICAgICAicG9vbCI6ICJDaHJvbWUiCisgICAgICAgIH0KKyAgICAgIF0K
ICAgICB9CiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9p
b3NfYXJtNjRfcGVyZi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02
NF9wZXJmLmpzb24KaW5kZXggMGMzMDU4MWRhMWRmMDEwNzZkODhiZjgzOGI1MDdjNDVkYjNlMmM3
Zi4uMDIzMGM3NGE5MmFkMDdkMTU4ZWYwNDg0MjNhNzY5NTM3OGU2ZDIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9p
bnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KQEAgLTIzLDYgKzIz
LDEyIEBACiAgICAgICAiaW5jbHVkZSI6ICJwZXJmX3RyeWJvdF90ZXN0cy5qc29uIiwKICAgICAg
ICJkZXZpY2UgdHlwZSI6ICJpUGhvbmUgNyIsCiAgICAgICAib3MiOiAiMTEuMC4zIiwKKyAgICAg
ICJkaW1lbnNpb25zIjogWworICAgICAgICB7CisgICAgICAgICAgIm9zIjogIk1hYyIsCisgICAg
ICAgICAgInBvb2wiOiAiQ2hyb21lIgorICAgICAgICB9CisgICAgICBdCiAgICAgfQogICBdCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvd2hpdGVzcGFjZS50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvd2hpdGVzcGFjZS50eHQKaW5kZXggNjg1YTg3Njhm
MzFlYjk0YmM3MzAyMjBkMGMxN2I5Yjc3ZjAyZjc1My4uMzc3ZWYyNzBlOGU3Nzc2NjVjNWIwNjM5
MzFjNWJiMzA3ZDI0ZTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3doaXRlc3BhY2UudHh0CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy93aGl0ZXNwYWNl
LnR4dApAQCAtMTMsMyArMTMsNCBAQCBGb28gQmFyIEJheiBCdXIKIAogQWxpb3MgZWdvIHZpZGkg
dmVudG9zOyBhbGlhcyBwcm9zcGV4aSBhbmltbyBwcm9jZWxsYXMKICAgLSBDaWNlcm8KKy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3JlcG9ydF9ibG9ja19zdGF0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmgKaW5kZXggOTBiYWRmNzA4NjJmYzFh
YjcwZDZhNGIxMjk2NzU0OTg4YzQ1MTU3Ny4uZTBhNjljOTA1MmFhZTBiOGJjNGQ3NjQ5NmMwMTg2
MTUwYjFiZjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmgKQEAg
LTE0LDcgKzE0LDYgQEAKICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1f
cmVjZWl2ZXIuY2MKaW5kZXggZmRmMDJmZjMyOWQ3NDFmYWYyODkwODRlMzhhZDhhYTdlNzM4YjQ0
Yi4uMDU3YTExMjY1NjljZWQ2MjM5YjI3MDlhZDllMzM0ZjRlNzRjYjg3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVv
X3N0cmVhbV9yZWNlaXZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmNjCkBAIC01MjksNiAr
NTI5LDE0IEBAIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UmVjZWl2ZVBhY2tldChjb25z
dCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICBWaWRlb1NlbmRUaW1pbmc6OmtJ
bnZhbGlkOwogICB3ZWJydGNfcnRwX2hlYWRlci52aWRlb19oZWFkZXIoKS5pc19sYXN0X3BhY2tl
dF9pbl9mcmFtZSA9CiAgICAgICB3ZWJydGNfcnRwX2hlYWRlci5oZWFkZXIubWFya2VyQml0Owor
ICBpZiAocGFyc2VkX3BheWxvYWQudmlkZW9faGVhZGVyKCkuY29kZWMgPT0ga1ZpZGVvQ29kZWNW
UDkpIHsKKyAgICBjb25zdCBSVFBWaWRlb0hlYWRlclZQOSYgY29kZWNfaGVhZGVyID0gYWJzbDo6
Z2V0PFJUUFZpZGVvSGVhZGVyVlA5PigKKyAgICAgICAgcGFyc2VkX3BheWxvYWQudmlkZW9faGVh
ZGVyKCkudmlkZW9fdHlwZV9oZWFkZXIpOworICAgIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hl
YWRlcigpLmlzX2xhc3RfcGFja2V0X2luX2ZyYW1lIHw9CisgICAgICAgIGNvZGVjX2hlYWRlci5l
bmRfb2ZfZnJhbWU7CisgICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVhZGVyKCkuaXNfZmly
c3RfcGFja2V0X2luX2ZyYW1lIHw9CisgICAgICAgIGNvZGVjX2hlYWRlci5iZWdpbm5pbmdfb2Zf
ZnJhbWU7CisgIH0KIAogICBwYWNrZXQuR2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KAog
ICAgICAgJndlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnJvdGF0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3JlY2VpdmVfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKaW5kZXggYmJhMzNhYTM2M2U4
YTY5NWRhYzZjZjQ0ODBjYmRjNDc3NzYxNTMwMC4uNDU0ZTQxNDU3YTc1MmRkZTBkNDM0NWIwYmQx
NjBlNmEyNjY2NTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJl
YW0uY2MKQEAgLTM3NCwxMCArMzc0LDYgQEAgdm9pZCBWaWRlb1JlY2VpdmVTdHJlYW06OlJlcXVl
c3RLZXlGcmFtZSgpIHsKIAogdm9pZCBWaWRlb1JlY2VpdmVTdHJlYW06Ok9uQ29tcGxldGVGcmFt
ZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8dmlkZW9fY29kaW5nOjpFbmNvZGVkRnJhbWU+IGZyYW1l
KSB7Ci0gIC8vIFRPRE8od2VicnRjOjkyNDkpOiBXb3JrYXJvdW5kIHRvIGFsbG93IGRlY29kaW5n
IG9mIFZQOSBTVkMgc3RyZWFtIHdpdGgKLSAgLy8gcGFydGlhbGx5IGVuYWJsZWQgaW50ZXItbGF5
ZXIgcHJlZGljdGlvbi4KLSAgZnJhbWUtPmlkLnNwYXRpYWxfbGF5ZXIgPSAwOwotCiAgIC8vIFRP
RE8oaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvOTk3NCk6IENvbnNpZGVyIHJlbW92aW5nIHRoaXMg
d29ya2Fyb3VuZC4KICAgaW50NjRfdCB0aW1lX25vd19tcyA9IHJ0Yzo6VGltZU1pbGxpcygpOwog
ICBpZiAobGFzdF9jb21wbGV0ZV9mcmFtZV90aW1lX21zXyA+IDAgJiYK
</data>

          </attachment>
      

    </bug>

</bugzilla>