<?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>230130</bug_id>
          
          <creation_ts>2021-09-09 15:57:42 -0700</creation_ts>
          <short_desc>[JSC] Clean up current state of Temporal API</short_desc>
          <delta_ts>2021-09-10 09:15:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792133</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-09-09 15:57:42 -0700</bug_when>
    <thetext>[JSC] Clean up current state of Temporal API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792141</commentid>
    <comment_count>1</comment_count>
      <attachid>437800</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-09-09 16:17:04 -0700</bug_when>
    <thetext>Created attachment 437800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792158</commentid>
    <comment_count>2</comment_count>
      <attachid>437806</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-09-09 16:50:50 -0700</bug_when>
    <thetext>Created attachment 437806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792208</commentid>
    <comment_count>3</comment_count>
      <attachid>437806</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 19:18:26 -0700</bug_when>
    <thetext>Comment on attachment 437806
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792242</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 22:38:47 -0700</bug_when>
    <thetext>Committed r282259 (241537@main): &lt;https://commits.webkit.org/241537@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437806.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792380</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-10 09:15:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/82975206&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437800</attachid>
            <date>2021-09-09 16:17:04 -0700</date>
            <delta_ts>2021-09-09 16:53:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230130-20210909161703.patch</filename>
            <type>text/plain</type>
            <size>54841</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZjE4MGNlZGY1MmZkMWZmNjlkODE5YjFlMWI5YTcwM2FkM2IzOWE4Li4wZDVmOWUxMTQwZmFmMjVj
NjUzMTJkZTMxNWM5Y2Y4YWFiMzMwOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wOS0wOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQ2xlYW4gdXAgY3VycmVudCBzdGF0ZSBvZiBUZW1wb3Jh
bCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcGVyZm9tcyBhIHZhcmlldHkgb2YgY2xlYW51cCB0YXNrcyBmb2xsb3dpbmcgdGhl
IGltcGxlbWVudGF0aW9uIG9mIFRlbXBvcmFsLlBsYWluVGltZS4KKworICAgICAgICAgIDEuIERv
IGF3YXkgd2l0aCB0aGUgYWxpYXMgU3ViZHVyYXRpb25zIGFuZCByZWZlciB0byBJU084NjAxOjpE
dXJhdGlvbiBkaXJlY3RseS4KKyAgICAgICAgICAgICAoQnV0IHdlIGNhbiBzdGlsbCBzYXkgInN1
YmR1cmF0aW9uIiB3aGVuIHJlZmVycmluZyB0byBhIHNpbmdsZSBvcmRlcmVkIGZpZWxkLCBhcyBp
biBgbGFyZ2VzdFN1YmR1cmF0aW9uYC4pCisgICAgICAgICAgMi4gUmVwcmVzZW50IFRvVGVtcG9y
YWxEdXJhdGlvbiwgVG9UZW1wb3JhbER1cmF0aW9uUmVjb3JkLCBhbmQgVG9MaW1pdGVkVGVtcG9y
YWxEdXJhdGlvbiBtb3JlIGRpcmVjdGx5IGluIGNvZGUsCisgICAgICAgICAgICAgYXMgVGVtcG9y
YWxEdXJhdGlvbjo6e3RvVGVtcG9yYWxEdXJhdGlvbiwgZnJvbUR1cmF0aW9uTGlrZSwgdG9JU084
NjAxRHVyYXRpb259LgorICAgICAgICAgICAgIChOb3RlOiBUaGUgbGFzdCBvZiB0aGVzZSBkb2Vz
bid0IHRha2UgYSBkaXNhbGxvd2VkRmllbGRzIHBhcmFtZXRlcjsKKyAgICAgICAgICAgICAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudCBjYW4gZG8gdGhpcyBhZnRlciB0aGUgZmFjdCwgc2luY2Ugbm8g
b25lIGVsc2UgbWFrZXMgdXNlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eS4pCisgICAgICAgICAgMy4g
RXh0cmFjdCBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4gaW50byBhIGhlbHBlciBmdW5jdGlvbiwg
YHRlbXBvcmFsUm91bmRpbmdNb2RlYC4KKyAgICAgICAgICA0LiBSZW1vdmUgbGFyZ2VzdFN1YnBs
YWluVGltZSgpLCB3aGljaCB3YXMgZGVjbGFyZWQgYnV0IG5vdCBkZWZpbmVkLgorICAgICAgICAg
IDUuIENvcnJlY3Qgc3BlbGxpbmcgb2YgVGVtcG9yYWxQbGFpblRpbWU6OmNvbnN0cmFpblRpbWUo
KS4KKworICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVy
YXRpb246OlRlbXBvcmFsRHVyYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJv
bUR1cmF0aW9uTGlrZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0
b0lTTzg2MDFEdXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0b1RlbXBvcmFsRHVyYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJh
dGlvbjo6ZnJvbSk6CisgICAgICAgIChKU0M6OnRvdGFsTmFub3NlY29uZHMpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbER1cmF0aW9uOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxE
dXJhdGlvbjo6c2lnbik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OndpdGggY29u
c3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpuZWdhdGVkIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6YWJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
bGFyZ2VzdFN1YmR1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OmJhbGFuY2UpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjphZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpzdWJ0cmFjdCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnJvdW5kKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxEdXJhdGlvbjo6cm91bmQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0b3RhbCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tTm9uRHVyYXRpb25WYWx1ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uUmVjb3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6bGFyZ2VzdFN1YmR1cmF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dGVtcG9yYWxSb3VuZGlu
Z01vZGUpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5U
aW1lOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OmNvbnN0cmFpblRpbWUpOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6cmVndWxhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpz
dWJ0cmFjdCBjb25zdCk6CisgICAgICAgIChKU0M6OmV4dHJhY3REaWZmZXJlbmNlT3B0aW9ucyk6
CisgICAgICAgIChKU0M6OmNvbnN0cmFpbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
dG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5oOgorCiAyMDIxLTA5LTA5ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KIAogICAgICAgICBydW4td2Via2l0LWFyY2hpdmUgY3Jhc2hlcyB3aXRoIGR5
bGQgZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAKaW5kZXggMWMxMDA1ODcyMjFlMzJjNzYzZDQzYmU3NjgyMWYwYmZlZWIzZWE0
Ny4uNTY1ZDdiMDIyOGJhYWE1MzA0NDNjZWY2ZDZlN2NlZTMxOWJkZGU4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKQEAgLTQ4
LDkgKzQ4LDkgQEAgc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1bnNp
Z25lZCBpbmRleCkKIAogY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsRHVyYXRpb246OnNfaW5mbyA9
IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoVGVtcG9yYWxEdXJhdGlvbikgfTsKIAotVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9y
YWxEdXJhdGlvbjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN1YmR1cmF0
aW9ucyYmIHN1YmR1cmF0aW9ucykKK1RlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpEdXJhdGlvbiYm
IGR1cmF0aW9uKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsRHVyYXRpb24+KHZtLmhlYXApKSBUZW1wb3JhbER1cmF0aW9uKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoc3ViZHVyYXRpb25zKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxEdXJhdGlvbj4odm0uaGVhcCkpIFRlbXBvcmFs
RHVyYXRpb24odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlvbikpOwogICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkBAIC02MCw5ICs2MCw5
IEBAIFN0cnVjdHVyZSogVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1UZW1wb3JhbER1cmF0aW9uOjpUZW1wb3JhbER1cmF0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN1YmR1cmF0aW9ucyYmIHN1YmR1cmF0
aW9ucykKK1RlbXBvcmFsRHVyYXRpb246OlRlbXBvcmFsRHVyYXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fc3ViZHVyYXRpb25zKFdURk1vdmUoc3ViZHVyYXRpb25z
KSkKKyAgICAsIG1fZHVyYXRpb24oV1RGTW92ZShkdXJhdGlvbikpCiB7CiB9CiAKQEAgLTc0LDMy
ICs3NCwzMyBAQCB2b2lkIFRlbXBvcmFsRHVyYXRpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IAogLy8gQ3JlYXRlVGVtcG9yYWxEdXJhdGlvbiAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlz
LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5h
bm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3JhbGR1cmF0aW9uCi1UZW1wb3JhbER1
cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN1YmR1cmF0aW9ucyYmIHN1YmR1cmF0aW9ucywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCitUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJ
ZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYg
ZHVyYXRpb24sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJhdGlvbihzdWJkdXJhdGlvbnMpKSB7CisgICAg
aWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7CiAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVy
dGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0
dXJlKCksIFdURk1vdmUoc3ViZHVyYXRpb25zKSk7CisgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRp
b246OmNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5kdXJh
dGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKGR1cmF0aW9uKSk7CiB9CiAKIC8vIFRvVGVtcG9yYWxE
dXJhdGlvblJlY29yZCAoIHRlbXBvcmFsRHVyYXRpb25MaWtlICkKIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxkdXJhdGlvbnJlY29y
ZAotVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246OmZyb21O
b25EdXJhdGlvblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZHVy
YXRpb25MaWtlKQorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0
aW9uTGlrZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZHVyYXRpb25M
aWtlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBBU1NFUlQoIWR1cmF0aW9uTGlrZS5p
bmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkpOworICAgIGlmIChkdXJhdGlvbkxpa2UtPmlu
aGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZtKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1w
b3JhbER1cmF0aW9uKj4oZHVyYXRpb25MaWtlKS0+bV9kdXJhdGlvbjsKIAotICAgIFN1YmR1cmF0
aW9ucyByZXN1bHQ7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1dG8gaGFz
UmVsZXZhbnRQcm9wZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
YmVyT2ZUZW1wb3JhbFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0
aW9uTGlrZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUodm0sIGkpKTsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKHZtLCBpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyNSw0MyArMTI2LDUyIEBA
IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpmcm9tTm9u
RHVyYXRpb25WYWx1ZShKU0dsb2JhbE9iCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gVG9U
ZW1wb3JhbER1cmF0aW9uICggaXRlbSApCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsZHVyYXRpb24KLVRlbXBvcmFsRHVyYXRpb24q
IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUpCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVt
cG9yYWxEdXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlv
bgorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxEdXJh
dGlvbj4odm0pKQotICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPihpdGVt
VmFsdWUpOwotCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb247CiAgICAgaWYgKGl0ZW1W
YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIGF1dG8gc3ViZHVyYXRpb25zID0gZnJvbU5vbkR1
cmF0aW9uVmFsdWUoZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgZHVyYXRpb24gPSBmcm9tRHVyYXRp
b25MaWtlKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoaXRlbVZhbHVlKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU3RyaW5n
IHN0cmluZyA9IGl0ZW1WYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoc3ViZHVyYXRpb25zKSkpOwotICAgIH0KKyAgICAgICAgYXV0byBwYXJzZWRE
dXJhdGlvbiA9IElTTzg2MDE6OnBhcnNlRHVyYXRpb24oc3RyaW5nKTsKKyAgICAgICAgaWYgKCFw
YXJzZWREdXJhdGlvbikgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDb3VsZCBub3QgcGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIH0KIAotICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKyAgICAgICAgZHVyYXRpb24gPSBwYXJzZWREdXJhdGlvbi52YWx1ZSgp
OworICAgIH0KIAotICAgIGF1dG8gcGFyc2VkU3ViZHVyYXRpb25zID0gSVNPODYwMTo6cGFyc2VE
dXJhdGlvbihzdHJpbmcpOwotICAgIGlmICghcGFyc2VkU3ViZHVyYXRpb25zKSB7Ci0gICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ291bGQgbm90IHBhcnNlIER1
cmF0aW9uIHN0cmluZyJfcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghSVNP
ODYwMTo6aXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVz
dCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0
aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJkdXJh
dGlvbnMudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKLVRlbXBvcmFsRHVy
YXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uUmVjb3JkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2Up
CisvLyBUb1RlbXBvcmFsRHVyYXRpb24gKCBpdGVtICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxkdXJhdGlvbgorVGVtcG9yYWxE
dXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAodGVtcG9yYWxEdXJhdGlvbkxpa2UuaW5oZXJpdHM8VGVtcG9yYWxEdXJh
dGlvbj4odm0pKQotICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih0ZW1w
b3JhbER1cmF0aW9uTGlrZSktPnN1YmR1cmF0aW9ucygpOworICAgIGlmIChpdGVtVmFsdWUuaW5o
ZXJpdHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBv
cmFsRHVyYXRpb24qPihpdGVtVmFsdWUpOworCisgICAgYXV0byByZXN1bHQgPSB0b0lTTzg2MDFE
dXJhdGlvbihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gZnJvbU5vbkR1cmF0aW9uVmFsdWUoZ2xv
YmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSk7CisgICAgcmV0dXJuIFRlbXBvcmFsRHVy
YXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZN
b3ZlKHJlc3VsdCkpOwogfQogCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpm
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQpAQCAt
MTY5LDIzICsxNzksMjMgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6ZnJv
bShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGkKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFs
RHVyYXRpb24+KHZtKSkgewotICAgICAgICBTdWJkdXJhdGlvbnMgY2xvbmVkID0ganNDYXN0PFRl
bXBvcmFsRHVyYXRpb24qPihpdGVtVmFsdWUpLT5tX3N1YmR1cmF0aW9uczsKKyAgICAgICAgSVNP
ODYwMTo6RHVyYXRpb24gY2xvbmVkID0ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPihpdGVtVmFs
dWUpLT5tX2R1cmF0aW9uOwogICAgICAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUoY2xvbmVkKSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHRvRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUp
OworICAgIHJldHVybiB0b1RlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUp
OwogfQogCiAvLyBUb3RhbER1cmF0aW9uTmFub3NlY29uZHMgKCBkYXlzLCBob3VycywgbWludXRl
cywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzLCBvZmZz
ZXRTaGlmdCApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC10b3RhbGR1cmF0aW9ubmFub3NlY29uZHMKLXN0YXRpYyBkb3VibGUgdG90YWxOYW5vc2Vj
b25kcyhUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucykKK3N0YXRp
YyBkb3VibGUgdG90YWxOYW5vc2Vjb25kcyhJU084NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24pCiB7
Ci0gICAgYXV0byBob3VycyA9IDI0ICogc3ViZHVyYXRpb25zLmRheXMoKSArIHN1YmR1cmF0aW9u
cy5ob3VycygpOwotICAgIGF1dG8gbWludXRlcyA9IDYwICogaG91cnMgKyBzdWJkdXJhdGlvbnMu
bWludXRlcygpOwotICAgIGF1dG8gc2Vjb25kcyA9IDYwICogbWludXRlcyArIHN1YmR1cmF0aW9u
cy5zZWNvbmRzKCk7Ci0gICAgYXV0byBtaWxsaXNlY29uZHMgPSAxMDAwICogc2Vjb25kcyArIHN1
YmR1cmF0aW9ucy5taWxsaXNlY29uZHMoKTsKLSAgICBhdXRvIG1pY3Jvc2Vjb25kcyA9IDEwMDAg
KiBtaWxsaXNlY29uZHMgKyBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCk7Ci0gICAgcmV0dXJu
IDEwMDAgKiBtaWNyb3NlY29uZHMgKyBzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKTsKKyAgICBh
dXRvIGhvdXJzID0gMjQgKiBkdXJhdGlvbi5kYXlzKCkgKyBkdXJhdGlvbi5ob3VycygpOworICAg
IGF1dG8gbWludXRlcyA9IDYwICogaG91cnMgKyBkdXJhdGlvbi5taW51dGVzKCk7CisgICAgYXV0
byBzZWNvbmRzID0gNjAgKiBtaW51dGVzICsgZHVyYXRpb24uc2Vjb25kcygpOworICAgIGF1dG8g
bWlsbGlzZWNvbmRzID0gMTAwMCAqIHNlY29uZHMgKyBkdXJhdGlvbi5taWxsaXNlY29uZHMoKTsK
KyAgICBhdXRvIG1pY3Jvc2Vjb25kcyA9IDEwMDAgKiBtaWxsaXNlY29uZHMgKyBkdXJhdGlvbi5t
aWNyb3NlY29uZHMoKTsKKyAgICByZXR1cm4gMTAwMCAqIG1pY3Jvc2Vjb25kcyArIGR1cmF0aW9u
Lm5hbm9zZWNvbmRzKCk7CiB9CiAKIEpTVmFsdWUgVGVtcG9yYWxEdXJhdGlvbjo6Y29tcGFyZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlT25lLCBKU1ZhbHVlIHZh
bHVlVHdvKQpAQCAtMTkzLDEwICsyMDMsMTAgQEAgSlNWYWx1ZSBUZW1wb3JhbER1cmF0aW9uOjpj
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWVPbmUKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogb25lID0gdG9EdXJhdGlvbihnbG9iYWxPYmpl
Y3QsIHZhbHVlT25lKTsKKyAgICBhdXRvKiBvbmUgPSB0b1RlbXBvcmFsRHVyYXRpb24oZ2xvYmFs
T2JqZWN0LCB2YWx1ZU9uZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAotICAgIGF1dG8qIHR3byA9IHRvRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB2YWx1ZVR3byk7Cisg
ICAgYXV0byogdHdvID0gdG9UZW1wb3JhbER1cmF0aW9uKGdsb2JhbE9iamVjdCwgdmFsdWVUd28p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHJlbGF0aXZlVG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25l
ZERhdGVUaW1lLgpAQCAtMjA1LDE0ICsyMTUsMTQgQEAgSlNWYWx1ZSBUZW1wb3JhbER1cmF0aW9u
Ojpjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWVPbmUK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBhdXRvIG5zT25lID0gdG90YWxOYW5v
c2Vjb25kcyhvbmUtPm1fc3ViZHVyYXRpb25zKTsKLSAgICBhdXRvIG5zVHdvID0gdG90YWxOYW5v
c2Vjb25kcyh0d28tPm1fc3ViZHVyYXRpb25zKTsKKyAgICBhdXRvIG5zT25lID0gdG90YWxOYW5v
c2Vjb25kcyhvbmUtPm1fZHVyYXRpb24pOworICAgIGF1dG8gbnNUd28gPSB0b3RhbE5hbm9zZWNv
bmRzKHR3by0+bV9kdXJhdGlvbik7CiAgICAgcmV0dXJuIGpzTnVtYmVyKG5zT25lID4gbnNUd28g
PyAxIDogbnNPbmUgPCBuc1R3byA/IC0xIDogMCk7CiB9CiAKLWludCBUZW1wb3JhbER1cmF0aW9u
OjpzaWduKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25z
KQoraW50IFRlbXBvcmFsRHVyYXRpb246OnNpZ24oY29uc3QgSVNPODYwMTo6RHVyYXRpb24mIGR1
cmF0aW9uKQogewotICAgIGZvciAoYXV0byB2YWx1ZSA6IHN1YmR1cmF0aW9ucykgeworICAgIGZv
ciAoYXV0byB2YWx1ZSA6IGR1cmF0aW9uKSB7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTIyMywxOSArMjMzLDE5IEBAIGludCBUZW1wb3JhbER1
cmF0aW9uOjpzaWduKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVy
YXRpb25zKQogICAgIHJldHVybiAwOwogfQogCi1UZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlv
bnMgVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZHVyYXRpb25MaWtlKSBjb25zdAorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxE
dXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZHVy
YXRpb25MaWtlKSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdWJkdXJhdGlv
bnMgcmVzdWx0OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1Jl
bGV2YW50UHJvcGVydHkgPSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mVGVtcG9yYWxVbml0czsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlv
bkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh2YWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBtX3N1YmR1cmF0aW9uc1tpXTsK
KyAgICAgICAgICAgIHJlc3VsdFtpXSA9IG1fZHVyYXRpb25baV07CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC0yNTcsNDEgKzI2NywzOCBAQCBUZW1wb3JhbER1cmF0aW9u
OjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlbXBvcmFsRHVyYXRpb246OlN1YmR1
cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpuZWdhdGVkKCkgY29uc3QKK0lTTzg2MDE6OkR1cmF0
aW9uIFRlbXBvcmFsRHVyYXRpb246Om5lZ2F0ZWQoKSBjb25zdAogewotICAgIFN1YmR1cmF0aW9u
cyByZXN1bHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHM7IGkrKykKLSAgICAgICAgcmVzdWx0W2ldID0gLW1fc3ViZHVyYXRpb25zW2ldOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIC1tX2R1cmF0aW9uOwogfQogCi1UZW1wb3JhbER1cmF0
aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6YWJzKCkgY29uc3QKK0lTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OmFicygpIGNvbnN0CiB7Ci0gICAgU3ViZHVyYXRp
b25zIHJlc3VsdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQ7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGkrKykKLSAgICAgICAgcmVzdWx0
W2ldID0gc3RkOjphYnMobV9zdWJkdXJhdGlvbnNbaV0pOworICAgICAgICByZXN1bHRbaV0gPSBz
dGQ6OmFicyhtX2R1cmF0aW9uW2ldKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBEZWZh
dWx0VGVtcG9yYWxMYXJnZXN0VW5pdCAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMgKQogLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZGVmYXVsdHRlbXBv
cmFsbGFyZ2VzdHVuaXQKLVRlbXBvcmFsVW5pdCBUZW1wb3JhbER1cmF0aW9uOjpsYXJnZXN0U3Vi
ZHVyYXRpb24oKSBjb25zdAorc3RhdGljIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3ViZHVyYXRpb24o
Y29uc3QgSVNPODYwMTo6RHVyYXRpb24mIGR1cmF0aW9uKQogewogICAgIHVpbnQ4X3QgaW5kZXgg
PSAwOwotICAgIHdoaWxlIChpbmRleCA8IG51bWJlck9mVGVtcG9yYWxVbml0cyAtIDEgJiYgIW1f
c3ViZHVyYXRpb25zW2luZGV4XSkKKyAgICB3aGlsZSAoaW5kZXggPCBudW1iZXJPZlRlbXBvcmFs
VW5pdHMgLSAxICYmICFkdXJhdGlvbltpbmRleF0pCiAgICAgICAgIGluZGV4Kys7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFRlbXBvcmFsVW5pdD4oaW5kZXgpOwogfQogCiAvLyBCYWxhbmNlRHVy
YXRpb24gKCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNy
b3NlY29uZHMsIG5hbm9zZWNvbmRzLCBsYXJnZXN0VW5pdCBbICwgcmVsYXRpdmVUbyBdICkKIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWJhbGFuY2Vk
dXJhdGlvbgotdm9pZCBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKFN1YmR1cmF0aW9ucyYgc3Vi
ZHVyYXRpb25zLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpCit2b2lkIFRlbXBvcmFsRHVyYXRp
b246OmJhbGFuY2UoSVNPODYwMTo6RHVyYXRpb24mIGR1cmF0aW9uLCBUZW1wb3JhbFVuaXQgbGFy
Z2VzdFVuaXQpCiB7Ci0gICAgYXV0byBuYW5vc2Vjb25kcyA9IHRvdGFsTmFub3NlY29uZHMoc3Vi
ZHVyYXRpb25zKTsKLSAgICBzdWJkdXJhdGlvbnMuY2xlYXIoKTsKKyAgICBhdXRvIG5hbm9zZWNv
bmRzID0gdG90YWxOYW5vc2Vjb25kcyhkdXJhdGlvbik7CisgICAgZHVyYXRpb24uY2xlYXIoKTsK
IAogICAgIGlmIChsYXJnZXN0VW5pdCA8PSBUZW1wb3JhbFVuaXQ6OkRheSkgewotICAgICAgICBz
dWJkdXJhdGlvbnMuc2V0RGF5cyhzdGQ6OnRydW5jKG5hbm9zZWNvbmRzIC8gbmFub3NlY29uZHNQ
ZXJEYXkpKTsKKyAgICAgICAgZHVyYXRpb24uc2V0RGF5cyhzdGQ6OnRydW5jKG5hbm9zZWNvbmRz
IC8gbmFub3NlY29uZHNQZXJEYXkpKTsKICAgICAgICAgbmFub3NlY29uZHMgPSBzdGQ6OmZtb2Qo
bmFub3NlY29uZHMsIG5hbm9zZWNvbmRzUGVyRGF5KTsKICAgICB9CiAKQEAgLTMwMCw3OCArMzA3
LDc4IEBAIHZvaWQgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShTdWJkdXJhdGlvbnMmIHN1YmR1
cmF0aW9ucywgVGVtcG9yYWxVbml0IGxhcmdlc3RVCiAgICAgZG91YmxlIHNlY29uZHMgPSBzdGQ6
OnRydW5jKG1pbGxpc2Vjb25kcyAvIDEwMDApOwogICAgIGRvdWJsZSBtaW51dGVzID0gc3RkOjp0
cnVuYyhzZWNvbmRzIC8gNjApOwogICAgIGlmIChsYXJnZXN0VW5pdCA8PSBUZW1wb3JhbFVuaXQ6
OkhvdXIpIHsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChu
YW5vc2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TWljcm9zZWNvbmRz
KHN0ZDo6Zm1vZChtaWNyb3NlY29uZHMsIDEwMDApKTsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNl
dE1pbGxpc2Vjb25kcyhzdGQ6OmZtb2QobWlsbGlzZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1
YmR1cmF0aW9ucy5zZXRTZWNvbmRzKHN0ZDo6Zm1vZChzZWNvbmRzLCA2MCkpOwotICAgICAgICBz
dWJkdXJhdGlvbnMuc2V0TWludXRlcyhzdGQ6OmZtb2QobWludXRlcywgNjApKTsKLSAgICAgICAg
c3ViZHVyYXRpb25zLnNldEhvdXJzKHN0ZDo6dHJ1bmMobWludXRlcyAvIDYwKSk7CisgICAgICAg
IGR1cmF0aW9uLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChuYW5vc2Vjb25kcywgMTAwMCkpOwor
ICAgICAgICBkdXJhdGlvbi5zZXRNaWNyb3NlY29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywg
MTAwMCkpOworICAgICAgICBkdXJhdGlvbi5zZXRNaWxsaXNlY29uZHMoc3RkOjpmbW9kKG1pbGxp
c2Vjb25kcywgMTAwMCkpOworICAgICAgICBkdXJhdGlvbi5zZXRTZWNvbmRzKHN0ZDo6Zm1vZChz
ZWNvbmRzLCA2MCkpOworICAgICAgICBkdXJhdGlvbi5zZXRNaW51dGVzKHN0ZDo6Zm1vZChtaW51
dGVzLCA2MCkpOworICAgICAgICBkdXJhdGlvbi5zZXRIb3VycyhzdGQ6OnRydW5jKG1pbnV0ZXMg
LyA2MCkpOwogICAgIH0gZWxzZSBpZiAobGFyZ2VzdFVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51
dGUpIHsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChuYW5v
c2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TWljcm9zZWNvbmRzKHN0
ZDo6Zm1vZChtaWNyb3NlY29uZHMsIDEwMDApKTsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldE1p
bGxpc2Vjb25kcyhzdGQ6OmZtb2QobWlsbGlzZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1
cmF0aW9ucy5zZXRTZWNvbmRzKHN0ZDo6Zm1vZChzZWNvbmRzLCA2MCkpOwotICAgICAgICBzdWJk
dXJhdGlvbnMuc2V0TWludXRlcyhtaW51dGVzKTsKKyAgICAgICAgZHVyYXRpb24uc2V0TmFub3Nl
Y29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNl
dE1pY3Jvc2Vjb25kcyhzdGQ6OmZtb2QobWljcm9zZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1
cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhzdGQ6OmZtb2QobWlsbGlzZWNvbmRzLCAxMDAwKSk7Cisg
ICAgICAgIGR1cmF0aW9uLnNldFNlY29uZHMoc3RkOjpmbW9kKHNlY29uZHMsIDYwKSk7CisgICAg
ICAgIGR1cmF0aW9uLnNldE1pbnV0ZXMobWludXRlcyk7CiAgICAgfSBlbHNlIGlmIChsYXJnZXN0
VW5pdCA9PSBUZW1wb3JhbFVuaXQ6OlNlY29uZCkgewotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0
TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1
cmF0aW9ucy5zZXRNaWNyb3NlY29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywgMTAwMCkpOwot
ICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TWlsbGlzZWNvbmRzKHN0ZDo6Zm1vZChtaWxsaXNlY29u
ZHMsIDEwMDApKTsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldFNlY29uZHMoc2Vjb25kcyk7Cisg
ICAgICAgIGR1cmF0aW9uLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChuYW5vc2Vjb25kcywgMTAw
MCkpOworICAgICAgICBkdXJhdGlvbi5zZXRNaWNyb3NlY29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vj
b25kcywgMTAwMCkpOworICAgICAgICBkdXJhdGlvbi5zZXRNaWxsaXNlY29uZHMoc3RkOjpmbW9k
KG1pbGxpc2Vjb25kcywgMTAwMCkpOworICAgICAgICBkdXJhdGlvbi5zZXRTZWNvbmRzKHNlY29u
ZHMpOwogICAgIH0gZWxzZSBpZiAobGFyZ2VzdFVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaWxsaXNl
Y29uZCkgewotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMoc3RkOjpmbW9kKG5h
bm9zZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaWNyb3NlY29uZHMo
c3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0
TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcyk7CisgICAgICAgIGR1cmF0aW9uLnNldE5hbm9zZWNv
bmRzKHN0ZDo6Zm1vZChuYW5vc2Vjb25kcywgMTAwMCkpOworICAgICAgICBkdXJhdGlvbi5zZXRN
aWNyb3NlY29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywgMTAwMCkpOworICAgICAgICBkdXJh
dGlvbi5zZXRNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTsKICAgICB9IGVsc2UgaWYgKGxhcmdl
c3RVbml0ID09IFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQpIHsKLSAgICAgICAgc3ViZHVyYXRp
b25zLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChuYW5vc2Vjb25kcywgMTAwMCkpOwotICAgICAg
ICBzdWJkdXJhdGlvbnMuc2V0TWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAgICAgIGR1
cmF0aW9uLnNldE5hbm9zZWNvbmRzKHN0ZDo6Zm1vZChuYW5vc2Vjb25kcywgMTAwMCkpOworICAg
ICAgICBkdXJhdGlvbi5zZXRNaWNyb3NlY29uZHMobWljcm9zZWNvbmRzKTsKICAgICB9IGVsc2UK
LSAgICAgICAgc3ViZHVyYXRpb25zLnNldE5hbm9zZWNvbmRzKG5hbm9zZWNvbmRzKTsKKyAgICAg
ICAgZHVyYXRpb24uc2V0TmFub3NlY29uZHMobmFub3NlY29uZHMpOwogfQogCi1UZW1wb3JhbER1
cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6YWRkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3RoZXJWYWx1ZSkgY29uc3QKK0lTTzg2MDE6OkR1cmF0
aW9uIFRlbXBvcmFsRHVyYXRpb246OmFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG90aGVyVmFsdWUpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIG90aGVyID0gdG9EdXJhdGlvbihnbG9iYWxPYmplY3QsIG90aGVyVmFsdWUpOworICAgIGF1
dG8gb3RoZXIgPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIG90aGVyVmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHJlbGF0aXZlVG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERh
dGVUaW1lLgotICAgIGF1dG8gbGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRp
b24oKSwgb3RoZXItPmxhcmdlc3RTdWJkdXJhdGlvbigpKTsKKyAgICBhdXRvIGxhcmdlc3RVbml0
ID0gc3RkOjptaW4obGFyZ2VzdFN1YmR1cmF0aW9uKG1fZHVyYXRpb24pLCBsYXJnZXN0U3ViZHVy
YXRpb24ob3RoZXIpKTsKICAgICBpZiAobGFyZ2VzdFVuaXQgPD0gVGVtcG9yYWxVbml0OjpXZWVr
KSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IGFkZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxh
dGl2ZVRvIG9wdGlvbiJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgU3Vi
ZHVyYXRpb25zIHJlc3VsdCB7Ci0gICAgICAgIDAsIDAsIDAsIGRheXMoKSArIG90aGVyLT5kYXlz
KCksCi0gICAgICAgIGhvdXJzKCkgKyBvdGhlci0+aG91cnMoKSwgbWludXRlcygpICsgb3RoZXIt
Pm1pbnV0ZXMoKSwgc2Vjb25kcygpICsgb3RoZXItPnNlY29uZHMoKSwKLSAgICAgICAgbWlsbGlz
ZWNvbmRzKCkgKyBvdGhlci0+bWlsbGlzZWNvbmRzKCksIG1pY3Jvc2Vjb25kcygpICsgb3RoZXIt
Pm1pY3Jvc2Vjb25kcygpLCBuYW5vc2Vjb25kcygpICsgb3RoZXItPm5hbm9zZWNvbmRzKCkKKyAg
ICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgeworICAgICAgICAwLCAwLCAwLCBkYXlzKCkgKyBv
dGhlci5kYXlzKCksCisgICAgICAgIGhvdXJzKCkgKyBvdGhlci5ob3VycygpLCBtaW51dGVzKCkg
KyBvdGhlci5taW51dGVzKCksIHNlY29uZHMoKSArIG90aGVyLnNlY29uZHMoKSwKKyAgICAgICAg
bWlsbGlzZWNvbmRzKCkgKyBvdGhlci5taWxsaXNlY29uZHMoKSwgbWljcm9zZWNvbmRzKCkgKyBv
dGhlci5taWNyb3NlY29uZHMoKSwgbmFub3NlY29uZHMoKSArIG90aGVyLm5hbm9zZWNvbmRzKCkK
ICAgICB9OwogCiAgICAgYmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1UZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJh
dGlvbjo6c3VidHJhY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdGhl
clZhbHVlKSBjb25zdAorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6c3VidHJh
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdGhlclZhbHVlKSBjb25z
dAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBvdGhlciA9IHRvRHVyYXRpb24o
Z2xvYmFsT2JqZWN0LCBvdGhlclZhbHVlKTsKKyAgICBhdXRvIG90aGVyID0gdG9JU084NjAxRHVy
YXRpb24oZ2xvYmFsT2JqZWN0LCBvdGhlclZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFt
ZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9uZWREYXRlVGltZS4KLSAgICBhdXRvIGxhcmdl
c3RVbml0ID0gc3RkOjptaW4obGFyZ2VzdFN1YmR1cmF0aW9uKCksIG90aGVyLT5sYXJnZXN0U3Vi
ZHVyYXRpb24oKSk7CisgICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6bWluKGxhcmdlc3RTdWJk
dXJhdGlvbihtX2R1cmF0aW9uKSwgbGFyZ2VzdFN1YmR1cmF0aW9uKG90aGVyKSk7CiAgICAgaWYg
KGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewogICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdWJ0cmFjdCBhIGR1cmF0aW9uIG9m
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgU3ViZHVyYXRpb25zIHJlc3VsdCB7
Ci0gICAgICAgIDAsIDAsIDAsIGRheXMoKSAtIG90aGVyLT5kYXlzKCksCi0gICAgICAgIGhvdXJz
KCkgLSBvdGhlci0+aG91cnMoKSwgbWludXRlcygpIC0gb3RoZXItPm1pbnV0ZXMoKSwgc2Vjb25k
cygpIC0gb3RoZXItPnNlY29uZHMoKSwKLSAgICAgICAgbWlsbGlzZWNvbmRzKCkgLSBvdGhlci0+
bWlsbGlzZWNvbmRzKCksIG1pY3Jvc2Vjb25kcygpIC0gb3RoZXItPm1pY3Jvc2Vjb25kcygpLCBu
YW5vc2Vjb25kcygpIC0gb3RoZXItPm5hbm9zZWNvbmRzKCkKKyAgICBJU084NjAxOjpEdXJhdGlv
biByZXN1bHQgeworICAgICAgICAwLCAwLCAwLCBkYXlzKCkgLSBvdGhlci5kYXlzKCksCisgICAg
ICAgIGhvdXJzKCkgLSBvdGhlci5ob3VycygpLCBtaW51dGVzKCkgLSBvdGhlci5taW51dGVzKCks
IHNlY29uZHMoKSAtIG90aGVyLnNlY29uZHMoKSwKKyAgICAgICAgbWlsbGlzZWNvbmRzKCkgLSBv
dGhlci5taWxsaXNlY29uZHMoKSwgbWljcm9zZWNvbmRzKCkgLSBvdGhlci5taWNyb3NlY29uZHMo
KSwgbmFub3NlY29uZHMoKSAtIG90aGVyLm5hbm9zZWNvbmRzKCkKICAgICB9OwogCiAgICAgYmFs
YW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKQEAgLTM4MCw2MCArMzg3LDYwIEBAIFRlbXBvcmFs
RHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpzdWJ0cmFjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiAKIC8vIFJvdW5kRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVr
cywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGluZ01vZGUgWyAsIHJlbGF0
aXZlVG8gXSApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC1yb3VuZGR1cmF0aW9uCi1kb3VibGUgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQoVGVtcG9y
YWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIGRvdWJsZSBpbmNyZW1lbnQs
IFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgbW9kZSkKK2RvdWJsZSBUZW1wb3JhbER1
cmF0aW9uOjpyb3VuZChJU084NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24sIGRvdWJsZSBpbmNyZW1l
bnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQo
dW5pdCA+PSBUZW1wb3JhbFVuaXQ6OkRheSk7CiAgICAgZG91YmxlIHJlbWFpbmRlciA9IDA7CiAK
ICAgICBpZiAodW5pdCA9PSBUZW1wb3JhbFVuaXQ6OkRheSkgewotICAgICAgICBhdXRvIG9yaWdp
bmFsRGF5cyA9IHN1YmR1cmF0aW9ucy5kYXlzKCk7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRE
YXlzKDApOwotICAgICAgICBhdXRvIG5hbm9zZWNvbmRzID0gdG90YWxOYW5vc2Vjb25kcyhzdWJk
dXJhdGlvbnMpOworICAgICAgICBhdXRvIG9yaWdpbmFsRGF5cyA9IGR1cmF0aW9uLmRheXMoKTsK
KyAgICAgICAgZHVyYXRpb24uc2V0RGF5cygwKTsKKyAgICAgICAgYXV0byBuYW5vc2Vjb25kcyA9
IHRvdGFsTmFub3NlY29uZHMoZHVyYXRpb24pOwogCiAgICAgICAgIGF1dG8gZnJhY3Rpb25hbERh
eXMgPSBvcmlnaW5hbERheXMgKyBuYW5vc2Vjb25kcyAvIG5hbm9zZWNvbmRzUGVyRGF5OwogICAg
ICAgICBhdXRvIG5ld0RheXMgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KGZyYWN0aW9uYWxEYXlz
LCBpbmNyZW1lbnQsIG1vZGUpOwogICAgICAgICByZW1haW5kZXIgPSBmcmFjdGlvbmFsRGF5cyAt
IG5ld0RheXM7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXREYXlzKG5ld0RheXMpOworICAgICAg
ICBkdXJhdGlvbi5zZXREYXlzKG5ld0RheXMpOwogICAgIH0gZWxzZSBpZiAodW5pdCA9PSBUZW1w
b3JhbFVuaXQ6OkhvdXIpIHsKLSAgICAgICAgYXV0byBmcmFjdGlvbmFsU2Vjb25kcyA9IHN1YmR1
cmF0aW9ucy5zZWNvbmRzKCkgKyBzdWJkdXJhdGlvbnMubWlsbGlzZWNvbmRzKCkgKiAxZS0zICsg
c3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICogMWUtNiArIHN1YmR1cmF0aW9ucy5uYW5vc2Vj
b25kcygpICogMWUtOTsKLSAgICAgICAgYXV0byBmcmFjdGlvbmFsSG91cnMgPSBzdWJkdXJhdGlv
bnMuaG91cnMoKSArIChzdWJkdXJhdGlvbnMubWludXRlcygpICsgZnJhY3Rpb25hbFNlY29uZHMg
LyA2MCkgLyA2MDsKKyAgICAgICAgYXV0byBmcmFjdGlvbmFsU2Vjb25kcyA9IGR1cmF0aW9uLnNl
Y29uZHMoKSArIGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpICogMWUtMyArIGR1cmF0aW9uLm1pY3Jv
c2Vjb25kcygpICogMWUtNiArIGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkgKiAxZS05OworICAgICAg
ICBhdXRvIGZyYWN0aW9uYWxIb3VycyA9IGR1cmF0aW9uLmhvdXJzKCkgKyAoZHVyYXRpb24ubWlu
dXRlcygpICsgZnJhY3Rpb25hbFNlY29uZHMgLyA2MCkgLyA2MDsKICAgICAgICAgYXV0byBuZXdI
b3VycyA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZnJhY3Rpb25hbEhvdXJzLCBpbmNyZW1lbnQs
IG1vZGUpOwogICAgICAgICByZW1haW5kZXIgPSBmcmFjdGlvbmFsSG91cnMgLSBuZXdIb3VyczsK
LSAgICAgICAgc3ViZHVyYXRpb25zLnNldEhvdXJzKG5ld0hvdXJzKTsKKyAgICAgICAgZHVyYXRp
b24uc2V0SG91cnMobmV3SG91cnMpOwogICAgIH0gZWxzZSBpZiAodW5pdCA9PSBUZW1wb3JhbFVu
aXQ6Ok1pbnV0ZSkgewotICAgICAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmRzID0gc3ViZHVyYXRp
b25zLnNlY29uZHMoKSArIHN1YmR1cmF0aW9ucy5taWxsaXNlY29uZHMoKSAqIDFlLTMgKyBzdWJk
dXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKiAxZS02ICsgc3ViZHVyYXRpb25zLm5hbm9zZWNvbmRz
KCkgKiAxZS05OwotICAgICAgICBhdXRvIGZyYWN0aW9uYWxNaW51dGVzID0gc3ViZHVyYXRpb25z
Lm1pbnV0ZXMoKSArIGZyYWN0aW9uYWxTZWNvbmRzIC8gNjA7CisgICAgICAgIGF1dG8gZnJhY3Rp
b25hbFNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzKCkgKyBkdXJhdGlvbi5taWxsaXNlY29uZHMo
KSAqIDFlLTMgKyBkdXJhdGlvbi5taWNyb3NlY29uZHMoKSAqIDFlLTYgKyBkdXJhdGlvbi5uYW5v
c2Vjb25kcygpICogMWUtOTsKKyAgICAgICAgYXV0byBmcmFjdGlvbmFsTWludXRlcyA9IGR1cmF0
aW9uLm1pbnV0ZXMoKSArIGZyYWN0aW9uYWxTZWNvbmRzIC8gNjA7CiAgICAgICAgIGF1dG8gbmV3
TWludXRlcyA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZnJhY3Rpb25hbE1pbnV0ZXMsIGluY3Jl
bWVudCwgbW9kZSk7CiAgICAgICAgIHJlbWFpbmRlciA9IGZyYWN0aW9uYWxNaW51dGVzIC0gbmV3
TWludXRlczsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldE1pbnV0ZXMobmV3TWludXRlcyk7Cisg
ICAgICAgIGR1cmF0aW9uLnNldE1pbnV0ZXMobmV3TWludXRlcyk7CiAgICAgfSBlbHNlIGlmICh1
bml0ID09IFRlbXBvcmFsVW5pdDo6U2Vjb25kKSB7Ci0gICAgICAgIGF1dG8gZnJhY3Rpb25hbFNl
Y29uZHMgPSBzdWJkdXJhdGlvbnMuc2Vjb25kcygpICsgc3ViZHVyYXRpb25zLm1pbGxpc2Vjb25k
cygpICogMWUtMyArIHN1YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKSAqIDFlLTYgKyBzdWJkdXJh
dGlvbnMubmFub3NlY29uZHMoKSAqIDFlLTk7CisgICAgICAgIGF1dG8gZnJhY3Rpb25hbFNlY29u
ZHMgPSBkdXJhdGlvbi5zZWNvbmRzKCkgKyBkdXJhdGlvbi5taWxsaXNlY29uZHMoKSAqIDFlLTMg
KyBkdXJhdGlvbi5taWNyb3NlY29uZHMoKSAqIDFlLTYgKyBkdXJhdGlvbi5uYW5vc2Vjb25kcygp
ICogMWUtOTsKICAgICAgICAgYXV0byBuZXdTZWNvbmRzID0gcm91bmROdW1iZXJUb0luY3JlbWVu
dChmcmFjdGlvbmFsU2Vjb25kcywgaW5jcmVtZW50LCBtb2RlKTsKICAgICAgICAgcmVtYWluZGVy
ID0gZnJhY3Rpb25hbFNlY29uZHMgLSBuZXdTZWNvbmRzOwotICAgICAgICBzdWJkdXJhdGlvbnMu
c2V0U2Vjb25kcyhuZXdTZWNvbmRzKTsKKyAgICAgICAgZHVyYXRpb24uc2V0U2Vjb25kcyhuZXdT
ZWNvbmRzKTsKICAgICB9IGVsc2UgaWYgKHVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaWxsaXNlY29u
ZCkgewotICAgICAgICBhdXRvIGZyYWN0aW9uYWxNaWxsaXNlY29uZHMgPSBzdWJkdXJhdGlvbnMu
bWlsbGlzZWNvbmRzKCkgKyBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKiAxZS0zICsgc3Vi
ZHVyYXRpb25zLm5hbm9zZWNvbmRzKCkgKiAxZS02OworICAgICAgICBhdXRvIGZyYWN0aW9uYWxN
aWxsaXNlY29uZHMgPSBkdXJhdGlvbi5taWxsaXNlY29uZHMoKSArIGR1cmF0aW9uLm1pY3Jvc2Vj
b25kcygpICogMWUtMyArIGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkgKiAxZS02OwogICAgICAgICBh
dXRvIG5ld01pbGxpc2Vjb25kcyA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZnJhY3Rpb25hbE1p
bGxpc2Vjb25kcywgaW5jcmVtZW50LCBtb2RlKTsKICAgICAgICAgcmVtYWluZGVyID0gZnJhY3Rp
b25hbE1pbGxpc2Vjb25kcyAtIG5ld01pbGxpc2Vjb25kczsKLSAgICAgICAgc3ViZHVyYXRpb25z
LnNldE1pbGxpc2Vjb25kcyhuZXdNaWxsaXNlY29uZHMpOworICAgICAgICBkdXJhdGlvbi5zZXRN
aWxsaXNlY29uZHMobmV3TWlsbGlzZWNvbmRzKTsKICAgICB9IGVsc2UgaWYgKHVuaXQgPT0gVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZCkgewotICAgICAgICBhdXRvIGZyYWN0aW9uYWxNaWNyb3Nl
Y29uZHMgPSBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKyBzdWJkdXJhdGlvbnMubmFub3Nl
Y29uZHMoKSAqIDFlLTM7CisgICAgICAgIGF1dG8gZnJhY3Rpb25hbE1pY3Jvc2Vjb25kcyA9IGR1
cmF0aW9uLm1pY3Jvc2Vjb25kcygpICsgZHVyYXRpb24ubmFub3NlY29uZHMoKSAqIDFlLTM7CiAg
ICAgICAgIGF1dG8gbmV3TWljcm9zZWNvbmRzID0gcm91bmROdW1iZXJUb0luY3JlbWVudChmcmFj
dGlvbmFsTWljcm9zZWNvbmRzLCBpbmNyZW1lbnQsIG1vZGUpOwogICAgICAgICByZW1haW5kZXIg
PSBmcmFjdGlvbmFsTWljcm9zZWNvbmRzIC0gbmV3TWljcm9zZWNvbmRzOwotICAgICAgICBzdWJk
dXJhdGlvbnMuc2V0TWljcm9zZWNvbmRzKG5ld01pY3Jvc2Vjb25kcyk7CisgICAgICAgIGR1cmF0
aW9uLnNldE1pY3Jvc2Vjb25kcyhuZXdNaWNyb3NlY29uZHMpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGF1dG8gbmV3TmFub3NlY29uZHMgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHN1YmR1cmF0
aW9ucy5uYW5vc2Vjb25kcygpLCBpbmNyZW1lbnQsIG1vZGUpOwotICAgICAgICByZW1haW5kZXIg
PSBzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSAtIG5ld05hbm9zZWNvbmRzOwotICAgICAgICBz
dWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMobmV3TmFub3NlY29uZHMpOworICAgICAgICBhdXRv
IG5ld05hbm9zZWNvbmRzID0gcm91bmROdW1iZXJUb0luY3JlbWVudChkdXJhdGlvbi5uYW5vc2Vj
b25kcygpLCBpbmNyZW1lbnQsIG1vZGUpOworICAgICAgICByZW1haW5kZXIgPSBkdXJhdGlvbi5u
YW5vc2Vjb25kcygpIC0gbmV3TmFub3NlY29uZHM7CisgICAgICAgIGR1cmF0aW9uLnNldE5hbm9z
ZWNvbmRzKG5ld05hbm9zZWNvbmRzKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gaSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHVuaXQpICsgMXU7IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGkr
KykKLSAgICAgICAgc3ViZHVyYXRpb25zW2ldID0gMDsKKyAgICAgICAgZHVyYXRpb25baV0gPSAw
OwogCiAgICAgcmV0dXJuIHJlbWFpbmRlcjsKIH0KIAotVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVy
YXRpb25zIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxEdXJhdGlvbjo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBv
cHRpb25zVmFsdWUpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ0NCw3ICs0NTEs
NyBAQCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6cm91
bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3Jh
bFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0TGFyZ2Vz
dFVuaXQgPSBsYXJnZXN0U3ViZHVyYXRpb24oKTsKKyAgICBUZW1wb3JhbFVuaXQgZGVmYXVsdExh
cmdlc3RVbml0ID0gbGFyZ2VzdFN1YmR1cmF0aW9uKG1fZHVyYXRpb24pOwogICAgIGF1dG8gbGFy
Z2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRl
ZmF1bHRMYXJnZXN0VW5pdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IApAQCAtNDYxLDkgKzQ2OCw3IEBAIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1w
b3JhbER1cmF0aW9uOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgVGVtcG9y
YWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFu
b3NlY29uZCk7CiAgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9v
cihzdGQ6Om1pbihkZWZhdWx0TGFyZ2VzdFVuaXQsIHNtYWxsZXN0VW5pdCkpOwogCi0gICAgYXV0
byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCi0gICAgICAgIHsgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZs
b29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQi
X3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCi0gICAgICAgICJyb3VuZGluZ01vZGUg
bXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZF
eHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBhdXRvIHJvdW5kaW5n
TW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCks
IGZhbHNlKTsKQEAgLTQ3NSwxMCArNDgwLDEwIEBAIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0
aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgU3ViZHVyYXRpb25zIG5ld1N1YmR1cmF0
aW9ucyA9IG1fc3ViZHVyYXRpb25zOwotICAgIHJvdW5kKG5ld1N1YmR1cmF0aW9ucywgaW5jcmVt
ZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7Ci0gICAgYmFsYW5jZShuZXdTdWJkdXJh
dGlvbnMsIGxhcmdlc3RVbml0KTsKLSAgICByZXR1cm4gbmV3U3ViZHVyYXRpb25zOworICAgIElT
Tzg2MDE6OkR1cmF0aW9uIG5ld0R1cmF0aW9uID0gbV9kdXJhdGlvbjsKKyAgICByb3VuZChuZXdE
dXJhdGlvbiwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgYmFs
YW5jZShuZXdEdXJhdGlvbiwgbGFyZ2VzdFVuaXQpOworICAgIHJldHVybiBuZXdEdXJhdGlvbjsK
IH0KIAogZG91YmxlIFRlbXBvcmFsRHVyYXRpb246OnRvdGFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdApAQCAtNTA1LDEwICs1MTAsMTAg
QEAgZG91YmxlIFRlbXBvcmFsRHVyYXRpb246OnRvdGFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHUKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
LSAgICBTdWJkdXJhdGlvbnMgbmV3U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlvbnM7Ci0gICAg
YmFsYW5jZShuZXdTdWJkdXJhdGlvbnMsIHVuaXQpOwotICAgIGRvdWJsZSByZW1haW5kZXIgPSBy
b3VuZChuZXdTdWJkdXJhdGlvbnMsIDEsIHVuaXQsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwotICAg
IHJldHVybiBuZXdTdWJkdXJhdGlvbnNbc3RhdGljX2Nhc3Q8dWludDhfdD4odW5pdCldICsgcmVt
YWluZGVyOworICAgIElTTzg2MDE6OkR1cmF0aW9uIG5ld0R1cmF0aW9uID0gbV9kdXJhdGlvbjsK
KyAgICBiYWxhbmNlKG5ld0R1cmF0aW9uLCB1bml0KTsKKyAgICBkb3VibGUgcmVtYWluZGVyID0g
cm91bmQobmV3RHVyYXRpb24sIDEsIHVuaXQsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIHJl
dHVybiBuZXdEdXJhdGlvbltzdGF0aWNfY2FzdDx1aW50OF90Pih1bml0KV0gKyByZW1haW5kZXI7
CiB9CiAKIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKQEAgLTUyOSwzMiArNTM0
LDMwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCi0gICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCi0gICAg
ICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3Vu
ZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsg
ImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCi0gICAgICAgICJy
b3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wi
LCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgYXV0byBy
b3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2
ZW4gZXhwbGljaXQgZGVmYXVsdHMuCiAgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9u
KSA9PSBQcmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1
bmMpCiAgICAgICAgIHJldHVybiB0b1N0cmluZygpOwogCi0gICAgU3ViZHVyYXRpb25zIG5ld1N1
YmR1cmF0aW9ucyA9IG1fc3ViZHVyYXRpb25zOwotICAgIHJvdW5kKG5ld1N1YmR1cmF0aW9ucywg
ZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlKTsKLSAgICByZXR1cm4gdG9T
dHJpbmcobmV3U3ViZHVyYXRpb25zLCBkYXRhLnByZWNpc2lvbik7CisgICAgSVNPODYwMTo6RHVy
YXRpb24gbmV3RHVyYXRpb24gPSBtX2R1cmF0aW9uOworICAgIHJvdW5kKG5ld0R1cmF0aW9uLCBk
YXRhLmluY3JlbWVudCwgZGF0YS51bml0LCByb3VuZGluZ01vZGUpOworICAgIHJldHVybiB0b1N0
cmluZyhuZXdEdXJhdGlvbiwgZGF0YS5wcmVjaXNpb24pOwogfQogCiAvLyBUZW1wb3JhbER1cmF0
aW9uVG9TdHJpbmcgKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMs
IHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcywgcHJlY2lz
aW9uICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LXRlbXBvcmFsZHVyYXRpb250b3N0cmluZwotU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3Ry
aW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBz
dGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbikKK1N0cmluZyBUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBJU084NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24sIHN0
ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQogewogICAgIGF1dG8gW3By
ZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9IHByZWNpc2lvbjsKICAgICBBU1NFUlQocHJl
Y2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gfHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CiAK
LSAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRzID0gc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25k
cygpICsgc3RkOjp0cnVuYyhzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSAvIDEwMDApOwotICAg
IGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0ZDo6Zm1vZChzdWJkdXJhdGlvbnMubmFub3Nl
Y29uZHMoKSwgMTAwMCk7Ci0gICAgYXV0byBiYWxhbmNlZE1pbGxpc2Vjb25kcyA9IHN1YmR1cmF0
aW9ucy5taWxsaXNlY29uZHMoKSArIHN0ZDo6dHJ1bmMoYmFsYW5jZWRNaWNyb3NlY29uZHMgLyAx
MDAwKTsKKyAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRzID0gZHVyYXRpb24ubWljcm9zZWNv
bmRzKCkgKyBzdGQ6OnRydW5jKGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkgLyAxMDAwKTsKKyAgICBh
dXRvIGJhbGFuY2VkTmFub3NlY29uZHMgPSBzdGQ6OmZtb2QoZHVyYXRpb24ubmFub3NlY29uZHMo
KSwgMTAwMCk7CisgICAgYXV0byBiYWxhbmNlZE1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uLm1pbGxp
c2Vjb25kcygpICsgc3RkOjp0cnVuYyhiYWxhbmNlZE1pY3Jvc2Vjb25kcyAvIDEwMDApOwogICAg
IGJhbGFuY2VkTWljcm9zZWNvbmRzID0gc3RkOjpmbW9kKGJhbGFuY2VkTWljcm9zZWNvbmRzLCAx
MDAwKTsKLSAgICBhdXRvIGJhbGFuY2VkU2Vjb25kcyA9IHN1YmR1cmF0aW9ucy5zZWNvbmRzKCkg
KyBzdGQ6OnRydW5jKGJhbGFuY2VkTWlsbGlzZWNvbmRzIC8gMTAwMCk7CisgICAgYXV0byBiYWxh
bmNlZFNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzKCkgKyBzdGQ6OnRydW5jKGJhbGFuY2VkTWls
bGlzZWNvbmRzIC8gMTAwMCk7CiAgICAgYmFsYW5jZWRNaWxsaXNlY29uZHMgPSBzdGQ6OmZtb2Qo
YmFsYW5jZWRNaWxsaXNlY29uZHMsIDEwMDApOwogCiAgICAgLy8gVEVNUE9SQVJZISAocGVuZGlu
ZyBzcGVjIGRpc2N1c3Npb24gYWJvdXQgbWF4aW11bSB2YWx1ZXMgQCBodHRwczovL2dpdGh1Yi5j
b20vdGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTYwNCkKQEAgLTU2NywzMCArNTcwLDMw
IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0
aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAKLSAgICBhdXRvIHNpZ24gPSBUZW1wb3JhbER1cmF0aW9uOjpzaWduKHN1YmR1cmF0aW9ucyk7
CisgICAgYXV0byBzaWduID0gVGVtcG9yYWxEdXJhdGlvbjo6c2lnbihkdXJhdGlvbik7CiAgICAg
aWYgKHNpZ24gPCAwKQogICAgICAgICBidWlsZGVyLmFwcGVuZCgnLScpOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ1AnKTsKLSAgICBpZiAoc3ViZHVyYXRpb25zLnllYXJzKCkpCi0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoc3ViZHVyYXRpb25zLnllYXJzKCkpLCAnWScpOwot
ICAgIGlmIChzdWJkdXJhdGlvbnMubW9udGhzKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZv
cm1hdEludGVnZXIoc3ViZHVyYXRpb25zLm1vbnRocygpKSwgJ00nKTsKLSAgICBpZiAoc3ViZHVy
YXRpb25zLndlZWtzKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoc3Vi
ZHVyYXRpb25zLndlZWtzKCkpLCAnVycpOwotICAgIGlmIChzdWJkdXJhdGlvbnMuZGF5cygpKQot
ICAgICAgICBidWlsZGVyLmFwcGVuZChmb3JtYXRJbnRlZ2VyKHN1YmR1cmF0aW9ucy5kYXlzKCkp
LCAnRCcpOworICAgIGlmIChkdXJhdGlvbi55ZWFycygpKQorICAgICAgICBidWlsZGVyLmFwcGVu
ZChmb3JtYXRJbnRlZ2VyKGR1cmF0aW9uLnllYXJzKCkpLCAnWScpOworICAgIGlmIChkdXJhdGlv
bi5tb250aHMoKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdlcihkdXJhdGlv
bi5tb250aHMoKSksICdNJyk7CisgICAgaWYgKGR1cmF0aW9uLndlZWtzKCkpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoZHVyYXRpb24ud2Vla3MoKSksICdXJyk7CisgICAg
aWYgKGR1cmF0aW9uLmRheXMoKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdl
cihkdXJhdGlvbi5kYXlzKCkpLCAnRCcpOwogCiAgICAgLy8gVGhlIHplcm8gdmFsdWUgaXMgZGlz
cGxheWVkIGluIHNlY29uZHMuCiAgICAgYXV0byB1c2VzU2Vjb25kcyA9IGJhbGFuY2VkU2Vjb25k
cyB8fCBiYWxhbmNlZE1pbGxpc2Vjb25kcyB8fCBiYWxhbmNlZE1pY3Jvc2Vjb25kcyB8fCBiYWxh
bmNlZE5hbm9zZWNvbmRzIHx8ICFzaWduOwotICAgIGlmICghc3ViZHVyYXRpb25zLmhvdXJzKCkg
JiYgIXN1YmR1cmF0aW9ucy5taW51dGVzKCkgJiYgIXVzZXNTZWNvbmRzKQorICAgIGlmICghZHVy
YXRpb24uaG91cnMoKSAmJiAhZHVyYXRpb24ubWludXRlcygpICYmICF1c2VzU2Vjb25kcykKICAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCdU
Jyk7Ci0gICAgaWYgKHN1YmR1cmF0aW9ucy5ob3VycygpKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZChmb3JtYXRJbnRlZ2VyKHN1YmR1cmF0aW9ucy5ob3VycygpKSwgJ0gnKTsKLSAgICBpZiAoc3Vi
ZHVyYXRpb25zLm1pbnV0ZXMoKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdl
cihzdWJkdXJhdGlvbnMubWludXRlcygpKSwgJ00nKTsKKyAgICBpZiAoZHVyYXRpb24uaG91cnMo
KSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdlcihkdXJhdGlvbi5ob3Vycygp
KSwgJ0gnKTsKKyAgICBpZiAoZHVyYXRpb24ubWludXRlcygpKQorICAgICAgICBidWlsZGVyLmFw
cGVuZChmb3JtYXRJbnRlZ2VyKGR1cmF0aW9uLm1pbnV0ZXMoKSksICdNJyk7CiAgICAgaWYgKHVz
ZXNTZWNvbmRzKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoYmFsYW5j
ZWRTZWNvbmRzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uaAppbmRleCBiYzQzODMzM2M1NDA1MWQyZjFkYjU1NGUzYjM0OWRlNWE0YTlh
NDZhLi5lMWE0NmRlNGQ3ZmU0NDExNmJhZjBlYmU1OGUxZmNkYTcyN2EzMDFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCkBAIC0zMiw3
ICszMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNO
b25GaW5hbE9iamVjdDsKLSAgICB1c2luZyBTdWJkdXJhdGlvbnMgPSBJU084NjAxOjpEdXJhdGlv
bjsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2Rl
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNDAsNTUg
KzM5LDUxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsRHVyYXRpb25TcGFj
ZTxtb2RlPigpOwogICAgIH0KIAotICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBTdWJkdXJhdGlvbnMmJik7Ci0gICAgc3RhdGljIFRlbXBvcmFsRHVy
YXRpb24qIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBTdWJkdXJhdGlvbnMmJiwg
U3RydWN0dXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpEdXJhdGlvbiYmKTsKKyAgICBzdGF0aWMgVGVt
cG9yYWxEdXJhdGlvbiogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIElTTzg2MDE6
OkR1cmF0aW9uJiYsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIHRvRHVyYXRpb24o
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvbiog
dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGlj
IFRlbXBvcmFsRHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBz
dGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7
CiAKICNkZWZpbmUgSlNDX0RFRklORV9URU1QT1JBTF9EVVJBVElPTl9GSUVMRChuYW1lLCBjYXBp
dGFsaXplZE5hbWUpIFwKLSAgICBkb3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vi
ZHVyYXRpb25zLm5hbWUjI3MoKTsgfSBcCi0gICAgdm9pZCBzZXQjI2NhcGl0YWxpemVkTmFtZSMj
cyhkb3VibGUgdmFsdWUpIHsgbV9zdWJkdXJhdGlvbnMuc2V0IyNjYXBpdGFsaXplZE5hbWUjI3Mo
dmFsdWUpOyB9CisgICAgZG91YmxlIG5hbWUjI3MoKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9u
Lm5hbWUjI3MoKTsgfSBcCisgICAgdm9pZCBzZXQjI2NhcGl0YWxpemVkTmFtZSMjcyhkb3VibGUg
dmFsdWUpIHsgbV9kdXJhdGlvbi5zZXQjI2NhcGl0YWxpemVkTmFtZSMjcyh2YWx1ZSk7IH0KICAg
ICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9URU1QT1JBTF9EVVJBVElPTl9GSUVMRCk7
CiAjdW5kZWYgSlNDX0RFRklORV9URU1QT1JBTF9EVVJBVElPTl9GSUVMRAogCi0gICAgaW50IHNp
Z24oKSBjb25zdCB7IHJldHVybiBzaWduKG1fc3ViZHVyYXRpb25zKTsgfQorICAgIGludCBzaWdu
KCkgY29uc3QgeyByZXR1cm4gc2lnbihtX2R1cmF0aW9uKTsgfQogCi0gICAgU3ViZHVyYXRpb25z
IHdpdGgoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZHVyYXRpb25MaWtlKSBjb25zdDsKLSAg
ICBTdWJkdXJhdGlvbnMgbmVnYXRlZCgpIGNvbnN0OwotICAgIFN1YmR1cmF0aW9ucyBhYnMoKSBj
b25zdDsKLSAgICBTdWJkdXJhdGlvbnMgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29u
c3Q7Ci0gICAgU3ViZHVyYXRpb25zIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkg
Y29uc3Q7Ci0gICAgU3ViZHVyYXRpb25zIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBv
cHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiB3aXRoKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIGR1cmF0aW9uTGlrZSkgY29uc3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24g
bmVnYXRlZCgpIGNvbnN0OworICAgIElTTzg2MDE6OkR1cmF0aW9uIGFicygpIGNvbnN0OworICAg
IElTTzg2MDE6OkR1cmF0aW9uIGFkZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0Owor
ICAgIElTTzg2MDE6OkR1cmF0aW9uIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkg
Y29uc3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcm91bmQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjp0dXBs
ZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lvbjo6QXV0bywgMCB9
KSBjb25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQor
ICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+ID0geyBQ
cmVjaXNpb246OkF1dG8sIDAgfSkgY29uc3QgeyByZXR1cm4gdG9TdHJpbmcobV9kdXJhdGlvbiwg
cHJlY2lzaW9uKTsgfQogCi0gICAgY29uc3QgU3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3N1YmR1cmF0aW9uczsgfQorICAgIHN0YXRpYyBJU084NjAxOjpEdXJh
dGlvbiBmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKyAgICBz
dGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9JU084NjAxRHVyYXRpb24oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgdG9EdXJhdGlvblJlY29yZChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotCi0gICAgc3RhdGljIGludCBzaWduKGNvbnN0IFN1
YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyBkb3VibGUgcm91bmQoU3ViZHVyYXRpb25zJiwgZG91
YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOwotICAgIHN0YXRpYyB2
b2lkIGJhbGFuY2UoU3ViZHVyYXRpb25zJiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKKyAg
ICBzdGF0aWMgaW50IHNpZ24oY29uc3QgSVNPODYwMTo6RHVyYXRpb24mKTsKKyAgICBzdGF0aWMg
ZG91YmxlIHJvdW5kKElTTzg2MDE6OkR1cmF0aW9uJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9y
YWxVbml0LCBSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoSVNPODYwMTo6
RHVyYXRpb24mLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwogCiBwcml2YXRlOgotICAgIFRl
bXBvcmFsRHVyYXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBTdWJkdXJhdGlvbnMmJik7CisgICAgVGVt
cG9yYWxEdXJhdGlvbihWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYpOwogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3ViZHVyYXRpb25zPiBwYXJzZShT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgc3RhdGljIFN1YmR1cmF0
aW9ucyBmcm9tTm9uRHVyYXRpb25WYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotCi0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxl
PFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SVNPODYwMTo6RHVyYXRpb24+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mKTsKIAotICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3ViZHVyYXRpb24oKSBjb25zdDsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uJiwgc3Rk
Ojp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOwogCi0gICAgU3ViZHVyYXRp
b25zIG1fc3ViZHVyYXRpb25zOworICAgIElTTzg2MDE6OkR1cmF0aW9uIG1fZHVyYXRpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ0
ZTQ5ZmMwNDUwZmUxMjZhZThlNDhiNGU5NGY0YzFmZGNhMDY1MWEuLjAyMjM3MjI3ODI1ZmFkNTEw
ZTM5MzVjMTczODU5ZDEyM2YzMWQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAt
ODgsMTcgKzg4LDE3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3Jh
bER1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBkdXJhdGlvblN0cnVjdHVy
ZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMg
c3ViZHVyYXRpb25zOworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGNv
dW50ID0gc3RkOjptaW48c2l6ZV90PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSwgbnVtYmVy
T2ZUZW1wb3JhbFVuaXRzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKLSAgICAgICAgc3ViZHVyYXRpb25zW2ldID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJlc3VsdFtp
XSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShzdWJkdXJhdGlvbnNbaV0pKQorICAgICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUocmVzdWx0W2ldKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVy
dGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3ViZHVyYXRpb25zKSwgc3RydWN0dXJlKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRp
b246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCksIHN0cnVj
dHVyZSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbER1cmF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUuY3BwCmluZGV4IDhiYWNiNmQzOWZiNDE1MjM4MWE0NTgxOWNjNWEyYjM2ZmU2ZmZh
YWIuLmMxZTY1MmI5ODNlODdmMTFiODNjNmIyMzFiNDU2MWZmMDI1OWFlYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUuY3BwCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmplY3QqIGds
bwogICAgIGlmICghZHVyYXRpb25MaWtlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUud2l0aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CiAKLSAg
ICBhdXRvIHN1YmR1cmF0aW9ucyA9IGR1cmF0aW9uLT53aXRoKGdsb2JhbE9iamVjdCwgYXNPYmpl
Y3QoZHVyYXRpb25MaWtlKSk7CisgICAgYXV0byByZXN1bHQgPSBkdXJhdGlvbi0+d2l0aChnbG9i
YWxPYmplY3QsIGFzT2JqZWN0KGR1cmF0aW9uTGlrZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
V1RGTW92ZShzdWJkdXJhdGlvbnMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY05lZ2F0ZWQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNjcsMTAgKzE2NywxMCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNB
ZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGlmICghZHVyYXRpb24pCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJh
dGlvbi5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24i
X3MpOwogCi0gICAgYXV0byBzdWJkdXJhdGlvbnMgPSBkdXJhdGlvbi0+YWRkKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byByZXN1bHQgPSBkdXJhdGlvbi0+
YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jU3VidHJhY3QsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xODIsMTAg
KzE4MiwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmICghZHVyYXRpb24pCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBEdXJhdGlvbiJfcyk7CiAKLSAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGR1cmF0aW9uLT5z
dWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8g
cmVzdWx0ID0gZHVyYXRpb24tPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246
OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxE
dXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5
cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC0yMDEsMTAgKzIwMSwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbAog
ICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUu
cm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfcyk7CiAKLSAgICBhdXRvIHN1YmR1
cmF0aW9ucyA9IGR1cmF0aW9uLT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIGF1
dG8gcmVzdWx0ID0gZHVyYXRpb24tPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFs
aWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3Jl
YXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jVG90YWwsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXgg
ZTlmNzRlNDk3ZTI0NTY0MTNiMzBjMWUzYTE5NzIzMTVlMjc3YmU5My4uYTRlNGVjNjE1YjMxODY2
ODQ1YjBiMWRjZGZjZTVkYjQ4NDg5YjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtMzAwLDYgKzMwMCwxNSBAQCBQcmVjaXNp
b25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdAogICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRz
IH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgcG93MTBVbnNpZ25lZCg5IC0gZGlnaXRzKSB9
OwogfQogCisvLyBUb1RlbXBvcmFsUm91bmRpbmdNb2RlICggbm9ybWFsaXplZE9wdGlvbnMsIGZh
bGxiYWNrICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLXRvdGVtcG9yYWxyb3VuZGluZ21vZGUKK1JvdW5kaW5nTW9kZSB0ZW1wb3JhbFJvdW5kaW5n
TW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUm91
bmRpbmdNb2RlIGZhbGxiYWNrKQoreworICAgIHJldHVybiBpbnRsT3B0aW9uPFJvdW5kaW5nTW9k
ZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVydHlOYW1l
cy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2Vp
bCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91
bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwi
LCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIGZhbGxiYWNrKTsK
K30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVuaXQg
KQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtbWF4
aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IGM5YzliZDIx
NWY3Y2EzYzhkODM3ZjA4NGRlMTA2ZDY0NGRjOTY5YWUuLmQxNTEyMmE5ZjI4ODJmMmY5YTI2MWNj
NDQ5MmU0NzVhNTZhMDlkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuaApAQCAtOTgsNiArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFs
VW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRp
bwogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsU21hbGxlc3RVbml0KEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1w
b3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1w
b3JhbEZyYWN0aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0
aW9ucyk7CiBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogb3B0aW9ucyk7CitSb3VuZGluZ01vZGUgdGVtcG9yYWxSb3VuZGluZ01v
ZGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFJvdW5kaW5nTW9kZSk7CiBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5pdCk7CiBkb3Vi
bGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBv
cHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5jbHVzaXZlKTsK
IGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGluY3JlbWVudCwg
Um91bmRpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lLmNwcAppbmRleCAzZjJmZTI0NWE4N2RmNjhiMDQzYTk3MjU3MjQ0MGQx
ZDY5M2FmZWZmLi5lNzQ3ZDM5NTIyMzY5MTczYTAzNWNiODcyZjJiZTUwM2VhMDA4MzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUu
Y3BwCkBAIC0yMzksOSArMjM5LDcgQEAgSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5U
aW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICB9CiAg
ICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlKCk7CiAKLSAgICBh
dXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKLSAgICAgICAgeyB7ICJj
ZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6
Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFu
ZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKLSAgICAgICAgInJvdW5kaW5nTW9k
ZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFs
ZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIGF1dG8gcm91bmRp
bmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3Vu
ZGluZ01vZGU6OkhhbGZFeHBhbmQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBhdXRvIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0
KSwgZmFsc2UpOwpAQCAtMjY1LDkgKzI2Myw3IEBAIFN0cmluZyBUZW1wb3JhbFBsYWluVGltZTo6
dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zCiAg
ICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKLSAgICAgICAgeyB7
ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9k
ZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4
cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKLSAgICAgICAgInJvdW5kaW5n
TW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwi
aGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBhdXRvIHJvdW5kaW5n
TW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRp
bmdNb2RlOjpUcnVuYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBs
aWNpdCBkZWZhdWx0cy4KQEAgLTM1NSw3ICszNTEsNyBAQCBzdGF0aWMgc3RkOjphcnJheTxzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cz4gdG9QYXJ0
aQogICAgIHJldHVybiBwYXJ0aWFsVGltZTsKIH0KIAotc3RhdGljIElTTzg2MDE6OlBsYWluVGlt
ZSBjb25zdHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQorc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSBjb25zdHJhaW5UaW1lKElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRp
b24pCiB7CiAgICAgYXV0byBjb25zdHJhaW5Ub1JhbmdlID0gW10oZG91YmxlIHZhbHVlLCB1bnNp
Z25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtKSAtPiB1bnNpZ25lZCB7CiAgICAgICAgIGlm
IChzdGQ6OmlzbmFuKHZhbHVlKSkKQEAgLTM3NSw3ICszNzEsNyBAQCBzdGF0aWMgSVNPODYwMTo6
UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084
NjAxOjpEdQogewogICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKICAgICBjYXNlIFRlbXBvcmFsT3Zl
cmZsb3c6OkNvbnN0cmFpbjoKLSAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdURk1vdmUo
ZHVyYXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpblRpbWUoV1RGTW92ZShkdXJhdGlv
bikpOwogICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0OgogICAgICAgICByZXR1cm4g
dG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CiAgICAgfQpAQCAt
NDgyLDQ0ICs0NzgsNiBAQCBpbnQzMl90IFRlbXBvcmFsUGxhaW5UaW1lOjpjb21wYXJlKFRlbXBv
cmFsUGxhaW5UaW1lKiBwbGFpblRpbWUxLCBUZW1wb3JhbFBsYWluVAogICAgIHJldHVybiAwOwog
fQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10
b2xpbWl0ZWR0ZW1wb3JhbGR1cmF0aW9uCi1zdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9MaW1p
dGVkVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRlbXBvcmFsRHVyYXRpb25MaWtlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0
PiBkaXNhbGxvd2VkRmllbGRzKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBJU084NjAx
OjpEdXJhdGlvbiBkdXJhdGlvbjsKLSAgICBpZiAoIXRlbXBvcmFsRHVyYXRpb25MaWtlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHRlbXBvcmFsRHVyYXRpb25MaWtlLnRv
V1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7Ci0gICAgICAgIGF1dG8gZHVyYXRpb25PcHRpb25hbCA9IElTTzg2MDE6OnBhcnNl
RHVyYXRpb24oc3RyaW5nKTsKLSAgICAgICAgaWYgKCFkdXJhdGlvbk9wdGlvbmFsKSB7Ci0gICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBw
YXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgfQotICAgICAgICBkdXJhdGlvbiA9IGR1cmF0aW9uT3B0aW9uYWwudmFsdWUoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25S
ZWNvcmQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFJU084NjAxOjpp
c1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZp
bml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmIChkdXJhdGlvbltpbmRleF0pIHsKLSAgICAg
ICAgICAgIGlmIChkaXNhbGxvd2VkRmllbGRzLnNpemUoKSAmJiBzdGQ6OmZpbmQoZGlzYWxsb3dl
ZEZpZWxkcy5iZWdpbigpLCBkaXNhbGxvd2VkRmllbGRzLmVuZCgpLCBzdGF0aWNfY2FzdDxUZW1w
b3JhbFVuaXQ+KGluZGV4KSkgIT0gZGlzYWxsb3dlZEZpZWxkcy5lbmQoKSkgewotICAgICAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRHVyYXRpb24gcHJv
cGVydGllcyBpbmNsdWRlIGRpc2FsbG93ZWQgZmllbGQiX3MpOwotICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
ZHVyYXRpb247Ci19Ci0KIHN0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBhZGRUaW1lKGNvbnN0IElT
Tzg2MDE6OlBsYWluVGltZSYgcGxhaW5UaW1lLCBjb25zdCBJU084NjAxOjpEdXJhdGlvbiYgZHVy
YXRpb24pCiB7CiAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKApAQCAtNTM2LDcgKzQ5NCw3IEBAIElT
Tzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6YWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBkdXJh
dGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1
cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBhdXRvIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6
dG9JU084NjAxRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBhZGRUaW1lKG1fcGxhaW5UaW1l
LCBkdXJhdGlvbikpKTsKQEAgLTU0Nyw3ICs1MDUsNyBAQCBJU084NjAxOjpQbGFpblRpbWUgVGVt
cG9yYWxQbGFpblRpbWU6OnN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGR1cmF0aW9uID0gdG9MaW1pdGVkVGVt
cG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlLCB7IH0pOwor
ICAgIGF1dG8gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0lTTzg2MDFEdXJhdGlvbihn
bG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWlu
VGltZShnbG9iYWxPYmplY3QsIGFkZFRpbWUobV9wbGFpblRpbWUsIC1kdXJhdGlvbikpKTsKQEAg
LTYzNSw5ICs1OTMsNyBAQCBzdGF0aWMgc3RkOjp0dXBsZTxUZW1wb3JhbFVuaXQsIFRlbXBvcmFs
VW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+IGV4dHJhY3REaWZmZQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAotICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGlu
Z01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdN
b2RlLAotICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9v
ciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpU
cnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAot
ICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIs
IFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwor
ICAgIGF1dG8gcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5j
cmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNt
YWxsZXN0VW5pdCksIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZS5oCmluZGV4IGQ5OTcwMDBkOGUwOGQyODQ2ZWYyZGMwMzY1YTk5
MTM0MWY3ZGMzYmYuLjI4ODI3ZDBhYTBlZTFmMGEyYzIzYTFkODM3Yzk3MjBhMWI5YTRiYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUu
aApAQCAtODEsOCArODEsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElT
Tzg2MDE6OlBsYWluVGltZT4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYpOwogICAgIHN0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgZnJvbU9iamVjdChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Kik7CiAKLSAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YnBsYWluVGlt
ZSgpIGNvbnN0OwotCiAgICAgSVNPODYwMTo6UGxhaW5UaW1lIG1fcGxhaW5UaW1lOwogICAgIExh
enlQcm9wZXJ0eTxUZW1wb3JhbFBsYWluVGltZSwgVGVtcG9yYWxDYWxlbmRhcj4gbV9jYWxlbmRh
cjsKIH07Cg==
</data>
<flag name="commit-queue"
          id="461054"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437806</attachid>
            <date>2021-09-09 16:50:50 -0700</date>
            <delta_ts>2021-09-09 22:38:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230130-20210909165049.patch</filename>
            <type>text/plain</type>
            <size>54859</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZDUzMTM0N2FiZWE2NTMxYjZkNzYwM2YyMWVlNGRhNzgwNTg0ZDA1Li4zOWRmZDExMzM3YzY1NDdm
OGZmMmJmYzY5NWNlNjk2ODEzNDI4ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wOS0wOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQ2xlYW4gdXAgY3VycmVudCBzdGF0ZSBvZiBUZW1wb3Jh
bCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcGVyZm9tcyBhIHZhcmlldHkgb2YgY2xlYW51cCB0YXNrcyBmb2xsb3dpbmcgdGhl
IGltcGxlbWVudGF0aW9uIG9mIFRlbXBvcmFsLlBsYWluVGltZS4KKworICAgICAgICAgIDEuIERv
IGF3YXkgd2l0aCB0aGUgYWxpYXMgU3ViZHVyYXRpb25zIGFuZCByZWZlciB0byBJU084NjAxOjpE
dXJhdGlvbiBkaXJlY3RseS4KKyAgICAgICAgICAgICAoQnV0IHdlIGNhbiBzdGlsbCBzYXkgInN1
YmR1cmF0aW9uIiB3aGVuIHJlZmVycmluZyB0byBhIHNpbmdsZSBvcmRlcmVkIGZpZWxkLCBhcyBp
biBgbGFyZ2VzdFN1YmR1cmF0aW9uYC4pCisgICAgICAgICAgMi4gUmVwcmVzZW50IFRvVGVtcG9y
YWxEdXJhdGlvbiwgVG9UZW1wb3JhbER1cmF0aW9uUmVjb3JkLCBhbmQgVG9MaW1pdGVkVGVtcG9y
YWxEdXJhdGlvbiBtb3JlIGRpcmVjdGx5IGluIGNvZGUsCisgICAgICAgICAgICAgYXMgVGVtcG9y
YWxEdXJhdGlvbjo6e3RvVGVtcG9yYWxEdXJhdGlvbiwgZnJvbUR1cmF0aW9uTGlrZSwgdG9JU084
NjAxRHVyYXRpb259LgorICAgICAgICAgICAgIChOb3RlOiBUaGUgbGFzdCBvZiB0aGVzZSBkb2Vz
bid0IHRha2UgYSBkaXNhbGxvd2VkRmllbGRzIHBhcmFtZXRlcjsKKyAgICAgICAgICAgICAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudCBjYW4gZG8gdGhpcyBhZnRlciB0aGUgZmFjdCwgc2luY2Ugbm8g
b25lIGVsc2UgbWFrZXMgdXNlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eS4pCisgICAgICAgICAgMy4g
RXh0cmFjdCBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4gaW50byBhIGhlbHBlciBmdW5jdGlvbiwg
YHRlbXBvcmFsUm91bmRpbmdNb2RlYC4KKyAgICAgICAgICA0LiBSZW1vdmUgbGFyZ2VzdFN1YnBs
YWluVGltZSgpLCB3aGljaCB3YXMgZGVjbGFyZWQgYnV0IG5vdCBkZWZpbmVkLgorICAgICAgICAg
IDUuIENvcnJlY3Qgc3BlbGxpbmcgb2YgVGVtcG9yYWxQbGFpblRpbWU6OmNvbnN0cmFpblRpbWUo
KS4KKworICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVy
YXRpb246OlRlbXBvcmFsRHVyYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJv
bUR1cmF0aW9uTGlrZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0
b0lTTzg2MDFEdXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0b1RlbXBvcmFsRHVyYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJh
dGlvbjo6ZnJvbSk6CisgICAgICAgIChKU0M6OnRvdGFsTmFub3NlY29uZHMpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbER1cmF0aW9uOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxE
dXJhdGlvbjo6c2lnbik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OndpdGggY29u
c3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpuZWdhdGVkIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6YWJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
bGFyZ2VzdFN1YmR1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OmJhbGFuY2UpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjphZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpzdWJ0cmFjdCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnJvdW5kKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxEdXJhdGlvbjo6cm91bmQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9u
Ojp0b3RhbCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tTm9uRHVyYXRpb25WYWx1ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uUmVjb3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6bGFyZ2VzdFN1YmR1cmF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dGVtcG9yYWxSb3VuZGlu
Z01vZGUpOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5U
aW1lOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OmNvbnN0cmFpblRpbWUpOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6cmVndWxhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpz
dWJ0cmFjdCBjb25zdCk6CisgICAgICAgIChKU0M6OmV4dHJhY3REaWZmZXJlbmNlT3B0aW9ucyk6
CisgICAgICAgIChKU0M6OmNvbnN0cmFpbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
dG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5oOgorCiAyMDIxLTA5LTA5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gT3B0aW1pemUgb3BfZ2V0X3Byb3BlcnR5X2Vu
dW1lcmF0b3IgZnVydGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uLmNwcAppbmRleCAxYzEwMDU4NzIyMWUzMmM3NjNkNDNiZTc2ODIxZjBi
ZmVlYjNlYTQ3Li41NjVkN2IwMjI4YmFhYTUzMDQ0M2NlZjZkNmU3Y2VlMzE5YmRkZTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNw
cApAQCAtNDgsOSArNDgsOSBAQCBzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShWTSYg
dm0sIHVuc2lnbmVkIGluZGV4KQogCiBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxEdXJhdGlvbjo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbER1cmF0aW9uKSB9OwogCi1UZW1wb3JhbER1cmF0aW9u
KiBUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3ViZHVyYXRpb25zJiYgc3ViZHVyYXRpb25zKQorVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxE
dXJhdGlvbjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkR1
cmF0aW9uJiYgZHVyYXRpb24pCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8VGVtcG9yYWxEdXJhdGlvbj4odm0uaGVhcCkpIFRlbXBvcmFsRHVyYXRpb24o
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzdWJkdXJhdGlvbnMpKTsKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uPih2bS5oZWFwKSkg
VGVtcG9yYWxEdXJhdGlvbih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1cmF0aW9uKSk7CiAgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTYw
LDkgKzYwLDkgQEAgU3RydWN0dXJlKiBUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLVRlbXBvcmFsRHVyYXRpb246OlRlbXBv
cmFsRHVyYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ViZHVyYXRpb25zJiYg
c3ViZHVyYXRpb25zKQorVGVtcG9yYWxEdXJhdGlvbjo6VGVtcG9yYWxEdXJhdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQogICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgICwgbV9zdWJkdXJhdGlvbnMoV1RGTW92ZShzdWJk
dXJhdGlvbnMpKQorICAgICwgbV9kdXJhdGlvbihXVEZNb3ZlKGR1cmF0aW9uKSkKIHsKIH0KIApA
QCAtNzQsMzIgKzc0LDMzIEBAIHZvaWQgVGVtcG9yYWxEdXJhdGlvbjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogCiAvLyBDcmVhdGVUZW1wb3JhbER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vl
a3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vj
b25kcywgbmFub3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFsZHVyYXRpb24KLVRl
bXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3ViZHVyYXRpb25zJiYgc3ViZHVyYXRpb25zLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK1RlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRy
eUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVNPODYwMTo6RHVy
YXRpb24mJiBkdXJhdGlvbiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGlmICghSVNPODYwMTo6aXNWYWxpZER1cmF0aW9uKHN1YmR1cmF0aW9ucykp
IHsKKyAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJhdGlvbihkdXJhdGlvbikpIHsKICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
biBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNpZ24iX3MpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIHJldHVybiBUZW1wb3JhbER1cmF0aW9u
OjpjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+ZHVyYXRp
b25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShzdWJkdXJhdGlvbnMpKTsKKyAgICByZXR1cm4gVGVtcG9y
YWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmpl
Y3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUoZHVyYXRpb24pKTsKIH0KIAogLy8gVG9U
ZW1wb3JhbER1cmF0aW9uUmVjb3JkICggdGVtcG9yYWxEdXJhdGlvbkxpa2UgKQogLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGR1cmF0
aW9ucmVjb3JkCi1UZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlv
bjo6ZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBkdXJhdGlvbkxpa2UpCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjpm
cm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBk
dXJhdGlvbkxpa2UpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEFTU0VSVCghZHVyYXRp
b25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZtKSk7CisgICAgaWYgKGR1cmF0aW9u
TGlrZS0+aW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKQorICAgICAgICByZXR1cm4ganND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPihkdXJhdGlvbkxpa2UpLT5tX2R1cmF0aW9uOwogCi0gICAg
U3ViZHVyYXRpb25zIHJlc3VsdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQ7CiAgICAg
YXV0byBoYXNSZWxldmFudFByb3BlcnR5ID0gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gZHVyYXRpb25MaWtlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOwor
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZHVyYXRpb25MaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUodm0sIGkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAogICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTI1LDQzICsx
MjYsNTIgQEAgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246
OmZyb21Ob25EdXJhdGlvblZhbHVlKEpTR2xvYmFsT2IKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci0vLyBUb1RlbXBvcmFsRHVyYXRpb24gKCBpdGVtICkKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxkdXJhdGlvbgotVGVtcG9yYWxE
dXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKKy8vIFRvTGltaXRlZFRlbXBvcmFsRHVyYXRp
b24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxkcyApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0ZW1wb3Jh
bGR1cmF0aW9uCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0b0lTTzg2MDFE
dXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1w
b3JhbER1cmF0aW9uPih2bSkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KGl0ZW1WYWx1ZSk7Ci0KKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbjsKICAgICBp
ZiAoaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgYXV0byBzdWJkdXJhdGlvbnMgPSBm
cm9tTm9uRHVyYXRpb25WYWx1ZShnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICBkdXJhdGlvbiA9IGZy
b21EdXJhdGlvbkxpa2UoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChpdGVtVmFsdWUpKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBTdHJpbmcgc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgV1RGTW92ZShzdWJkdXJhdGlvbnMpKSk7Ci0gICAgfQorICAgICAgICBhdXRv
IHBhcnNlZER1cmF0aW9uID0gSVNPODYwMTo6cGFyc2VEdXJhdGlvbihzdHJpbmcpOworICAgICAg
ICBpZiAoIXBhcnNlZER1cmF0aW9uKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBwYXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQogCi0gICAgU3RyaW5nIHN0cmluZyA9
IGl0ZW1WYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICBkdXJhdGlvbiA9IHBhcnNlZER1cmF0aW9u
LnZhbHVlKCk7CisgICAgfQogCi0gICAgYXV0byBwYXJzZWRTdWJkdXJhdGlvbnMgPSBJU084NjAx
OjpwYXJzZUR1cmF0aW9uKHN0cmluZyk7Ci0gICAgaWYgKCFwYXJzZWRTdWJkdXJhdGlvbnMpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb3VsZCBub3Qg
cGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVy
dGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFRlbXBv
cmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHBhcnNl
ZFN1YmR1cmF0aW9ucy52YWx1ZSgpKSkpOworICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotVGVt
cG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25S
ZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1cmF0
aW9uTGlrZSkKKy8vIFRvVGVtcG9yYWxEdXJhdGlvbiAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGR1cmF0aW9uCitU
ZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b1RlbXBvcmFsRHVyYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmICh0ZW1wb3JhbER1cmF0aW9uTGlrZS5pbmhlcml0czxUZW1w
b3JhbER1cmF0aW9uPih2bSkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHRlbXBvcmFsRHVyYXRpb25MaWtlKS0+c3ViZHVyYXRpb25zKCk7CisgICAgaWYgKGl0ZW1W
YWx1ZS5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkpCisgICAgICAgIHJldHVybiBqc0Nh
c3Q8VGVtcG9yYWxEdXJhdGlvbio+KGl0ZW1WYWx1ZSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHRv
SVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIHJldHVybiBmcm9tTm9uRHVyYXRpb25W
YWx1ZShnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKKyAgICByZXR1cm4gVGVt
cG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJl
KCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVy
YXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFs
dWUpCkBAIC0xNjksMjMgKzE3OSwyMyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0
aW9uOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaQogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8
VGVtcG9yYWxEdXJhdGlvbj4odm0pKSB7Ci0gICAgICAgIFN1YmR1cmF0aW9ucyBjbG9uZWQgPSBq
c0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KGl0ZW1WYWx1ZSktPm1fc3ViZHVyYXRpb25zOworICAg
ICAgICBJU084NjAxOjpEdXJhdGlvbiBjbG9uZWQgPSBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+
KGl0ZW1WYWx1ZSktPm1fZHVyYXRpb247CiAgICAgICAgIHJldHVybiBUZW1wb3JhbER1cmF0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShj
bG9uZWQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gdG9EdXJhdGlvbihnbG9iYWxPYmplY3QsIGl0
ZW1WYWx1ZSk7CisgICAgcmV0dXJuIHRvVGVtcG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIGl0
ZW1WYWx1ZSk7CiB9CiAKIC8vIFRvdGFsRHVyYXRpb25OYW5vc2Vjb25kcyAoIGRheXMsIGhvdXJz
LCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29u
ZHMsIG9mZnNldFNoaWZ0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLXRvdGFsZHVyYXRpb25uYW5vc2Vjb25kcwotc3RhdGljIGRvdWJsZSB0b3Rh
bE5hbm9zZWNvbmRzKFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25z
KQorc3RhdGljIGRvdWJsZSB0b3RhbE5hbm9zZWNvbmRzKElTTzg2MDE6OkR1cmF0aW9uJiBkdXJh
dGlvbikKIHsKLSAgICBhdXRvIGhvdXJzID0gMjQgKiBzdWJkdXJhdGlvbnMuZGF5cygpICsgc3Vi
ZHVyYXRpb25zLmhvdXJzKCk7Ci0gICAgYXV0byBtaW51dGVzID0gNjAgKiBob3VycyArIHN1YmR1
cmF0aW9ucy5taW51dGVzKCk7Ci0gICAgYXV0byBzZWNvbmRzID0gNjAgKiBtaW51dGVzICsgc3Vi
ZHVyYXRpb25zLnNlY29uZHMoKTsKLSAgICBhdXRvIG1pbGxpc2Vjb25kcyA9IDEwMDAgKiBzZWNv
bmRzICsgc3ViZHVyYXRpb25zLm1pbGxpc2Vjb25kcygpOwotICAgIGF1dG8gbWljcm9zZWNvbmRz
ID0gMTAwMCAqIG1pbGxpc2Vjb25kcyArIHN1YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKTsKLSAg
ICByZXR1cm4gMTAwMCAqIG1pY3Jvc2Vjb25kcyArIHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygp
OworICAgIGF1dG8gaG91cnMgPSAyNCAqIGR1cmF0aW9uLmRheXMoKSArIGR1cmF0aW9uLmhvdXJz
KCk7CisgICAgYXV0byBtaW51dGVzID0gNjAgKiBob3VycyArIGR1cmF0aW9uLm1pbnV0ZXMoKTsK
KyAgICBhdXRvIHNlY29uZHMgPSA2MCAqIG1pbnV0ZXMgKyBkdXJhdGlvbi5zZWNvbmRzKCk7Cisg
ICAgYXV0byBtaWxsaXNlY29uZHMgPSAxMDAwICogc2Vjb25kcyArIGR1cmF0aW9uLm1pbGxpc2Vj
b25kcygpOworICAgIGF1dG8gbWljcm9zZWNvbmRzID0gMTAwMCAqIG1pbGxpc2Vjb25kcyArIGR1
cmF0aW9uLm1pY3Jvc2Vjb25kcygpOworICAgIHJldHVybiAxMDAwICogbWljcm9zZWNvbmRzICsg
ZHVyYXRpb24ubmFub3NlY29uZHMoKTsKIH0KIAogSlNWYWx1ZSBUZW1wb3JhbER1cmF0aW9uOjpj
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWVPbmUsIEpT
VmFsdWUgdmFsdWVUd28pCkBAIC0xOTMsMTAgKzIwMywxMCBAQCBKU1ZhbHVlIFRlbXBvcmFsRHVy
YXRpb246OmNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZU9uZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBvbmUgPSB0b0R1cmF0aW9uKGds
b2JhbE9iamVjdCwgdmFsdWVPbmUpOworICAgIGF1dG8qIG9uZSA9IHRvVGVtcG9yYWxEdXJhdGlv
bihnbG9iYWxPYmplY3QsIHZhbHVlT25lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCi0gICAgYXV0byogdHdvID0gdG9EdXJhdGlvbihnbG9iYWxPYmplY3QsIHZhbHVl
VHdvKTsKKyAgICBhdXRvKiB0d28gPSB0b1RlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB2
YWx1ZVR3byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGlt
ZSAvIFpvbmVkRGF0ZVRpbWUuCkBAIC0yMDUsMTQgKzIxNSwxNCBAQCBKU1ZhbHVlIFRlbXBvcmFs
RHVyYXRpb246OmNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZU9uZQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGF1dG8gbnNPbmUgPSB0
b3RhbE5hbm9zZWNvbmRzKG9uZS0+bV9zdWJkdXJhdGlvbnMpOwotICAgIGF1dG8gbnNUd28gPSB0
b3RhbE5hbm9zZWNvbmRzKHR3by0+bV9zdWJkdXJhdGlvbnMpOworICAgIGF1dG8gbnNPbmUgPSB0
b3RhbE5hbm9zZWNvbmRzKG9uZS0+bV9kdXJhdGlvbik7CisgICAgYXV0byBuc1R3byA9IHRvdGFs
TmFub3NlY29uZHModHdvLT5tX2R1cmF0aW9uKTsKICAgICByZXR1cm4ganNOdW1iZXIobnNPbmUg
PiBuc1R3byA/IDEgOiBuc09uZSA8IG5zVHdvID8gLTEgOiAwKTsKIH0KIAotaW50IFRlbXBvcmFs
RHVyYXRpb246OnNpZ24oY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJk
dXJhdGlvbnMpCitpbnQgVGVtcG9yYWxEdXJhdGlvbjo6c2lnbihjb25zdCBJU084NjAxOjpEdXJh
dGlvbiYgZHVyYXRpb24pCiB7Ci0gICAgZm9yIChhdXRvIHZhbHVlIDogc3ViZHVyYXRpb25zKSB7
CisgICAgZm9yIChhdXRvIHZhbHVlIDogZHVyYXRpb24pIHsKICAgICAgICAgaWYgKHZhbHVlIDwg
MCkKICAgICAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMjIzLDE5ICsyMzMsMTkgQEAgaW50IFRl
bXBvcmFsRHVyYXRpb246OnNpZ24oY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25z
JiBzdWJkdXJhdGlvbnMpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVRlbXBvcmFsRHVyYXRpb246OlN1
YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBkdXJhdGlvbkxpa2UpIGNvbnN0CitJU084NjAxOjpEdXJhdGlvbiBU
ZW1wb3JhbER1cmF0aW9uOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBkdXJhdGlvbkxpa2UpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN1
YmR1cmF0aW9ucyByZXN1bHQ7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1
dG8gaGFzUmVsZXZhbnRQcm9wZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzOyBpKyspIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IG1fc3ViZHVyYXRp
b25zW2ldOworICAgICAgICAgICAgcmVzdWx0W2ldID0gbV9kdXJhdGlvbltpXTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTI1Nyw0MSArMjY3LDM4IEBAIFRlbXBvcmFs
RHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp3aXRoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVGVtcG9yYWxEdXJhdGlv
bjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246Om5lZ2F0ZWQoKSBjb25zdAorSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6bmVnYXRlZCgpIGNvbnN0CiB7Ci0gICAgU3Vi
ZHVyYXRpb25zIHJlc3VsdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVt
cG9yYWxVbml0czsgaSsrKQotICAgICAgICByZXN1bHRbaV0gPSAtbV9zdWJkdXJhdGlvbnNbaV07
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gLW1fZHVyYXRpb247CiB9CiAKLVRlbXBv
cmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjphYnMoKSBjb25zdAor
SVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6YWJzKCkgY29uc3QKIHsKLSAgICBT
dWJkdXJhdGlvbnMgcmVzdWx0OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxVbml0czsgaSsrKQotICAgICAg
ICByZXN1bHRbaV0gPSBzdGQ6OmFicyhtX3N1YmR1cmF0aW9uc1tpXSk7CisgICAgICAgIHJlc3Vs
dFtpXSA9IHN0ZDo6YWJzKG1fZHVyYXRpb25baV0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IC8vIERlZmF1bHRUZW1wb3JhbExhcmdlc3RVbml0ICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRh
eXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcyAp
CiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1kZWZh
dWx0dGVtcG9yYWxsYXJnZXN0dW5pdAotVGVtcG9yYWxVbml0IFRlbXBvcmFsRHVyYXRpb246Omxh
cmdlc3RTdWJkdXJhdGlvbigpIGNvbnN0CitzdGF0aWMgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJk
dXJhdGlvbihjb25zdCBJU084NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24pCiB7CiAgICAgdWludDhf
dCBpbmRleCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzIC0g
MSAmJiAhbV9zdWJkdXJhdGlvbnNbaW5kZXhdKQorICAgIHdoaWxlIChpbmRleCA8IG51bWJlck9m
VGVtcG9yYWxVbml0cyAtIDEgJiYgIWR1cmF0aW9uW2luZGV4XSkKICAgICAgICAgaW5kZXgrKzsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCk7CiB9CiAKIC8vIEJh
bGFuY2VEdXJhdGlvbiAoIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29u
ZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMsIGxhcmdlc3RVbml0IFsgLCByZWxhdGl2ZVRv
IF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
YmFsYW5jZWR1cmF0aW9uCi12b2lkIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UoU3ViZHVyYXRp
b25zJiBzdWJkdXJhdGlvbnMsIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCkKK3ZvaWQgVGVtcG9y
YWxEdXJhdGlvbjo6YmFsYW5jZShJU084NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24sIFRlbXBvcmFs
VW5pdCBsYXJnZXN0VW5pdCkKIHsKLSAgICBhdXRvIG5hbm9zZWNvbmRzID0gdG90YWxOYW5vc2Vj
b25kcyhzdWJkdXJhdGlvbnMpOwotICAgIHN1YmR1cmF0aW9ucy5jbGVhcigpOworICAgIGF1dG8g
bmFub3NlY29uZHMgPSB0b3RhbE5hbm9zZWNvbmRzKGR1cmF0aW9uKTsKKyAgICBkdXJhdGlvbi5j
bGVhcigpOwogCiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6RGF5KSB7Ci0g
ICAgICAgIHN1YmR1cmF0aW9ucy5zZXREYXlzKHN0ZDo6dHJ1bmMobmFub3NlY29uZHMgLyBuYW5v
c2Vjb25kc1BlckRheSkpOworICAgICAgICBkdXJhdGlvbi5zZXREYXlzKHN0ZDo6dHJ1bmMobmFu
b3NlY29uZHMgLyBuYW5vc2Vjb25kc1BlckRheSkpOwogICAgICAgICBuYW5vc2Vjb25kcyA9IHN0
ZDo6Zm1vZChuYW5vc2Vjb25kcywgbmFub3NlY29uZHNQZXJEYXkpOwogICAgIH0KIApAQCAtMzAw
LDc4ICszMDcsNzggQEAgdm9pZCBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKFN1YmR1cmF0aW9u
cyYgc3ViZHVyYXRpb25zLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFUKICAgICBkb3VibGUgc2Vjb25k
cyA9IHN0ZDo6dHJ1bmMobWlsbGlzZWNvbmRzIC8gMTAwMCk7CiAgICAgZG91YmxlIG1pbnV0ZXMg
PSBzdGQ6OnRydW5jKHNlY29uZHMgLyA2MCk7CiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBv
cmFsVW5pdDo6SG91cikgewotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMoc3Rk
OjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaWNy
b3NlY29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJh
dGlvbnMuc2V0TWlsbGlzZWNvbmRzKHN0ZDo6Zm1vZChtaWxsaXNlY29uZHMsIDEwMDApKTsKLSAg
ICAgICAgc3ViZHVyYXRpb25zLnNldFNlY29uZHMoc3RkOjpmbW9kKHNlY29uZHMsIDYwKSk7Ci0g
ICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaW51dGVzKHN0ZDo6Zm1vZChtaW51dGVzLCA2MCkpOwot
ICAgICAgICBzdWJkdXJhdGlvbnMuc2V0SG91cnMoc3RkOjp0cnVuYyhtaW51dGVzIC8gNjApKTsK
KyAgICAgICAgZHVyYXRpb24uc2V0TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAx
MDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhzdGQ6OmZtb2QobWljcm9z
ZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhzdGQ6OmZt
b2QobWlsbGlzZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldFNlY29uZHMoc3Rk
OjpmbW9kKHNlY29uZHMsIDYwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pbnV0ZXMoc3RkOjpm
bW9kKG1pbnV0ZXMsIDYwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldEhvdXJzKHN0ZDo6dHJ1bmMo
bWludXRlcyAvIDYwKSk7CiAgICAgfSBlbHNlIGlmIChsYXJnZXN0VW5pdCA9PSBUZW1wb3JhbFVu
aXQ6Ok1pbnV0ZSkgewotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMoc3RkOjpm
bW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaWNyb3Nl
Y29uZHMoc3RkOjpmbW9kKG1pY3Jvc2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJhdGlv
bnMuc2V0TWlsbGlzZWNvbmRzKHN0ZDo6Zm1vZChtaWxsaXNlY29uZHMsIDEwMDApKTsKLSAgICAg
ICAgc3ViZHVyYXRpb25zLnNldFNlY29uZHMoc3RkOjpmbW9kKHNlY29uZHMsIDYwKSk7Ci0gICAg
ICAgIHN1YmR1cmF0aW9ucy5zZXRNaW51dGVzKG1pbnV0ZXMpOworICAgICAgICBkdXJhdGlvbi5z
ZXROYW5vc2Vjb25kcyhzdGQ6OmZtb2QobmFub3NlY29uZHMsIDEwMDApKTsKKyAgICAgICAgZHVy
YXRpb24uc2V0TWljcm9zZWNvbmRzKHN0ZDo6Zm1vZChtaWNyb3NlY29uZHMsIDEwMDApKTsKKyAg
ICAgICAgZHVyYXRpb24uc2V0TWlsbGlzZWNvbmRzKHN0ZDo6Zm1vZChtaWxsaXNlY29uZHMsIDEw
MDApKTsKKyAgICAgICAgZHVyYXRpb24uc2V0U2Vjb25kcyhzdGQ6OmZtb2Qoc2Vjb25kcywgNjAp
KTsKKyAgICAgICAgZHVyYXRpb24uc2V0TWludXRlcyhtaW51dGVzKTsKICAgICB9IGVsc2UgaWYg
KGxhcmdlc3RVbml0ID09IFRlbXBvcmFsVW5pdDo6U2Vjb25kKSB7Ci0gICAgICAgIHN1YmR1cmF0
aW9ucy5zZXROYW5vc2Vjb25kcyhzdGQ6OmZtb2QobmFub3NlY29uZHMsIDEwMDApKTsKLSAgICAg
ICAgc3ViZHVyYXRpb25zLnNldE1pY3Jvc2Vjb25kcyhzdGQ6OmZtb2QobWljcm9zZWNvbmRzLCAx
MDAwKSk7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaWxsaXNlY29uZHMoc3RkOjpmbW9kKG1p
bGxpc2Vjb25kcywgMTAwMCkpOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0U2Vjb25kcyhzZWNv
bmRzKTsKKyAgICAgICAgZHVyYXRpb24uc2V0TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNv
bmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhzdGQ6OmZtb2Qo
bWljcm9zZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhz
dGQ6OmZtb2QobWlsbGlzZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0aW9uLnNldFNlY29u
ZHMoc2Vjb25kcyk7CiAgICAgfSBlbHNlIGlmIChsYXJnZXN0VW5pdCA9PSBUZW1wb3JhbFVuaXQ6
Ok1pbGxpc2Vjb25kKSB7Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXROYW5vc2Vjb25kcyhzdGQ6
OmZtb2QobmFub3NlY29uZHMsIDEwMDApKTsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldE1pY3Jv
c2Vjb25kcyhzdGQ6OmZtb2QobWljcm9zZWNvbmRzLCAxMDAwKSk7Ci0gICAgICAgIHN1YmR1cmF0
aW9ucy5zZXRNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTsKKyAgICAgICAgZHVyYXRpb24uc2V0
TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7CisgICAgICAgIGR1cmF0
aW9uLnNldE1pY3Jvc2Vjb25kcyhzdGQ6OmZtb2QobWljcm9zZWNvbmRzLCAxMDAwKSk7CisgICAg
ICAgIGR1cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZHMpOwogICAgIH0gZWxzZSBp
ZiAobGFyZ2VzdFVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCkgewotICAgICAgICBz
dWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAwKSk7
Ci0gICAgICAgIHN1YmR1cmF0aW9ucy5zZXRNaWNyb3NlY29uZHMobWljcm9zZWNvbmRzKTsKKyAg
ICAgICAgZHVyYXRpb24uc2V0TmFub3NlY29uZHMoc3RkOjpmbW9kKG5hbm9zZWNvbmRzLCAxMDAw
KSk7CisgICAgICAgIGR1cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOwogICAg
IH0gZWxzZQotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TmFub3NlY29uZHMobmFub3NlY29uZHMp
OworICAgICAgICBkdXJhdGlvbi5zZXROYW5vc2Vjb25kcyhuYW5vc2Vjb25kcyk7CiB9CiAKLVRl
bXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjphZGQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdGhlclZhbHVlKSBjb25zdAorSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3RoZXJWYWx1ZSkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogb3RoZXIgPSB0b0R1cmF0aW9uKGdsb2JhbE9iamVjdCwgb3RoZXJWYWx1ZSk7
CisgICAgYXV0byBvdGhlciA9IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgb3RoZXJW
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAv
IFpvbmVkRGF0ZVRpbWUuCi0gICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6bWluKGxhcmdlc3RT
dWJkdXJhdGlvbigpLCBvdGhlci0+bGFyZ2VzdFN1YmR1cmF0aW9uKCkpOworICAgIGF1dG8gbGFy
Z2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRpb24obV9kdXJhdGlvbiksIGxhcmdl
c3RTdWJkdXJhdGlvbihvdGhlcikpOwogICAgIGlmIChsYXJnZXN0VW5pdCA8PSBUZW1wb3JhbFVu
aXQ6OldlZWspIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3QgYWRkIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91
dCBhIHJlbGF0aXZlVG8gb3B0aW9uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
LSAgICBTdWJkdXJhdGlvbnMgcmVzdWx0IHsKLSAgICAgICAgMCwgMCwgMCwgZGF5cygpICsgb3Ro
ZXItPmRheXMoKSwKLSAgICAgICAgaG91cnMoKSArIG90aGVyLT5ob3VycygpLCBtaW51dGVzKCkg
KyBvdGhlci0+bWludXRlcygpLCBzZWNvbmRzKCkgKyBvdGhlci0+c2Vjb25kcygpLAotICAgICAg
ICBtaWxsaXNlY29uZHMoKSArIG90aGVyLT5taWxsaXNlY29uZHMoKSwgbWljcm9zZWNvbmRzKCkg
KyBvdGhlci0+bWljcm9zZWNvbmRzKCksIG5hbm9zZWNvbmRzKCkgKyBvdGhlci0+bmFub3NlY29u
ZHMoKQorICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdCB7CisgICAgICAgIDAsIDAsIDAsIGRh
eXMoKSArIG90aGVyLmRheXMoKSwKKyAgICAgICAgaG91cnMoKSArIG90aGVyLmhvdXJzKCksIG1p
bnV0ZXMoKSArIG90aGVyLm1pbnV0ZXMoKSwgc2Vjb25kcygpICsgb3RoZXIuc2Vjb25kcygpLAor
ICAgICAgICBtaWxsaXNlY29uZHMoKSArIG90aGVyLm1pbGxpc2Vjb25kcygpLCBtaWNyb3NlY29u
ZHMoKSArIG90aGVyLm1pY3Jvc2Vjb25kcygpLCBuYW5vc2Vjb25kcygpICsgb3RoZXIubmFub3Nl
Y29uZHMoKQogICAgIH07CiAKICAgICBiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1w
b3JhbER1cmF0aW9uOjpzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIG90aGVyVmFsdWUpIGNvbnN0CitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
OjpzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG90aGVyVmFs
dWUpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIG90aGVyID0gdG9E
dXJhdGlvbihnbG9iYWxPYmplY3QsIG90aGVyVmFsdWUpOworICAgIGF1dG8gb3RoZXIgPSB0b0lT
Tzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIG90aGVyVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbGF0aXZl
VG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1lLgotICAgIGF1
dG8gbGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRpb24oKSwgb3RoZXItPmxh
cmdlc3RTdWJkdXJhdGlvbigpKTsKKyAgICBhdXRvIGxhcmdlc3RVbml0ID0gc3RkOjptaW4obGFy
Z2VzdFN1YmR1cmF0aW9uKG1fZHVyYXRpb24pLCBsYXJnZXN0U3ViZHVyYXRpb24ob3RoZXIpKTsK
ICAgICBpZiAobGFyZ2VzdFVuaXQgPD0gVGVtcG9yYWxVbml0OjpXZWVrKSB7CiAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHN1YnRyYWN0IGEgZHVy
YXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0aXZlVG8gb3B0
aW9uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBTdWJkdXJhdGlvbnMg
cmVzdWx0IHsKLSAgICAgICAgMCwgMCwgMCwgZGF5cygpIC0gb3RoZXItPmRheXMoKSwKLSAgICAg
ICAgaG91cnMoKSAtIG90aGVyLT5ob3VycygpLCBtaW51dGVzKCkgLSBvdGhlci0+bWludXRlcygp
LCBzZWNvbmRzKCkgLSBvdGhlci0+c2Vjb25kcygpLAotICAgICAgICBtaWxsaXNlY29uZHMoKSAt
IG90aGVyLT5taWxsaXNlY29uZHMoKSwgbWljcm9zZWNvbmRzKCkgLSBvdGhlci0+bWljcm9zZWNv
bmRzKCksIG5hbm9zZWNvbmRzKCkgLSBvdGhlci0+bmFub3NlY29uZHMoKQorICAgIElTTzg2MDE6
OkR1cmF0aW9uIHJlc3VsdCB7CisgICAgICAgIDAsIDAsIDAsIGRheXMoKSAtIG90aGVyLmRheXMo
KSwKKyAgICAgICAgaG91cnMoKSAtIG90aGVyLmhvdXJzKCksIG1pbnV0ZXMoKSAtIG90aGVyLm1p
bnV0ZXMoKSwgc2Vjb25kcygpIC0gb3RoZXIuc2Vjb25kcygpLAorICAgICAgICBtaWxsaXNlY29u
ZHMoKSAtIG90aGVyLm1pbGxpc2Vjb25kcygpLCBtaWNyb3NlY29uZHMoKSAtIG90aGVyLm1pY3Jv
c2Vjb25kcygpLCBuYW5vc2Vjb25kcygpIC0gb3RoZXIubmFub3NlY29uZHMoKQogICAgIH07CiAK
ICAgICBiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOwpAQCAtMzgwLDYwICszODcsNjAgQEAg
VGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246OnN1YnRyYWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogLy8gUm91bmREdXJhdGlvbiAoIHllYXJzLCBtb250
aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBt
aWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSBb
ICwgcmVsYXRpdmVUbyBdICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLXJvdW5kZHVyYXRpb24KLWRvdWJsZSBUZW1wb3JhbER1cmF0aW9uOjpyb3Vu
ZChUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucywgZG91YmxlIGlu
Y3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSBtb2RlKQorZG91YmxlIFRl
bXBvcmFsRHVyYXRpb246OnJvdW5kKElTTzg2MDE6OkR1cmF0aW9uJiBkdXJhdGlvbiwgZG91Ymxl
IGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSBtb2RlKQogewogICAg
IEFTU0VSVCh1bml0ID49IFRlbXBvcmFsVW5pdDo6RGF5KTsKICAgICBkb3VibGUgcmVtYWluZGVy
ID0gMDsKIAogICAgIGlmICh1bml0ID09IFRlbXBvcmFsVW5pdDo6RGF5KSB7Ci0gICAgICAgIGF1
dG8gb3JpZ2luYWxEYXlzID0gc3ViZHVyYXRpb25zLmRheXMoKTsKLSAgICAgICAgc3ViZHVyYXRp
b25zLnNldERheXMoMCk7Ci0gICAgICAgIGF1dG8gbmFub3NlY29uZHMgPSB0b3RhbE5hbm9zZWNv
bmRzKHN1YmR1cmF0aW9ucyk7CisgICAgICAgIGF1dG8gb3JpZ2luYWxEYXlzID0gZHVyYXRpb24u
ZGF5cygpOworICAgICAgICBkdXJhdGlvbi5zZXREYXlzKDApOworICAgICAgICBhdXRvIG5hbm9z
ZWNvbmRzID0gdG90YWxOYW5vc2Vjb25kcyhkdXJhdGlvbik7CiAKICAgICAgICAgYXV0byBmcmFj
dGlvbmFsRGF5cyA9IG9yaWdpbmFsRGF5cyArIG5hbm9zZWNvbmRzIC8gbmFub3NlY29uZHNQZXJE
YXk7CiAgICAgICAgIGF1dG8gbmV3RGF5cyA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZnJhY3Rp
b25hbERheXMsIGluY3JlbWVudCwgbW9kZSk7CiAgICAgICAgIHJlbWFpbmRlciA9IGZyYWN0aW9u
YWxEYXlzIC0gbmV3RGF5czsKLSAgICAgICAgc3ViZHVyYXRpb25zLnNldERheXMobmV3RGF5cyk7
CisgICAgICAgIGR1cmF0aW9uLnNldERheXMobmV3RGF5cyk7CiAgICAgfSBlbHNlIGlmICh1bml0
ID09IFRlbXBvcmFsVW5pdDo6SG91cikgewotICAgICAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmRz
ID0gc3ViZHVyYXRpb25zLnNlY29uZHMoKSArIHN1YmR1cmF0aW9ucy5taWxsaXNlY29uZHMoKSAq
IDFlLTMgKyBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKiAxZS02ICsgc3ViZHVyYXRpb25z
Lm5hbm9zZWNvbmRzKCkgKiAxZS05OwotICAgICAgICBhdXRvIGZyYWN0aW9uYWxIb3VycyA9IHN1
YmR1cmF0aW9ucy5ob3VycygpICsgKHN1YmR1cmF0aW9ucy5taW51dGVzKCkgKyBmcmFjdGlvbmFs
U2Vjb25kcyAvIDYwKSAvIDYwOworICAgICAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmRzID0gZHVy
YXRpb24uc2Vjb25kcygpICsgZHVyYXRpb24ubWlsbGlzZWNvbmRzKCkgKiAxZS0zICsgZHVyYXRp
b24ubWljcm9zZWNvbmRzKCkgKiAxZS02ICsgZHVyYXRpb24ubmFub3NlY29uZHMoKSAqIDFlLTk7
CisgICAgICAgIGF1dG8gZnJhY3Rpb25hbEhvdXJzID0gZHVyYXRpb24uaG91cnMoKSArIChkdXJh
dGlvbi5taW51dGVzKCkgKyBmcmFjdGlvbmFsU2Vjb25kcyAvIDYwKSAvIDYwOwogICAgICAgICBh
dXRvIG5ld0hvdXJzID0gcm91bmROdW1iZXJUb0luY3JlbWVudChmcmFjdGlvbmFsSG91cnMsIGlu
Y3JlbWVudCwgbW9kZSk7CiAgICAgICAgIHJlbWFpbmRlciA9IGZyYWN0aW9uYWxIb3VycyAtIG5l
d0hvdXJzOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0SG91cnMobmV3SG91cnMpOworICAgICAg
ICBkdXJhdGlvbi5zZXRIb3VycyhuZXdIb3Vycyk7CiAgICAgfSBlbHNlIGlmICh1bml0ID09IFRl
bXBvcmFsVW5pdDo6TWludXRlKSB7Ci0gICAgICAgIGF1dG8gZnJhY3Rpb25hbFNlY29uZHMgPSBz
dWJkdXJhdGlvbnMuc2Vjb25kcygpICsgc3ViZHVyYXRpb25zLm1pbGxpc2Vjb25kcygpICogMWUt
MyArIHN1YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKSAqIDFlLTYgKyBzdWJkdXJhdGlvbnMubmFu
b3NlY29uZHMoKSAqIDFlLTk7Ci0gICAgICAgIGF1dG8gZnJhY3Rpb25hbE1pbnV0ZXMgPSBzdWJk
dXJhdGlvbnMubWludXRlcygpICsgZnJhY3Rpb25hbFNlY29uZHMgLyA2MDsKKyAgICAgICAgYXV0
byBmcmFjdGlvbmFsU2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMoKSArIGR1cmF0aW9uLm1pbGxp
c2Vjb25kcygpICogMWUtMyArIGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpICogMWUtNiArIGR1cmF0
aW9uLm5hbm9zZWNvbmRzKCkgKiAxZS05OworICAgICAgICBhdXRvIGZyYWN0aW9uYWxNaW51dGVz
ID0gZHVyYXRpb24ubWludXRlcygpICsgZnJhY3Rpb25hbFNlY29uZHMgLyA2MDsKICAgICAgICAg
YXV0byBuZXdNaW51dGVzID0gcm91bmROdW1iZXJUb0luY3JlbWVudChmcmFjdGlvbmFsTWludXRl
cywgaW5jcmVtZW50LCBtb2RlKTsKICAgICAgICAgcmVtYWluZGVyID0gZnJhY3Rpb25hbE1pbnV0
ZXMgLSBuZXdNaW51dGVzOwotICAgICAgICBzdWJkdXJhdGlvbnMuc2V0TWludXRlcyhuZXdNaW51
dGVzKTsKKyAgICAgICAgZHVyYXRpb24uc2V0TWludXRlcyhuZXdNaW51dGVzKTsKICAgICB9IGVs
c2UgaWYgKHVuaXQgPT0gVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKLSAgICAgICAgYXV0byBmcmFj
dGlvbmFsU2Vjb25kcyA9IHN1YmR1cmF0aW9ucy5zZWNvbmRzKCkgKyBzdWJkdXJhdGlvbnMubWls
bGlzZWNvbmRzKCkgKiAxZS0zICsgc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICogMWUtNiAr
IHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpICogMWUtOTsKKyAgICAgICAgYXV0byBmcmFjdGlv
bmFsU2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMoKSArIGR1cmF0aW9uLm1pbGxpc2Vjb25kcygp
ICogMWUtMyArIGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpICogMWUtNiArIGR1cmF0aW9uLm5hbm9z
ZWNvbmRzKCkgKiAxZS05OwogICAgICAgICBhdXRvIG5ld1NlY29uZHMgPSByb3VuZE51bWJlclRv
SW5jcmVtZW50KGZyYWN0aW9uYWxTZWNvbmRzLCBpbmNyZW1lbnQsIG1vZGUpOwogICAgICAgICBy
ZW1haW5kZXIgPSBmcmFjdGlvbmFsU2Vjb25kcyAtIG5ld1NlY29uZHM7Ci0gICAgICAgIHN1YmR1
cmF0aW9ucy5zZXRTZWNvbmRzKG5ld1NlY29uZHMpOworICAgICAgICBkdXJhdGlvbi5zZXRTZWNv
bmRzKG5ld1NlY29uZHMpOwogICAgIH0gZWxzZSBpZiAodW5pdCA9PSBUZW1wb3JhbFVuaXQ6Ok1p
bGxpc2Vjb25kKSB7Ci0gICAgICAgIGF1dG8gZnJhY3Rpb25hbE1pbGxpc2Vjb25kcyA9IHN1YmR1
cmF0aW9ucy5taWxsaXNlY29uZHMoKSArIHN1YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKSAqIDFl
LTMgKyBzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSAqIDFlLTY7CisgICAgICAgIGF1dG8gZnJh
Y3Rpb25hbE1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpICsgZHVyYXRpb24u
bWljcm9zZWNvbmRzKCkgKiAxZS0zICsgZHVyYXRpb24ubmFub3NlY29uZHMoKSAqIDFlLTY7CiAg
ICAgICAgIGF1dG8gbmV3TWlsbGlzZWNvbmRzID0gcm91bmROdW1iZXJUb0luY3JlbWVudChmcmFj
dGlvbmFsTWlsbGlzZWNvbmRzLCBpbmNyZW1lbnQsIG1vZGUpOwogICAgICAgICByZW1haW5kZXIg
PSBmcmFjdGlvbmFsTWlsbGlzZWNvbmRzIC0gbmV3TWlsbGlzZWNvbmRzOwotICAgICAgICBzdWJk
dXJhdGlvbnMuc2V0TWlsbGlzZWNvbmRzKG5ld01pbGxpc2Vjb25kcyk7CisgICAgICAgIGR1cmF0
aW9uLnNldE1pbGxpc2Vjb25kcyhuZXdNaWxsaXNlY29uZHMpOwogICAgIH0gZWxzZSBpZiAodW5p
dCA9PSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kKSB7Ci0gICAgICAgIGF1dG8gZnJhY3Rpb25h
bE1pY3Jvc2Vjb25kcyA9IHN1YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKSArIHN1YmR1cmF0aW9u
cy5uYW5vc2Vjb25kcygpICogMWUtMzsKKyAgICAgICAgYXV0byBmcmFjdGlvbmFsTWljcm9zZWNv
bmRzID0gZHVyYXRpb24ubWljcm9zZWNvbmRzKCkgKyBkdXJhdGlvbi5uYW5vc2Vjb25kcygpICog
MWUtMzsKICAgICAgICAgYXV0byBuZXdNaWNyb3NlY29uZHMgPSByb3VuZE51bWJlclRvSW5jcmVt
ZW50KGZyYWN0aW9uYWxNaWNyb3NlY29uZHMsIGluY3JlbWVudCwgbW9kZSk7CiAgICAgICAgIHJl
bWFpbmRlciA9IGZyYWN0aW9uYWxNaWNyb3NlY29uZHMgLSBuZXdNaWNyb3NlY29uZHM7Ci0gICAg
ICAgIHN1YmR1cmF0aW9ucy5zZXRNaWNyb3NlY29uZHMobmV3TWljcm9zZWNvbmRzKTsKKyAgICAg
ICAgZHVyYXRpb24uc2V0TWljcm9zZWNvbmRzKG5ld01pY3Jvc2Vjb25kcyk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYXV0byBuZXdOYW5vc2Vjb25kcyA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
c3ViZHVyYXRpb25zLm5hbm9zZWNvbmRzKCksIGluY3JlbWVudCwgbW9kZSk7Ci0gICAgICAgIHJl
bWFpbmRlciA9IHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpIC0gbmV3TmFub3NlY29uZHM7Ci0g
ICAgICAgIHN1YmR1cmF0aW9ucy5zZXROYW5vc2Vjb25kcyhuZXdOYW5vc2Vjb25kcyk7CisgICAg
ICAgIGF1dG8gbmV3TmFub3NlY29uZHMgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KGR1cmF0aW9u
Lm5hbm9zZWNvbmRzKCksIGluY3JlbWVudCwgbW9kZSk7CisgICAgICAgIHJlbWFpbmRlciA9IGR1
cmF0aW9uLm5hbm9zZWNvbmRzKCkgLSBuZXdOYW5vc2Vjb25kczsKKyAgICAgICAgZHVyYXRpb24u
c2V0TmFub3NlY29uZHMobmV3TmFub3NlY29uZHMpOwogICAgIH0KIAogICAgIGZvciAoYXV0byBp
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odW5pdCkgKyAxdTsgaSA8IG51bWJlck9mVGVtcG9yYWxV
bml0czsgaSsrKQotICAgICAgICBzdWJkdXJhdGlvbnNbaV0gPSAwOworICAgICAgICBkdXJhdGlv
bltpXSA9IDA7CiAKICAgICByZXR1cm4gcmVtYWluZGVyOwogfQogCi1UZW1wb3JhbER1cmF0aW9u
OjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0CitJU084NjAxOjpEdXJhdGlv
biBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDQ0
LDcgKzQ1MSw3IEBAIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0
aW9uOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzbWFsbGVzdCA9
IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgVGVtcG9yYWxVbml0IGRlZmF1
bHRMYXJnZXN0VW5pdCA9IGxhcmdlc3RTdWJkdXJhdGlvbigpOworICAgIFRlbXBvcmFsVW5pdCBk
ZWZhdWx0TGFyZ2VzdFVuaXQgPSBsYXJnZXN0U3ViZHVyYXRpb24obV9kdXJhdGlvbik7CiAgICAg
YXV0byBsYXJnZXN0ID0gdGVtcG9yYWxMYXJnZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHsgfSwgZGVmYXVsdExhcmdlc3RVbml0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCkBAIC00NjEsOSArNDY4LDcgQEAgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRp
b25zIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAg
ICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kKTsKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0
LnZhbHVlX29yKHN0ZDo6bWluKGRlZmF1bHRMYXJnZXN0VW5pdCwgc21hbGxlc3RVbml0KSk7CiAK
LSAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKLSAgICAgICAg
eyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5n
TW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFs
ZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKLSAgICAgICAgInJvdW5k
aW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9y
IFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIGF1dG8g
cm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKICAgICBhdXRvIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1l
bnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxl
c3RVbml0KSwgZmFsc2UpOwpAQCAtNDc1LDEwICs0ODAsMTAgQEAgVGVtcG9yYWxEdXJhdGlvbjo6
U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBTdWJkdXJhdGlvbnMgbmV3
U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlvbnM7Ci0gICAgcm91bmQobmV3U3ViZHVyYXRpb25z
LCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKLSAgICBiYWxhbmNlKG5l
d1N1YmR1cmF0aW9ucywgbGFyZ2VzdFVuaXQpOwotICAgIHJldHVybiBuZXdTdWJkdXJhdGlvbnM7
CisgICAgSVNPODYwMTo6RHVyYXRpb24gbmV3RHVyYXRpb24gPSBtX2R1cmF0aW9uOworICAgIHJv
dW5kKG5ld0R1cmF0aW9uLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsK
KyAgICBiYWxhbmNlKG5ld0R1cmF0aW9uLCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIG5ld0R1
cmF0aW9uOwogfQogCiBkb3VibGUgVGVtcG9yYWxEdXJhdGlvbjo6dG90YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0CkBAIC01MDUsMTAg
KzUxMCwxMCBAQCBkb3VibGUgVGVtcG9yYWxEdXJhdGlvbjo6dG90YWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAotICAgIFN1YmR1cmF0aW9ucyBuZXdTdWJkdXJhdGlvbnMgPSBtX3N1YmR1cmF0aW9u
czsKLSAgICBiYWxhbmNlKG5ld1N1YmR1cmF0aW9ucywgdW5pdCk7Ci0gICAgZG91YmxlIHJlbWFp
bmRlciA9IHJvdW5kKG5ld1N1YmR1cmF0aW9ucywgMSwgdW5pdCwgUm91bmRpbmdNb2RlOjpUcnVu
Yyk7Ci0gICAgcmV0dXJuIG5ld1N1YmR1cmF0aW9uc1tzdGF0aWNfY2FzdDx1aW50OF90Pih1bml0
KV0gKyByZW1haW5kZXI7CisgICAgSVNPODYwMTo6RHVyYXRpb24gbmV3RHVyYXRpb24gPSBtX2R1
cmF0aW9uOworICAgIGJhbGFuY2UobmV3RHVyYXRpb24sIHVuaXQpOworICAgIGRvdWJsZSByZW1h
aW5kZXIgPSByb3VuZChuZXdEdXJhdGlvbiwgMSwgdW5pdCwgUm91bmRpbmdNb2RlOjpUcnVuYyk7
CisgICAgcmV0dXJuIG5ld0R1cmF0aW9uW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KHVuaXQpXSArIHJl
bWFpbmRlcjsKIH0KIAogU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdApAQCAtNTI5
LDMyICs1MzQsMzAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKLSAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdN
b2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9k
ZSwKLSAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3Ii
X3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKLSAg
ICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBc
InRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAg
ICBhdXRvIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ug
d2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KICAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5w
cmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdN
b2RlOjpUcnVuYykKICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CiAKLSAgICBTdWJkdXJhdGlv
bnMgbmV3U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlvbnM7Ci0gICAgcm91bmQobmV3U3ViZHVy
YXRpb25zLCBkYXRhLmluY3JlbWVudCwgZGF0YS51bml0LCByb3VuZGluZ01vZGUpOwotICAgIHJl
dHVybiB0b1N0cmluZyhuZXdTdWJkdXJhdGlvbnMsIGRhdGEucHJlY2lzaW9uKTsKKyAgICBJU084
NjAxOjpEdXJhdGlvbiBuZXdEdXJhdGlvbiA9IG1fZHVyYXRpb247CisgICAgcm91bmQobmV3RHVy
YXRpb24sIGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgcmV0
dXJuIHRvU3RyaW5nKG5ld0R1cmF0aW9uLCBkYXRhLnByZWNpc2lvbik7CiB9CiAKIC8vIFRlbXBv
cmFsRHVyYXRpb25Ub1N0cmluZyAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vycywg
bWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRz
LCBwcmVjaXNpb24gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbnRvc3RyaW5nCi1TdHJpbmcgVGVtcG9yYWxEdXJhdGlv
bjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJh
dGlvbnMsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQorU3RyaW5n
IFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uJiBkdXJh
dGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pCiB7CiAgICAg
YXV0byBbcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uVmFsdWVdID0gcHJlY2lzaW9uOwogICAgIEFT
U0VSVChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6QXV0byB8fCBwcmVjaXNpb25WYWx1ZSA8
IDEwKTsKIAotICAgIGF1dG8gYmFsYW5jZWRNaWNyb3NlY29uZHMgPSBzdWJkdXJhdGlvbnMubWlj
cm9zZWNvbmRzKCkgKyBzdGQ6OnRydW5jKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpIC8gMTAw
MCk7Ci0gICAgYXV0byBiYWxhbmNlZE5hbm9zZWNvbmRzID0gc3RkOjpmbW9kKHN1YmR1cmF0aW9u
cy5uYW5vc2Vjb25kcygpLCAxMDAwKTsKLSAgICBhdXRvIGJhbGFuY2VkTWlsbGlzZWNvbmRzID0g
c3ViZHVyYXRpb25zLm1pbGxpc2Vjb25kcygpICsgc3RkOjp0cnVuYyhiYWxhbmNlZE1pY3Jvc2Vj
b25kcyAvIDEwMDApOworICAgIGF1dG8gYmFsYW5jZWRNaWNyb3NlY29uZHMgPSBkdXJhdGlvbi5t
aWNyb3NlY29uZHMoKSArIHN0ZDo6dHJ1bmMoZHVyYXRpb24ubmFub3NlY29uZHMoKSAvIDEwMDAp
OworICAgIGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0ZDo6Zm1vZChkdXJhdGlvbi5uYW5v
c2Vjb25kcygpLCAxMDAwKTsKKyAgICBhdXRvIGJhbGFuY2VkTWlsbGlzZWNvbmRzID0gZHVyYXRp
b24ubWlsbGlzZWNvbmRzKCkgKyBzdGQ6OnRydW5jKGJhbGFuY2VkTWljcm9zZWNvbmRzIC8gMTAw
MCk7CiAgICAgYmFsYW5jZWRNaWNyb3NlY29uZHMgPSBzdGQ6OmZtb2QoYmFsYW5jZWRNaWNyb3Nl
Y29uZHMsIDEwMDApOwotICAgIGF1dG8gYmFsYW5jZWRTZWNvbmRzID0gc3ViZHVyYXRpb25zLnNl
Y29uZHMoKSArIHN0ZDo6dHJ1bmMoYmFsYW5jZWRNaWxsaXNlY29uZHMgLyAxMDAwKTsKKyAgICBh
dXRvIGJhbGFuY2VkU2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMoKSArIHN0ZDo6dHJ1bmMoYmFs
YW5jZWRNaWxsaXNlY29uZHMgLyAxMDAwKTsKICAgICBiYWxhbmNlZE1pbGxpc2Vjb25kcyA9IHN0
ZDo6Zm1vZChiYWxhbmNlZE1pbGxpc2Vjb25kcywgMTAwMCk7CiAKICAgICAvLyBURU1QT1JBUlkh
IChwZW5kaW5nIHNwZWMgZGlzY3Vzc2lvbiBhYm91dCBtYXhpbXVtIHZhbHVlcyBAIGh0dHBzOi8v
Z2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lzc3Vlcy8xNjA0KQpAQCAtNTY3LDMw
ICs1NzAsMzAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBv
cmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXQKIAogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKIAotICAgIGF1dG8gc2lnbiA9IFRlbXBvcmFsRHVyYXRpb246OnNpZ24oc3ViZHVy
YXRpb25zKTsKKyAgICBhdXRvIHNpZ24gPSBUZW1wb3JhbER1cmF0aW9uOjpzaWduKGR1cmF0aW9u
KTsKICAgICBpZiAoc2lnbiA8IDApCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CiAKICAg
ICBidWlsZGVyLmFwcGVuZCgnUCcpOwotICAgIGlmIChzdWJkdXJhdGlvbnMueWVhcnMoKSkKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdlcihzdWJkdXJhdGlvbnMueWVhcnMoKSks
ICdZJyk7Ci0gICAgaWYgKHN1YmR1cmF0aW9ucy5tb250aHMoKSkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoZm9ybWF0SW50ZWdlcihzdWJkdXJhdGlvbnMubW9udGhzKCkpLCAnTScpOwotICAgIGlm
IChzdWJkdXJhdGlvbnMud2Vla3MoKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50
ZWdlcihzdWJkdXJhdGlvbnMud2Vla3MoKSksICdXJyk7Ci0gICAgaWYgKHN1YmR1cmF0aW9ucy5k
YXlzKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoc3ViZHVyYXRpb25z
LmRheXMoKSksICdEJyk7CisgICAgaWYgKGR1cmF0aW9uLnllYXJzKCkpCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoZHVyYXRpb24ueWVhcnMoKSksICdZJyk7CisgICAgaWYg
KGR1cmF0aW9uLm1vbnRocygpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChmb3JtYXRJbnRlZ2Vy
KGR1cmF0aW9uLm1vbnRocygpKSwgJ00nKTsKKyAgICBpZiAoZHVyYXRpb24ud2Vla3MoKSkKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdlcihkdXJhdGlvbi53ZWVrcygpKSwgJ1cn
KTsKKyAgICBpZiAoZHVyYXRpb24uZGF5cygpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChmb3Jt
YXRJbnRlZ2VyKGR1cmF0aW9uLmRheXMoKSksICdEJyk7CiAKICAgICAvLyBUaGUgemVybyB2YWx1
ZSBpcyBkaXNwbGF5ZWQgaW4gc2Vjb25kcy4KICAgICBhdXRvIHVzZXNTZWNvbmRzID0gYmFsYW5j
ZWRTZWNvbmRzIHx8IGJhbGFuY2VkTWlsbGlzZWNvbmRzIHx8IGJhbGFuY2VkTWljcm9zZWNvbmRz
IHx8IGJhbGFuY2VkTmFub3NlY29uZHMgfHwgIXNpZ247Ci0gICAgaWYgKCFzdWJkdXJhdGlvbnMu
aG91cnMoKSAmJiAhc3ViZHVyYXRpb25zLm1pbnV0ZXMoKSAmJiAhdXNlc1NlY29uZHMpCisgICAg
aWYgKCFkdXJhdGlvbi5ob3VycygpICYmICFkdXJhdGlvbi5taW51dGVzKCkgJiYgIXVzZXNTZWNv
bmRzKQogICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogCiAgICAgYnVpbGRlci5h
cHBlbmQoJ1QnKTsKLSAgICBpZiAoc3ViZHVyYXRpb25zLmhvdXJzKCkpCi0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoc3ViZHVyYXRpb25zLmhvdXJzKCkpLCAnSCcpOwotICAg
IGlmIChzdWJkdXJhdGlvbnMubWludXRlcygpKQotICAgICAgICBidWlsZGVyLmFwcGVuZChmb3Jt
YXRJbnRlZ2VyKHN1YmR1cmF0aW9ucy5taW51dGVzKCkpLCAnTScpOworICAgIGlmIChkdXJhdGlv
bi5ob3VycygpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChmb3JtYXRJbnRlZ2VyKGR1cmF0aW9u
LmhvdXJzKCkpLCAnSCcpOworICAgIGlmIChkdXJhdGlvbi5taW51dGVzKCkpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoZHVyYXRpb24ubWludXRlcygpKSwgJ00nKTsKICAg
ICBpZiAodXNlc1NlY29uZHMpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdl
cihiYWxhbmNlZFNlY29uZHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IGJjNDM4MzMzYzU0MDUxZDJmMWRiNTU0ZTNiMzQ5
ZGU1YTRhOWE0NmEuLjgyZjJkNWQ2NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgK
QEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBUZW1wb3JhbER1cmF0aW9u
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHVzaW5nIFN1YmR1cmF0aW9ucyA9IElTTzg2MDE6
OkR1cmF0aW9uOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBA
IC00MCw1NSArMzksNTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0udGVtcG9yYWxEdXJh
dGlvblNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24q
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFN1YmR1cmF0aW9ucyYmKTsKLSAgICBzdGF0aWMgVGVt
cG9yYWxEdXJhdGlvbiogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIFN1YmR1cmF0
aW9ucyYmLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRp
b24qIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYpOworICAgIHN0
YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0Kiwg
SVNPODYwMTo6RHVyYXRpb24mJiwgU3RydWN0dXJlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvbiogdG9E
dXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbER1
cmF0aW9uKiB0b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvbiogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBK
U1ZhbHVlKTsKIAogI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX0RVUkFUSU9OX0ZJRUxEKG5h
bWUsIGNhcGl0YWxpemVkTmFtZSkgXAotICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJkdXJhdGlvbnMubmFtZSMjcygpOyB9IFwKLSAgICB2b2lkIHNldCMjY2FwaXRhbGl6
ZWROYW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBtX3N1YmR1cmF0aW9ucy5zZXQjI2NhcGl0YWxpemVk
TmFtZSMjcyh2YWx1ZSk7IH0KKyAgICBkb3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZHVyYXRpb24ubmFtZSMjcygpOyB9IFwKKyAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWROYW1lIyNz
KGRvdWJsZSB2YWx1ZSkgeyBtX2R1cmF0aW9uLnNldCMjY2FwaXRhbGl6ZWROYW1lIyNzKHZhbHVl
KTsgfQogICAgIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfREVGSU5FX1RFTVBPUkFMX0RVUkFUSU9O
X0ZJRUxEKTsKICN1bmRlZiBKU0NfREVGSU5FX1RFTVBPUkFMX0RVUkFUSU9OX0ZJRUxECiAKLSAg
ICBpbnQgc2lnbigpIGNvbnN0IHsgcmV0dXJuIHNpZ24obV9zdWJkdXJhdGlvbnMpOyB9CisgICAg
aW50IHNpZ24oKSBjb25zdCB7IHJldHVybiBzaWduKG1fZHVyYXRpb24pOyB9CiAKLSAgICBTdWJk
dXJhdGlvbnMgd2l0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBkdXJhdGlvbkxpa2UpIGNv
bnN0OwotICAgIFN1YmR1cmF0aW9ucyBuZWdhdGVkKCkgY29uc3Q7Ci0gICAgU3ViZHVyYXRpb25z
IGFicygpIGNvbnN0OwotICAgIFN1YmR1cmF0aW9ucyBhZGQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKSBjb25zdDsKLSAgICBTdWJkdXJhdGlvbnMgc3VidHJhY3QoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKSBjb25zdDsKLSAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHdpdGgoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogZHVyYXRpb25MaWtlKSBjb25zdDsKKyAgICBJU084NjAxOjpE
dXJhdGlvbiBuZWdhdGVkKCkgY29uc3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24gYWJzKCkgY29u
c3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24gYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkg
Y29uc3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24gc3VidHJhY3QoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKSBjb25zdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByb3VuZChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgZG91YmxlIHRvdGFsKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwotICAgIFN0cmluZyB0b1N0cmluZyhz
dGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9uOjpB
dXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRpb25zLCBwcmVjaXNp
b24pOyB9CisgICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25l
ZD4gcHJlY2lzaW9uID0geyBQcmVjaXNpb246OkF1dG8sIDAgfSkgY29uc3QgeyByZXR1cm4gdG9T
dHJpbmcobV9kdXJhdGlvbiwgcHJlY2lzaW9uKTsgfQogCi0gICAgY29uc3QgU3ViZHVyYXRpb25z
JiBzdWJkdXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3N1YmR1cmF0aW9uczsgfQorICAgIHN0
YXRpYyBJU084NjAxOjpEdXJhdGlvbiBmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9JU084NjAxRHVyYXRp
b24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMg
dG9EdXJhdGlvblJlY29yZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotCi0gICAgc3RhdGlj
IGludCBzaWduKGNvbnN0IFN1YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyBkb3VibGUgcm91bmQo
U3ViZHVyYXRpb25zJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01v
ZGUpOwotICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoU3ViZHVyYXRpb25zJiwgVGVtcG9yYWxVbml0
IGxhcmdlc3RVbml0KTsKKyAgICBzdGF0aWMgaW50IHNpZ24oY29uc3QgSVNPODYwMTo6RHVyYXRp
b24mKTsKKyAgICBzdGF0aWMgZG91YmxlIHJvdW5kKElTTzg2MDE6OkR1cmF0aW9uJiwgZG91Ymxl
IGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyB2b2lk
IGJhbGFuY2UoSVNPODYwMTo6RHVyYXRpb24mLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwog
CiBwcml2YXRlOgotICAgIFRlbXBvcmFsRHVyYXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBTdWJkdXJh
dGlvbnMmJik7CisgICAgVGVtcG9yYWxEdXJhdGlvbihWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6
OkR1cmF0aW9uJiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Vi
ZHVyYXRpb25zPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgc3RhdGljIFN1YmR1cmF0aW9ucyBmcm9tTm9uRHVyYXRpb25WYWx1ZShKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJh
dGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RHVyYXRpb24+IHBhcnNlKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKIAotICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3Vi
ZHVyYXRpb24oKSBjb25zdDsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IElTTzg2
MDE6OkR1cmF0aW9uJiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24p
OwogCi0gICAgU3ViZHVyYXRpb25zIG1fc3ViZHVyYXRpb25zOworICAgIElTTzg2MDE6OkR1cmF0
aW9uIG1fZHVyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQ0ZTQ5ZmMwNDUwZmUxMjZhZThlNDhiNGU5NGY0YzFmZGNhMDY1MWEu
LjAyMjM3MjI3ODI1ZmFkNTEwZTM5MzVjMTczODU5ZDEyM2YzMWQzMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yLmNwcApAQCAtODgsMTcgKzg4LDE3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihjb25zdHJ1Y3RUZW1wb3JhbER1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZt
LCBkdXJhdGlvblN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBUZW1wb3JhbER1cmF0
aW9uOjpTdWJkdXJhdGlvbnMgc3ViZHVyYXRpb25zOworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJl
c3VsdDsKICAgICBhdXRvIGNvdW50ID0gc3RkOjptaW48c2l6ZV90PihjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgc3ViZHVyYXRpb25zW2ldID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJlc3VsdFtpXSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9J
bnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShzdWJkdXJhdGlv
bnNbaV0pKQorICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUocmVzdWx0W2ldKSkKICAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CiAgICAgfQogCi0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlv
bjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3ViZHVyYXRpb25zKSwg
c3RydWN0dXJlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKHJlc3VsdCksIHN0cnVjdHVyZSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNhbGxUZW1wb3JhbER1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCmluZGV4IDhiYWNiNmQzOWZiNDE1MjM4MWE0
NTgxOWNjNWEyYjM2ZmU2ZmZhYWIuLmMxZTY1MmI5ODNlODdmMTFiODNjNmIyMzFiNDU2MWZmMDI1
OWFlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNXaXRoLCAo
SlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGlmICghZHVyYXRpb25MaWtlLmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJz
dCBhcmd1bWVudCB0byBUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUud2l0aCBtdXN0IGJlIGFu
IG9iamVjdCJfcyk7CiAKLSAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGR1cmF0aW9uLT53aXRoKGds
b2JhbE9iamVjdCwgYXNPYmplY3QoZHVyYXRpb25MaWtlKSk7CisgICAgYXV0byByZXN1bHQgPSBk
dXJhdGlvbi0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGR1cmF0aW9uTGlrZSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZh
bGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJkdXJhdGlvbnMpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNy
ZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCkpKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY05lZ2F0ZWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBA
IC0xNjcsMTAgKzE2NywxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGlmICghZHVy
YXRpb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgRHVyYXRpb24iX3MpOwogCi0gICAgYXV0byBzdWJkdXJhdGlvbnMgPSBkdXJhdGlv
bi0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBkdXJhdGlvbi0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNy
ZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlv
bjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5j
U3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC0xODIsMTAgKzE4MiwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KgogICAg
IGlmICghZHVyYXRpb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CiAKLSAgICBhdXRvIHN1YmR1cmF0
aW9ucyA9IGR1cmF0aW9uLT5zdWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOworICAgIGF1dG8gcmVzdWx0ID0gZHVyYXRpb24tPnN1YnRyYWN0KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHN1YmR1cmF0aW9ucykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3Qs
IFdURk1vdmUocmVzdWx0KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yMDEsMTAgKzIwMSwxMCBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNSb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbAogICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5E
dXJhdGlvbi5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfcyk7
CiAKLSAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGR1cmF0aW9uLT5yb3VuZChnbG9iYWxPYmplY3Qs
IG9wdGlvbnMpOworICAgIGF1dG8gcmVzdWx0ID0gZHVyYXRpb24tPnJvdW5kKGdsb2JhbE9iamVj
dCwgb3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRp
b246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9y
YWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0
KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGVGdW5jVG90YWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5jcHAKaW5kZXggZTlmNzRlNDk3ZTI0NTY0MTNiMzBjMWUzYTE5NzIzMTVlMjc3YmU5
My4uYTRlNGVjNjE1YjMxODY2ODQ1YjBiMWRjZGZjZTVkYjQ4NDg5YjBkOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtMzAwLDYg
KzMwMCwxNSBAQCBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdAogICAgIHJldHVybiB7IHsgUHJlY2lz
aW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgcG93MTBVbnNp
Z25lZCg5IC0gZGlnaXRzKSB9OwogfQogCisvLyBUb1RlbXBvcmFsUm91bmRpbmdNb2RlICggbm9y
bWFsaXplZE9wdGlvbnMsIGZhbGxiYWNrICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxyb3VuZGluZ21vZGUKK1JvdW5kaW5nTW9k
ZSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogb3B0aW9ucywgUm91bmRpbmdNb2RlIGZhbGxiYWNrKQoreworICAgIHJldHVybiBpbnRs
T3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3Qt
PnZtKCkucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3Ms
IFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9
LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBS
b3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3Qg
YmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5k
XCIiX3MsIGZhbGxiYWNrKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGlu
Z0luY3JlbWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAog
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVu
aXQgdW5pdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5oCmluZGV4IGM5YzliZDIxNWY3Y2EzYzhkODM3ZjA4NGRlMTA2ZDY0NGRjOTY5YWUuLmQxNTEy
MmE5ZjI4ODJmMmY5YTI2MWNjNDQ5MmU0NzVhNTZhMDlkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtOTgsNiArOTgsNyBAQCBzdGQ6
Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpbwogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFs
U21hbGxlc3RVbml0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogb3B0aW9ucyk7CiBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVj
aXNpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucyk7CitSb3VuZGluZ01vZGUg
dGVtcG9yYWxSb3VuZGluZ01vZGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFJvdW5kaW5n
TW9kZSk7CiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRl
bXBvcmFsVW5pdCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQs
IGJvb2wgaW5jbHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwg
ZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAppbmRleCAzZjJmZTI0NWE4N2Rm
NjhiMDQzYTk3MjU3MjQ0MGQxZDY5M2FmZWZmLi5lNzQ3ZDM5NTIyMzY5MTczYTAzNWNiODcyZjJi
ZTUwM2VhMDA4MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC0yMzksOSArMjM5LDcgQEAgSVNPODYwMTo6UGxhaW5U
aW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHUKICAgICB9CiAgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0
LnZhbHVlKCk7CiAKLSAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdN
b2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9k
ZSwKLSAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3Ii
X3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKLSAg
ICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBc
InRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQp
OworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvIGluY3JlbWVudCA9IHRlbXBvcmFsUm91
bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtUm91bmRpbmdJbmNy
ZW1lbnQoc21hbGxlc3RVbml0KSwgZmFsc2UpOwpAQCAtMjY1LDkgKzI2Myw3IEBAIFN0cmluZyBU
ZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBvcHRpb25zCiAgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1By
ZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKLSAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRp
bmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5n
TW9kZSwKLSAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxv
b3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6
VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwK
LSAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwi
LCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsK
KyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYg
d2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KQEAgLTM1NSw3ICszNTEsNyBAQCBzdGF0
aWMgc3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFp
blRpbWVVbml0cz4gdG9QYXJ0aQogICAgIHJldHVybiBwYXJ0aWFsVGltZTsKIH0KIAotc3RhdGlj
IElTTzg2MDE6OlBsYWluVGltZSBjb25zdHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1
cmF0aW9uKQorc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBjb25zdHJhaW5UaW1lKElTTzg2MDE6
OkR1cmF0aW9uJiYgZHVyYXRpb24pCiB7CiAgICAgYXV0byBjb25zdHJhaW5Ub1JhbmdlID0gW10o
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtKSAtPiB1bnNp
Z25lZCB7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKQEAgLTM3NSw3ICszNzEsNyBA
QCBzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdQogewogICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKICAg
ICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbjoKLSAgICAgICAgcmV0dXJuIGNvbnN0
cmFpbnRUaW1lKFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpblRp
bWUoV1RGTW92ZShkdXJhdGlvbikpOwogICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0
OgogICAgICAgICByZXR1cm4gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0
aW9uKSk7CiAgICAgfQpAQCAtNDgyLDQ0ICs0NzgsNiBAQCBpbnQzMl90IFRlbXBvcmFsUGxhaW5U
aW1lOjpjb21wYXJlKFRlbXBvcmFsUGxhaW5UaW1lKiBwbGFpblRpbWUxLCBUZW1wb3JhbFBsYWlu
VAogICAgIHJldHVybiAwOwogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0ZW1wb3JhbGR1cmF0aW9uCi1zdGF0aWMgSVNPODYw
MTo6RHVyYXRpb24gdG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtlLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkRmllbGRzKQotewotICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0KLSAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbjsKLSAgICBpZiAoIXRlbXBvcmFs
RHVyYXRpb25MaWtlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHRlbXBv
cmFsRHVyYXRpb25MaWtlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIGF1dG8gZHVyYXRpb25PcHRpb25h
bCA9IElTTzg2MDE6OnBhcnNlRHVyYXRpb24oc3RyaW5nKTsKLSAgICAgICAgaWYgKCFkdXJhdGlv
bk9wdGlvbmFsKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNvdWxkIG5vdCBwYXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBkdXJhdGlvbiA9IGR1cmF0aW9uT3B0aW9u
YWwudmFsdWUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkdXJhdGlvbiA9IFRlbXBvcmFsRHVy
YXRpb246OnRvRHVyYXRpb25SZWNvcmQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlr
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgfQotCi0g
ICAgaWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7Ci0gICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJv
cGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmIChkdXJhdGlv
bltpbmRleF0pIHsKLSAgICAgICAgICAgIGlmIChkaXNhbGxvd2VkRmllbGRzLnNpemUoKSAmJiBz
dGQ6OmZpbmQoZGlzYWxsb3dlZEZpZWxkcy5iZWdpbigpLCBkaXNhbGxvd2VkRmllbGRzLmVuZCgp
LCBzdGF0aWNfY2FzdDxUZW1wb3JhbFVuaXQ+KGluZGV4KSkgIT0gZGlzYWxsb3dlZEZpZWxkcy5l
bmQoKSkgewotICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRHVyYXRpb24gcHJvcGVydGllcyBpbmNsdWRlIGRpc2FsbG93ZWQgZmllbGQiX3MpOwot
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gZHVyYXRpb247Ci19Ci0KIHN0YXRpYyBJU084NjAxOjpEdXJhdGlv
biBhZGRUaW1lKGNvbnN0IElTTzg2MDE6OlBsYWluVGltZSYgcGxhaW5UaW1lLCBjb25zdCBJU084
NjAxOjpEdXJhdGlvbiYgZHVyYXRpb24pCiB7CiAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKApAQCAt
NTM2LDcgKzQ5NCw3IEBAIElTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6YWRk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgYXV0byBkdXJhdGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFs
T2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBhdXRvIGR1cmF0aW9uID0g
VGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3Jh
bER1cmF0aW9uTGlrZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBh
ZGRUaW1lKG1fcGxhaW5UaW1lLCBkdXJhdGlvbikpKTsKQEAgLTU0Nyw3ICs1MDUsNyBAQCBJU084
NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQbGFpblRpbWU6OnN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGR1cmF0
aW9uID0gdG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVy
YXRpb25MaWtlLCB7IH0pOworICAgIGF1dG8gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0
b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIGFkZFRpbWUobV9wbGFpblRpbWUs
IC1kdXJhdGlvbikpKTsKQEAgLTYzNSw5ICs1OTMsNyBAQCBzdGF0aWMgc3RkOjp0dXBsZTxUZW1w
b3JhbFVuaXQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+IGV4dHJhY3REaWZm
ZQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGF1dG8gcm91bmRpbmdNb2RlID0g
aW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVy
dHlOYW1lcy0+cm91bmRpbmdNb2RlLAotICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9k
ZTo6Q2VpbCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJf
cywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6
OkhhbGZFeHBhbmQgfSB9LAotICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwi
Y2VpbFwiLCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5k
aW5nTW9kZTo6VHJ1bmMpOworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGlu
Z01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSB0
ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJv
dW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oCmluZGV4IGQ5OTcwMDBkOGUw
OGQyODQ2ZWYyZGMwMzY1YTk5MTM0MWY3ZGMzYmYuLjI4ODI3ZDBhYTBlZTFmMGEyYzIzYTFkODM3
Yzk3MjBhMWI5YTRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWUuaApAQCAtODEsOCArODEsNiBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OlBsYWluVGltZT4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHN0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgZnJv
bU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiAKLSAgICBUZW1wb3JhbFVuaXQg
bGFyZ2VzdFN1YnBsYWluVGltZSgpIGNvbnN0OwotCiAgICAgSVNPODYwMTo6UGxhaW5UaW1lIG1f
cGxhaW5UaW1lOwogICAgIExhenlQcm9wZXJ0eTxUZW1wb3JhbFBsYWluVGltZSwgVGVtcG9yYWxD
YWxlbmRhcj4gbV9jYWxlbmRhcjsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>