<?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>203219</bug_id>
          
          <creation_ts>2019-10-21 15:55:57 -0700</creation_ts>
          <short_desc>Rolling out r251226: Causes a build speed regression.</short_desc>
          <delta_ts>2019-10-30 13:09:12 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202105</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1582100</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-21 15:55:57 -0700</bug_when>
    <thetext>Apparently, compilers aren&apos;t very fast at compiling constexpr function invocations.  Rolling this out while I rework the patch to not have this build speed regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582103</commentid>
    <comment_count>1</comment_count>
      <attachid>381473</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-21 15:59:56 -0700</bug_when>
    <thetext>Created attachment 381473
patch for rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582158</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-21 17:18:31 -0700</bug_when>
    <thetext>Landed in r251400: &lt;http://trac.webkit.org/r251400&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582159</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-21 17:19:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/56483393&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381473</attachid>
            <date>2019-10-21 15:59:56 -0700</date>
            <delta_ts>2019-10-21 15:59:56 -0700</delta_ts>
            <desc>patch for rollout.</desc>
            <filename>bug-203219.patch</filename>
            <type>text/plain</type>
            <size>45549</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxMzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE5LTEwLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
b2xsaW5nIG91dCByMjUxMjI2OiBDYXVzZXMgYSBidWlsZCBzcGVlZCByZWdyZXNzaW9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjE5CisKKyAg
ICAgICAgTm90IHJldmlld2VkLgorCisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHA6
CisgICAgICAgIChqc2NPcHRpb25zU2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9uc0dldFZh
bHVlKToKKyAgICAgICAgKGpzY19vcHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAoanNjX29wdGlv
bnNfZ2V0X29wdGlvbl9ncm91cCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uRW50cnkuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uRW50cnkuaC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpPcHRpb25zOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChKU0M6Om92ZXJyaWRl
T3B0aW9uV2l0aEhldXJpc3RpYyk6CisgICAgICAgIChKU0M6OnNjYWxlSklUUG9saWN5KToKKyAg
ICAgICAgKEpTQzo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9w
dGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRpb25XaXRo
b3V0QWxpYXMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246OmR1
bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoSlNDOjpvcHRpb25UeXBlU3BlY2lmaWNJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok9wdGlvbjo6T3B0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZWZh
dWx0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKEpTQzo6T3B0aW9uOjpPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246Omlk
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6dHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6YXZhaWxhYmlsaXR5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjppc092ZXJyaWRkZW4gY29uc3QpOgorICAgICAgICAoSlNDOjpP
cHRpb246OmRlZmF1bHRPcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246OmJvb2xW
YWwpOgorICAgICAgICAoSlNDOjpPcHRpb246OnVuc2lnbmVkVmFsKToKKyAgICAgICAgKEpTQzo6
T3B0aW9uOjpkb3VibGVWYWwpOgorICAgICAgICAoSlNDOjpPcHRpb246OmludDMyVmFsKToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZhbCk6CisgICAgICAgIChKU0M6Ok9wdGlv
bjo6b3B0aW9uU3RyaW5nVmFsKToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpnY0xvZ0xldmVsVmFs
KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjppZEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6b3B0aW9uVHlwZVNwZWNpZmljSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKEpTQzo6T3B0aW9uUmFuZ2U6Om9wZXJhdG9y
PSApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb25SYW5nZTo6cmFuZ2VTdHJpbmcgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlw
ZSk6IERlbGV0ZWQuCisKIDIwMTktMTAtMjEgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KIAogICAgICAgICBUaHJvdyB0aGUgcmlnaHQgZXhjZXB0aW9uIHVwb24gbWVtb3J5
IGV4aGF1c3Rpb24gaW4gQXJyYXk6OnNsaWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyNTEzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmgKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5oCiAgICAgcnVudGlt
ZS9PcGVyYXRpb25zLmgKKyAgICBydW50aW1lL09wdGlvbkVudHJ5LmgKICAgICBydW50aW1lL09w
dGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQu
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjUxMzczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05MDQs
NyArOTA0LDcgQEAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCiBydW50aW1lL09iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNwcAotcnVudGltZS9PcHRp
b25zLmNwcCBAbm8tdW5pZnkKK3J1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAogcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTEzNzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3
ICsxNjgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9uc1NldFZhbHVlKGNvbnN0CiB7CiAj
ZGVmaW5lIFNFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFp
bGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9w
dGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0
aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCF2YWx1ZUZyb21HVmFsdWUodmFs
dWUsIHZhbHVlVG9TZXQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJl
dHVybiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgT3B0aW9uczo6bmFtZV8oKSA9IHZhbHVlVG9TZXQ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
anNjT3B0aW9uc0dldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5lIEdFVF9PUFRJT05fVkFMVUUodHlw
ZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwK
ICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9HZXQg
PSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uRW50cnk6
OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwKICAg
ICAgICAgdmFsdWVUb0dWYWx1ZSh2YWx1ZVRvR2V0LCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC02MTYsOCArNjE2LDgg
QEAgdm9pZCBqc2Nfb3B0aW9uc19mb3JlYWNoKEpTQ09wdGlvbnNGdW5jIAogCiAjZGVmaW5lIFZJ
U0lUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRl
c2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0
eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAgICAgICB8fCBPcHRpb25z
Ojppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZh
aWxhYmlsaXR5XykpIHsgXAotICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gZGVmYXVsdFZhbHVl
IHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB8fCBPcHRpb25zOjpp
c0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZh
aWxhYmlsaXR5XykpIHsgXAorICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8gZGVmYXVsdFZhbHVl
IHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBhdXRvIG9wdGlvblR5
cGUgPSBqc2NPcHRpb25zVHlwZShkZWZhdWx0VmFsdWUpOyAgICAgICAgICAgICAgICAgXAogICAg
ICAgICBpZiAoZnVuY3Rpb24gKCNuYW1lXywgb3B0aW9uVHlwZSwgZGVzY3JpcHRpb25fLCB1c2Vy
RGF0YSkpICAgICAgXAogICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNjY2LDcgKzY2Niw3IEBAIEdPcHRp
b25Hcm91cCoganNjX29wdGlvbnNfZ2V0X29wdGlvbl9ncm8KICAgICBHQXJyYXkqIGVudHJpZXMg
PSBnX2FycmF5X25ldyhUUlVFLCBUUlVFLCBzaXplb2YoR09wdGlvbkVudHJ5KSk7CiAjZGVmaW5l
IFJFR0lTVEVSX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0
eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWls
YWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAgICAgICB8fCBP
cHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJpbGl0
eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShP
cHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xykp
IHsgXAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUoZ19zdHJkdXBfcHJpbnRmKCJqc2Mt
JXMiLCAjbmFtZV8pKTsgICAgICAgXAogICAgICAgICBlbnRyaWVzID0gZ19hcnJheV9zZXRfc2l6
ZShlbnRyaWVzLCBlbnRyaWVzLT5sZW4gKyAxKTsgXAogICAgICAgICBHT3B0aW9uRW50cnkqIGVu
dHJ5ID0gJmdfYXJyYXlfaW5kZXgoZW50cmllcywgR09wdGlvbkVudHJ5LCBlbnRyaWVzLT5sZW4g
LSAxKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTM3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODY0LDcgKzE4NjQsNiBAQAogCQlGRTFC
RDAyMTFFNzIwMjc5MDAxMzRCQzkgLyogQ2VsbFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIwMUU3MjAyNzAwMDEzNEJDOSAvKiBD
ZWxsUHJvZmlsZS5oICovOyB9OwogCQlGRTFCRDAyNTFFNzIwNTM4MDAxMzRCQzkgLyogSGVhcFZl
cmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTFCRDAyMzFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmggKi87IH07CiAJCUZFMUMw
RkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlGRTFENkQ0NTIzNTgwRTFGMDA3QTVDMjYgLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDgg
LyogT3B0aW9ucy5jcHAgKi87IH07CiAJCUZFMUUyQzNGMjI0MERENTgwMEY2QjcyOSAvKiBNYWNy
b0Fzc2VtYmxlckFSTTY0RS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxRTJDM0UyMjQwRDMwQjAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRF
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUx
RTJDNDAyMjQwREQ2MjAwRjZCNzI5IC8qIEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxRTJDM0QyMjQwRDJGNjAwRjZCNzI5
IC8qIEFSTTY0RUFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODczLDYgKzE4NzIsNyBAQAogCQlGRTMwMjJENzFF
NDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3Bl
Y3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUzNDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRo
cm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUzODQyMzIyMzI0RDUxQjAwOURE
NDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NDIzMzIz
MjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25z
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMg
LyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTQx
QzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi87IH07CkBAIC01MDczLDYg
KzUwNzMsNyBAQAogCQlGRTM1QzJGQTIxQjFFNkM3MDAwRjRDQTggLyogT3B0aW9ucy5yYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcHRpb25zLnJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTM1QzJGQjIxQjFFNkM3MDAwRjRDQTggLyogT3Bjb2RlR3JvdXAu
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3Bjb2RlR3JvdXAucmI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZDMjFCMUU2QzcwMDBGNENBOCAvKiBN
ZXRhZGF0YS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBNZXRhZGF0YS5y
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1
IC8qIE9wdGlvbkVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlv
bkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0MjMxMjMyNEQ1MUIw
MDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBPcHRpb25zTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMTFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvbGxhclZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2xsYXJWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzM4MSw2ICs3MzgyLDcgQEAKIAkJCQlFMzlFRUFGMjIyODEyNDRDMDA4NDc0RjQg
LyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywKIAkJCQlG
NjkyQTg3NzAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJRjY5MkE4
NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLywKKwkJCQlGRTM4NDIzMDIzMjRE
NTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLywKIAkJCQkwRkUyMjhFQTE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8q
IE9wdGlvbnMuaCAqLywKIAkJCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xp
c3QuaCAqLywKQEAgLTk5MDMsNiArOTkwNSw3IEBACiAJCQkJMEYyQkRDMkMxNTFGREU5MTAwQ0Q4
OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0NDdFQTE3QTBCRDQ2MDBG
NTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0ODBF
MTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzODQy
MzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2VsbFB0ci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTEzMSw3ICsxMTEzNCw2IEBACiAJCQkJNTM2QjMxNEExRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U4Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1QzFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTYyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODkuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRkUxRDZENDUyMzU4MEUxRjAwN0E1QzI2IC8qIE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxNDIxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5
MC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE0OTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTkxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTUyMUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlOTIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjUxMzczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJPcHRpb25FbnRy
eS5oIgogI2luY2x1ZGUgIk9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCkBAIC0zNSwxMiArMzYsMTIgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxs
b2NhdG9yOwogCiAjaWYgQ1BVKEFSTTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHBy
IHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7Ci1jb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVU
b1Byb3RlY3QgPSAxICogUGFnZVNpemU7CiAjZWxzZQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6
ZSA9IDQgKiBLQjsKLWNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQ
YWdlU2l6ZTsKICNlbmRpZgogCitjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3Qg
PSAzMiAqIEtCOworCiAjaWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogdXNpbmcgSklUV3Jp
dGVTZXBhcmF0ZUhlYXBzRnVuY3Rpb24gPSB2b2lkICgqKShvZmZfdCwgY29uc3Qgdm9pZCosIHNp
emVfdCk7CiAjZW5kaWYKQEAgLTgxLDI5ICs4Miw4IEBAIHN0cnVjdCBDb25maWcgewogICAgICAg
ICAgICAgYm9vbCB1c2VGYXN0UGVybWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAotICAgICAgICAg
ICAgYm9vbCB0eXBlQm9vbE9wdGlvbnNbTnVtYmVyT2ZCb29sT3B0aW9uc107Ci0gICAgICAgICAg
ICBib29sIHR5cGVCb29sRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZCb29sT3B0aW9uc107Ci0KLSAg
ICAgICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2ZWxPcHRpb25zW051bWJlck9m
R0NMb2dMZXZlbE9wdGlvbnNdOwotICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCB0eXBlR0NM
b2dMZXZlbERlZmF1bHRPcHRpb25zW051bWJlck9mR0NMb2dMZXZlbE9wdGlvbnNdOwotCi0gICAg
ICAgICAgICBpbnQzMl90IHR5cGVJbnQzMk9wdGlvbnNbTnVtYmVyT2ZJbnQzMk9wdGlvbnNdOwot
ICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkludDMy
T3B0aW9uc107Ci0KLSAgICAgICAgICAgIHVuc2lnbmVkIHR5cGVVbnNpZ25lZE9wdGlvbnNbTnVt
YmVyT2ZVbnNpZ25lZE9wdGlvbnNdOwotICAgICAgICAgICAgdW5zaWduZWQgdHlwZVVuc2lnbmVk
RGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnNdOwotCi0gICAgICAgICAgICBk
b3VibGUgdHlwZURvdWJsZU9wdGlvbnNbTnVtYmVyT2ZEb3VibGVPcHRpb25zXTsKLSAgICAgICAg
ICAgIGRvdWJsZSB0eXBlRG91YmxlRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZEb3VibGVPcHRpb25z
XTsKLQotICAgICAgICAgICAgc2l6ZV90IHR5cGVTaXplT3B0aW9uc1tOdW1iZXJPZlNpemVPcHRp
b25zXTsKLSAgICAgICAgICAgIHNpemVfdCB0eXBlU2l6ZURlZmF1bHRPcHRpb25zW051bWJlck9m
U2l6ZU9wdGlvbnNdOwotCi0gICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlT3B0aW9uU3RyaW5n
T3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOwotICAgICAgICAgICAgY29uc3Qg
Y2hhciogdHlwZU9wdGlvblN0cmluZ0RlZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uU3RyaW5n
T3B0aW9uc107Ci0KLSAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5cGVPcHRpb25SYW5nZU9wdGlv
bnNbTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnNdOwotICAgICAgICAgICAgT3B0aW9uUmFuZ2Ug
dHlwZU9wdGlvblJhbmdlRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnNd
OworICAgICAgICAgICAgT3B0aW9uRW50cnkgb3B0aW9uc1tOdW1iZXJPZk9wdGlvbnNdOworICAg
ICAgICAgICAgT3B0aW9uRW50cnkgZGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKICAg
ICAgICAgfTsKICAgICAgICAgY2hhciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwog
ICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5
LmgJKHJldmlzaW9uIDI1MTIyNSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uRW50cnkuaDoyNTEyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkdDTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgT3B0aW9uUmFuZ2UgeworcHJpdmF0ZToKKyAgICBlbnVtIFJhbmdl
U3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52ZXJ0ZWQgfTsKK3B1
YmxpYzoKKyAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChjb25zdCBpbnQmIHJocykKKyAgICB7
IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgorICAgICAgICBpZiAoIXJocykgewor
ICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7CisgICAgICAgICAgICBtX3Jhbmdl
U3RyaW5nID0gMDsKKyAgICAgICAgICAgIG1fbG93TGltaXQgPSAwOworICAgICAgICAgICAgbV9o
aWdoTGltaXQgPSAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICBib29sIGluaXQoY29uc3QgY2hhciopOworICAgIGJvb2wgaXNJblJhbmdlKHVuc2lnbmVk
KTsKKyAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIChtX3N0YXRl
ID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251bGxSYW5nZVN0cjsgfQorICAgIAor
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VTdHI7CisKKyAgICBSYW5nZVN0YXRl
IG1fc3RhdGU7CisgICAgY29uc3QgY2hhciogbV9yYW5nZVN0cmluZzsKKyAgICB1bnNpZ25lZCBt
X2xvd0xpbWl0OworICAgIHVuc2lnbmVkIG1faGlnaExpbWl0OworfTsKKworLy8gRm9yIHN0b3Jp
bmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKK3VuaW9uIE9wdGlvbkVudHJ5IHsKKyAgICB1c2luZyBC
b29sID0gYm9vbDsKKyAgICB1c2luZyBVbnNpZ25lZCA9IHVuc2lnbmVkOworICAgIHVzaW5nIERv
dWJsZSA9IGRvdWJsZTsKKyAgICB1c2luZyBJbnQzMiA9IGludDMyX3Q7CisgICAgdXNpbmcgU2l6
ZSA9IHNpemVfdDsKKyAgICB1c2luZyBPcHRpb25SYW5nZSA9IEpTQzo6T3B0aW9uUmFuZ2U7Cisg
ICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3QgY2hhcio7CisgICAgdXNpbmcgR0NMb2dMZXZl
bCA9IEdDTG9nZ2luZzo6TGV2ZWw7CisKKyAgICBib29sIHZhbEJvb2w7CisgICAgdW5zaWduZWQg
dmFsVW5zaWduZWQ7CisgICAgZG91YmxlIHZhbERvdWJsZTsKKyAgICBpbnQzMl90IHZhbEludDMy
OworICAgIHNpemVfdCB2YWxTaXplOworICAgIE9wdGlvblJhbmdlIHZhbE9wdGlvblJhbmdlOwor
ICAgIGNvbnN0IGNoYXIqIHZhbE9wdGlvblN0cmluZzsKKyAgICBHQ0xvZ2dpbmc6OkxldmVsIHZh
bEdDTG9nTGV2ZWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTEzNzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgR0MK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9u
SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCitib29sIE9wdGlvbnM6
OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxh
YmlsaXR5KQogewogICAgIGlmIChhdmFpbGFiaWxpdHkgPT0gQXZhaWxhYmlsaXR5OjpSZXN0cmlj
dGVkKQogICAgICAgICByZXR1cm4gZ19qc2NDb25maWcucmVzdHJpY3RlZE9wdGlvbnNFbmFibGVk
OwpAQCAtMTQwLDI2ICsxNDAsMjYgQEAgYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25J
RCBpZCwgTwogICAgIAogICAgIFVOVVNFRF9QQVJBTShpZCk7CiAjaWYgIWRlZmluZWQoTkRFQlVH
KQotICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bWF4U2luZ2xlQWxsb2NhdGlvblNpemUpCisgICAg
aWYgKGlkID09IG1heFNpbmdsZUFsbG9jYXRpb25TaXplSUQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAjaWYgT1MoREFSV0lOKQotICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dXNlU2ln
aWxsQ3Jhc2hBbmFseXplcikKKyAgICBpZiAoaWQgPT0gdXNlU2lnaWxsQ3Jhc2hBbmFseXplcklE
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYm
IE9TKExJTlVYKQotICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bG9nSklUQ29kZUZvclBlcmYpCisg
ICAgaWYgKGlkID09IGxvZ0pJVENvZGVGb3JQZXJmSUQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCi0gICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50RXhlY3V0aW9uKQorICAg
IGlmIChpZCA9PSB0cmFjZUxMSW50RXhlY3V0aW9uSUQpCiAgICAgICAgIHJldHVybiAhIUxMSU5U
X1RSQUNJTkc7Ci0gICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50U2xvd1BhdGgpCisg
ICAgaWYgKGlkID09IHRyYWNlTExJbnRTbG93UGF0aElEKQogICAgICAgICByZXR1cm4gISFMTElO
VF9UUkFDSU5HOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKFQmIHZhcmlhYmxlLCBPcHRpb25JRCBp
ZCwgY29uc3QgY2hhciogbmFtZSwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkK
K2Jvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKFQmIHZhcmlhYmxlLCBPcHRpb25zOjpJ
RCBpZCwgY29uc3QgY2hhciogbmFtZSwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0
eSkKIHsKICAgICBib29sIGF2YWlsYWJsZSA9IChhdmFpbGFiaWxpdHkgPT0gT3B0aW9uczo6QXZh
aWxhYmlsaXR5OjpOb3JtYWwpCiAgICAgICAgIHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKGlkLCBh
dmFpbGFiaWxpdHkpOwpAQCAtMjgyLDQ3ICsyODIsMTAgQEAgdm9pZCBPcHRpb25SYW5nZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KQogICAgIG91dC5wcmludChtX3JhbmdlU3RyaW5nKTsKIH0KIAot
Ly8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBNU1ZDJ3MgaW5hYmlsaXR5IHRvIGhh
bmRsZSBsYXJnZSBzb3VyY2VzLgotLy8gT25jZSB0aGUgTVNWQyBidWcgaGFzIGJlZW4gZml4ZWQs
IHdlIGNhbiByZW1vdmUgdGhpcyBzbmlwcGV0IG9mIGNvZGUgYW5kCi0vLyBtYWtlIGl0cyBjb3Vu
dGVycGFydCBpbiBPcHRpb25zLmggdW5jb25kaXRpb25hbC4KLS8vIFNlZSBodHRwczovL2RldmVs
b3BlcmNvbW11bml0eS52aXN1YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS82NTMzMDEvZmF0
YWwtZXJyb3ItYzEwMDItY29tcGlsZXItaXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4uaHRtbAotI2lm
IENPTVBJTEVSKE1TVkMpCi0KLXRlbXBsYXRlPE9wdGlvblR5cGVJRCB0eXBlLCBPcHRpb25JRCBp
ZD4KLWNvbnN0ZXhwciBzaXplX3Qgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXgoKQotewotICAgIHNp
emVfdCBpbmRleCA9IDA7Ci0gICAgaW5kZXggPSAwOyAvLyBNU1ZDICgxNi4zLjUpIGltcHJvcGVy
bHkgb3B0aW1pemVzIGF3YXkgdGhlIGlubGluZSBpbml0aWFsaXphdGlvbiBvZiBpbmRleCwgc28g
dXNlIGFuIGV4cGxpY2l0IGFzc2lnbm1lbnQuCi0KLSNkZWZpbmUgQ09VTlRfSU5ERVhfQU5EX0ZJ
TkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNj
cmlwdGlvbl8pIFwKLSAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om5hbWVfKSBcCi0gICAgICAgIHJl
dHVybiBpbmRleDsgXAotICAgIGlmICh0eXBlID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwKLSAg
ICAgICAgaW5kZXgrKzsKLQotICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfSU5ERVhfQU5E
X0ZJTkRfTUFUQ0gpOwotI3VuZGVmIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENICi0gICAgcmV0
dXJuIEludmFsaWRPcHRpb25JbmRleDsKLX0KLQotI2RlZmluZSBERUZJTkVfT1BUSU9OX0FDQ0VT
U09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAotICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9u
czo6bmFtZV8oKSBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0
eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVf
LCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCi0gICAgfSAgXAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCi0gICAgeyBc
Ci0gICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNb
b3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5h
bWVfPigpXTsgXAotICAgIH0KLSAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05f
QUNDRVNTT1JTKQotI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCi0KLSNlbmRpZiAvLyBD
T01QSUxFUihNU1ZDKQotCiAvLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0
aW9uczoKLWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW051
bWJlck9mT3B0aW9uc10gPSB7Citjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19v
cHRpb25zSW5mb1tPcHRpb25zOjpudW1iZXJPZk9wdGlvbnNdID0gewogI2RlZmluZSBGSUxMX09Q
VElPTl9JTkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVz
Y3JpcHRpb25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uVHlwZUlEOjp0
eXBlXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfLCBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCkgfSwKKyAgICB7ICNuYW1l
XywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBlXywgQXZhaWxhYmlsaXR5OjphdmFp
bGFiaWxpdHlfIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihGSUxMX09QVElPTl9JTkZPKQog
I3VuZGVmIEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0zMzYsMjUgKzI5OSwyNiBAQCBzdGF0aWMg
dm9pZCBzY2FsZUpJVFBvbGljeSgpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMC4wOwogCiAgICAg
c3RydWN0IE9wdGlvblRvU2NhbGUgewotICAgICAgICBzaXplX3QgaW5kZXg7CisgICAgICAgIE9w
dGlvbnM6OklEIGlkOwogICAgICAgICBpbnQzMl90IG1pblZhbDsKICAgICB9OwogCiAgICAgc3Rh
dGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2NhbGVbXSA9IHsKLSAgICAgICAgeyBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhy
ZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA+KCksIDAgfSwKLSAgICAgICAgeyBvcHRpb25UeXBlU3Bl
Y2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9ySklU
U29vbj4oKSwgMCB9LAotICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5
cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPigp
LCAxIH0sCi0gICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJ
bnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPigpLCAx
IH0sCi0gICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQz
MiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGltaXplU29vbj4oKSwgMSB9LAotICAgICAgICB7
IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0
aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb24+KCksIDIgfSwKLSAgICAgICAgeyBvcHRpb25UeXBl
U3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9y
RlRMT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMiB9LAorICAgICAgICB7IE9wdGlvbnM6OnRocmVz
aG9sZEZvckpJVEFmdGVyV2FybVVwSUQsIDAgfSwKKyAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hv
bGRGb3JKSVRTb29uSUQsIDAgfSwKKyAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwSUQsIDEgfSwKKyAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcElELCAxIH0sCisgICAgICAgIHsgT3B0aW9uczo6dGhyZXNo
b2xkRm9yT3B0aW1pemVTb29uSUQsIDEgfSwKKyAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRG
b3JGVExPcHRpbWl6ZVNvb25JRCwgMiB9LAorICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZv
ckZUTE9wdGltaXplQWZ0ZXJXYXJtVXBJRCwgMiB9CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBp
bnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVvZihvcHRpb25zVG9TY2FsZSkgLyBzaXpl
b2YoT3B0aW9uVG9TY2FsZSk7CisgICAgY29uc3QgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUg
PSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZTsgaSsrKSB7Ci0gICAgICAg
IGludDMyX3QmIG9wdGlvblZhbHVlID0gZ19qc2NDb25maWcudHlwZUludDMyT3B0aW9uc1tvcHRp
b25zVG9TY2FsZVtpXS5pbmRleF07Ci0gICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9y
OwotICAgICAgICBvcHRpb25WYWx1ZSA9IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBvcHRpb25zVG9T
Y2FsZVtpXS5taW5WYWwpOworICAgICAgICBPcHRpb24gb3B0aW9uKG9wdGlvbnNUb1NjYWxlW2ld
LmlkKTsKKyAgICAgICAgQVNTRVJUKG9wdGlvbi50eXBlKCkgPT0gT3B0aW9uczo6VHlwZTo6SW50
MzIpOworICAgICAgICBvcHRpb24uaW50MzJWYWwoKSAqPSBzY2FsZUZhY3RvcjsKKyAgICAgICAg
b3B0aW9uLmludDMyVmFsKCkgPSBzdGQ6Om1heChvcHRpb24uaW50MzJWYWwoKSwgb3B0aW9uc1Rv
U2NhbGVbaV0ubWluVmFsKTsKICAgICB9CiB9CiAKQEAgLTQ3Nyw3ICs0NDEsNyBAQCBzdGF0aWMg
dm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNv
bmN1cnJlbnRHQygpKQogICAgICAgICBPcHRpb25zOjpjb2xsZWN0Q29udGludW91c2x5KCkgPSBm
YWxzZTsKIAotICAgIGlmIChPcHRpb24oT3B0aW9uSUQ6OmppdFBvbGljeVNjYWxlKS5pc092ZXJy
aWRkZW4oKSkKKyAgICBpZiAoT3B0aW9uKE9wdGlvbnM6OmppdFBvbGljeVNjYWxlSUQpLmlzT3Zl
cnJpZGRlbigpKQogICAgICAgICBzY2FsZUpJVFBvbGljeSgpOwogICAgIAogICAgIGlmIChPcHRp
b25zOjpmb3JjZUVhZ2VyQ29tcGlsYXRpb24oKSkgewpAQCAtNTU4LDExICs1MjIsOSBAQCB2b2lk
IE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgQ29uZmlnOjplbmFibGVSZXN0cmlj
dGVkT3B0aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2Yg
dGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgSU5JVF9PUFRJ
T04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlv
bl8pIHsgXAotICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVfOyBcCi0g
ICAgICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCi0gICAgICAgICAgICAgICAgbmFtZV8j
I0RlZmF1bHQoKSA9IHZhbHVlOyBcCi0gICAgICAgICAgICB9CisjZGVmaW5lIElOSVRfT1BUSU9O
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSBcCisgICAgICAgICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsgXAorICAgICAgICAgICAg
bmFtZV8jI0RlZmF1bHQoKSA9IGRlZmF1bHRWYWx1ZV87CiAgICAgICAgICAgICBGT1JfRUFDSF9K
U0NfT1BUSU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRfT1BUSU9OCiAKQEAgLTU4Niw3ICs1
NDgsNyBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgIENSQVNI
KCk7CiAjZWxzZSAvLyBQTEFURk9STShDT0NPQSkKICNkZWZpbmUgT1ZFUlJJREVfT1BUSU9OX1dJ
VEhfSEVVUklTVElDUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8s
IGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGlj
KG5hbWVfKCksIE9wdGlvbklEOjpuYW1lXywgIkpTQ18iICNuYW1lXywgQXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKTsKKyAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhu
YW1lXygpLCBuYW1lXyMjSUQsICJKU0NfIiAjbmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmls
aXR5Xyk7CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKE9WRVJSSURFX09QVElPTl9X
SVRIX0hFVVJJU1RJQ1MpCiAjdW5kZWYgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUwog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtNzY1LDE1ICs3MjcsMTYgQEAgYm9vbCBPcHRp
b25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogCiAgICAgY29uc3QgY2hhciogdmFsdWVT
dHIgPSBlcXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRo
ZSBzcGVjaWZpZWQgYXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZworICAgIC8vIEZv
ciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNpZnkgYXJnIGlzIGEgbWF0Y2guIElmIHNv
LCBzZXQgdGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1ZSBtYWtlcyBzZW5zZS4gT3RoZXJ3aXNl
LCBtb3ZlIG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9wdGlvbi4KICNkZWZpbmUgU0VUX09QVElP
Tl9JRl9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRl
c2NyaXB0aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25hbWVfKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVxdWFsU3RyIC0gYXJnKSAgICAgIFwKICAgICAgICAgJiYgIXN0cm5jbXAoYXJnLCAjbmFt
ZV8sIGVxdWFsU3RyIC0gYXJnKSkgeyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgXAotICAg
ICAgICAgICAgJiYgIWlzQXZhaWxhYmxlKE9wdGlvbklEOjpuYW1lXywgQXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKSkgXAorICAgICAgICBpZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlf
ICE9IEF2YWlsYWJpbGl0eTo6Tm9ybWFsICAgICBcCisgICAgICAgICAgICAmJiAhaXNBdmFpbGFi
bGUobmFtZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZhbHVlID0gKGRlZmF1bHRWYWx1
ZV8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBib29sIHN1
Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgICBuYW1lXygpID0gdmFsdWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApAQCAtODUzLDEwICs4MTYsMTAgQEAgdm9pZCBPcHRpb25z
OjpkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpZCA9IDA7IGlkIDwgTnVtYmVyT2ZPcHRpb25z
OyBpZCsrKSB7CisgICAgZm9yIChpbnQgaWQgPSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQr
KykgewogICAgICAgICBpZiAoc2VwYXJhdG9yICYmIGlkKQogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3Rh
dGljX2Nhc3Q8T3B0aW9uSUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBE
ZWZhdWx0c09wdGlvbik7CisgICAgICAgIGR1bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRp
Y19jYXN0PElEPihpZCksIG9wdGlvbkhlYWRlciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNP
cHRpb24pOwogICAgIH0KIH0KIApAQCAtODcyLDEwICs4MzUsMTAgQEAgdm9pZCBPcHRpb25zOjpk
dW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgT3B0aW9uczo6ZHVtcE9w
dGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlk
LAordm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBM
ZXZlbCBsZXZlbCwgT3B0aW9uczo6SUQgaWQsCiAgICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25z
dCBjaGFyKiBmb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbiBkdW1wRGVmYXVsdHNPcHRpb24pCiB7
Ci0gICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaWQpID49IE51bWJlck9mT3B0aW9ucykKKyAg
ICBpZiAoaWQgPj0gbnVtYmVyT2ZPcHRpb25zKQogICAgICAgICByZXR1cm47IC8vIElsbGVnYWwg
b3B0aW9uLgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7CkBAIC05MTcsNzEgKzg4MCwyOSBAQCB2
b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7
CiB9CiAKLU9wdGlvbjo6T3B0aW9uKE9wdGlvbklEIGlkKQotICAgIDogbV9pZChpZCkKLXsKLSAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKLSAgICB1bnNp
Z25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5
cGVTcGVjaWZpY0luZGV4OwotICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRp
b25zSW5mb1tpbmRleF0udHlwZTsKLQotICAgIHN3aXRjaCAodHlwZSkgewotCi0jZGVmaW5lIEhB
TkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAotICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpP
cHRpb25UeXBlXzogXAotICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJP
ZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCi0gICAgICAgIG1fdmFsIyNPcHRpb25UeXBlXyA9
IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4
XTsgXAotICAgICAgICBicmVhazsKLQotICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5E
TEVfQ0FTRSkKLSN1bmRlZiBIQU5ETEVfQ0FTRQotICAgIH0KLX0KLQotY29uc3QgT3B0aW9uIE9w
dGlvbjo6ZGVmYXVsdE9wdGlvbigpIGNvbnN0Ci17Ci0gICAgT3B0aW9uIHJlc3VsdDsKLSAgICB1
bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKLSAgICB1bnNpZ25l
ZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVT
cGVjaWZpY0luZGV4OwotICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25z
SW5mb1tpbmRleF0udHlwZTsKLQotICAgIHJlc3VsdC5tX2lkID0gbV9pZDsKLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLQotI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8pIFwKLSAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwKLSAgICAgICAgQVNTRVJUKHR5cGVT
cGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAotICAgICAg
ICByZXN1bHQubV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0aW9uVHlw
ZV8jI0RlZmF1bHRPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAotICAgICAgICBicmVhazsK
LQotICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKLSN1bmRlZiBIQU5E
TEVfQ0FTRQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIE9wdGlvbjo6ZHVt
cChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7
Ci0gICAgY2FzZSBPcHRpb25UeXBlSUQ6OkJvb2w6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1f
dmFsQm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9v
bDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxCb29sID8gInRydWUiIDogImZh
bHNlIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxVbnNpZ25lZCk7CisgICAgY2FzZSBP
cHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9l
bnRyeS52YWxVbnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpTaXplOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFNpemUpOworICAgIGNh
c2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9l
bnRyeS52YWxTaXplKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25UeXBlSUQ6OkRv
dWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3ZhbERv
dWJsZSk7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9lbnRyeS52YWxEb3VibGUpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6SW50MzI6Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fdmFsSW50MzIpOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6SW50MzI6Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsSW50MzIpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7CisgICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpPcHRpb25SYW5nZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52
YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBP
cHRpb25UeXBlSUQ6Ok9wdGlvblN0cmluZzogewotICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24g
PSBtX3ZhbE9wdGlvblN0cmluZzsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0cmlu
ZzogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX2VudHJ5LnZhbE9wdGlvblN0cmlu
ZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24gPSAiIjsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyInKTsKQEAgLTk4OSw4ICs5MTAsOCBAQCB2b2lkIE9wdGlvbjo6
ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6R0NMb2dMZXZl
bDogewotICAgICAgICBidWlsZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV92
YWxHQ0xvZ0xldmVsKSk7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOiB7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX2VudHJ5LnZh
bEdDTG9nTGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTk5OSwyMyAr
OTIwLDIzIEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIKIGJvb2wg
T3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKLSAgICAgICAgcmV0
dXJuIG1fdmFsQm9vbCA9PSBvdGhlci5tX3ZhbEJvb2w7Ci0gICAgY2FzZSBPcHRpb25UeXBlSUQ6
OlVuc2lnbmVkOgotICAgICAgICByZXR1cm4gbV92YWxVbnNpZ25lZCA9PSBvdGhlci5tX3ZhbFVu
c2lnbmVkOwotICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpTaXplOgotICAgICAgICByZXR1cm4gbV92
YWxTaXplID09IG90aGVyLm1fdmFsU2l6ZTsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6RG91Ymxl
OgotICAgICAgICByZXR1cm4gKG1fdmFsRG91YmxlID09IG90aGVyLm1fdmFsRG91YmxlKSB8fCAo
c3RkOjppc25hbihtX3ZhbERvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX3ZhbERvdWJsZSkp
OwotICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIG1fdmFsSW50
MzIgPT0gb3RoZXIubV92YWxJbnQzMjsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFu
Z2U6Ci0gICAgICAgIHJldHVybiBtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3Ro
ZXIubV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOwotICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpPcHRpb25TdHJpbmc6Ci0gICAgICAgIHJldHVybiAobV92YWxPcHRpb25TdHJpbmcgPT0gb3Ro
ZXIubV92YWxPcHRpb25TdHJpbmcpCi0gICAgICAgICAgICB8fCAobV92YWxPcHRpb25TdHJpbmcg
JiYgb3RoZXIubV92YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX3ZhbE9wdGlvblN0cmluZywg
b3RoZXIubV92YWxPcHRpb25TdHJpbmcpKTsKLSAgICBjYXNlIE9wdGlvblR5cGVJRDo6R0NMb2dM
ZXZlbDoKLSAgICAgICAgcmV0dXJuIG1fdmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX3ZhbEdDTG9n
TGV2ZWw7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgorICAgICAgICByZXR1cm4gbV9l
bnRyeS52YWxCb29sID09IG90aGVyLm1fZW50cnkudmFsQm9vbDsKKyAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6OlVuc2lnbmVkOgorICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZCA9PSBv
dGhlci5tX2VudHJ5LnZhbFVuc2lnbmVkOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToK
KyAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsU2l6ZSA9PSBvdGhlci5tX2VudHJ5LnZhbFNpemU7
CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6CisgICAgICAgIHJldHVybiAobV9lbnRy
eS52YWxEb3VibGUgPT0gb3RoZXIubV9lbnRyeS52YWxEb3VibGUpIHx8IChzdGQ6OmlzbmFuKG1f
ZW50cnkudmFsRG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fZW50cnkudmFsRG91YmxlKSk7
CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIG1fZW50cnku
dmFsSW50MzIgPT0gb3RoZXIubV9lbnRyeS52YWxJbnQzMjsKKyAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6Ok9wdGlvblJhbmdlOgorICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxPcHRpb25SYW5nZS5y
YW5nZVN0cmluZygpID09IG90aGVyLm1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmco
KTsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0cmluZzoKKyAgICAgICAgcmV0dXJu
IChtX2VudHJ5LnZhbE9wdGlvblN0cmluZyA9PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmlu
ZykKKyAgICAgICAgICAgIHx8IChtX2VudHJ5LnZhbE9wdGlvblN0cmluZyAmJiBvdGhlci5tX2Vu
dHJ5LnZhbE9wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nLCBv
dGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZykpOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6
R0NMb2dMZXZlbDoKKyAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZlbCA9PSBvdGhl
ci5tX2VudHJ5LnZhbEdDTG9nTGV2ZWw7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI1MTM3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtNTIsMTkgKzUzLDM5IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW4KIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBEdW1wTGV2
ZWwgOiB1aW50OF90IHsKKyAgICBlbnVtIGNsYXNzIER1bXBMZXZlbCB7CiAgICAgICAgIE5vbmUg
PSAwLAogICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBBbGwsCiAgICAgICAgIFZlcmJvc2UK
ICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgOiB1aW50OF90IHsKKyAgICBl
bnVtIGNsYXNzIEF2YWlsYWJpbGl0eSB7CiAgICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJl
c3RyaWN0ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJsZQogICAgIH07CiAKKyNkZWZpbmUgREVDTEFS
RV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBk
ZXNjcmlwdGlvbl8pIFwKKyAgICBuYW1lXyMjSUQsCisKKyAgICBlbnVtIElEIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKKyAgICAgICAgbnVtYmVyT2ZP
cHRpb25zCisgICAgfTsKKyN1bmRlZiBERUNMQVJFX09QVElPTl9JRAorCisgICAgZW51bSBjbGFz
cyBUeXBlIHsKKyAgICAgICAgQm9vbCwKKyAgICAgICAgVW5zaWduZWQsCisgICAgICAgIERvdWJs
ZSwKKyAgICAgICAgSW50MzIsCisgICAgICAgIFNpemUsCisgICAgICAgIE9wdGlvblJhbmdlLAor
ICAgICAgICBPcHRpb25TdHJpbmcsCisgICAgICAgIEdDTG9nTGV2ZWwsCisgICAgfTsKKwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIFBh
cnNlcyBhIHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3Jt
YXQgIi0tPG9wdGlvbk5hbWU+PTx2YWx1ZT4iCkBAIC04MCwyMSArMTAxLDE0IEBAIHB1YmxpYzoK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hl
cmVudCgpOwogCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIE1TVkMncyBpbmFi
aWxpdHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCi0vLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJj
b21tdW5pdHkudmlzdWFsc3R1ZGlvLmNvbS9jb250ZW50L3Byb2JsZW0vNjUzMzAxL2ZhdGFsLWVy
cm9yLWMxMDAyLWNvbXBpbGVyLWlzLW91dC1vZi1oZWFwLXNwYWNlLWluLmh0bWwKLSNpZiBDT01Q
SUxFUihNU1ZDKQotI2RlZmluZSBPUFRJT05fQUNDRVNTT1JfTElOS0FHRSBKU19FWFBPUlRfUFJJ
VkFURQotI2Vsc2UKLSNkZWZpbmUgT1BUSU9OX0FDQ0VTU09SX0xJTktBR0UgQUxXQVlTX0lOTElO
RQotI2VuZGlmCi0KICNkZWZpbmUgREVDTEFSRV9PUFRJT05fQUNDRVNTT1JTKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgT1BU
SU9OX0FDQ0VTU09SX0xJTktBR0Ugc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8oKTsg
XAotICAgIE9QVElPTl9BQ0NFU1NPUl9MSU5LQUdFIHN0YXRpYyBPcHRpb25UeXBlczo6dHlwZV8m
IG5hbWVfIyNEZWZhdWx0KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6
OnR5cGVfJiBuYW1lXygpIHsgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbbmFtZV8jI0lEXS52
YWwjI3R5cGVfOyB9ICBcCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5
cGVfJiBuYW1lXyMjRGVmYXVsdCgpIHsgcmV0dXJuIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25z
W25hbWVfIyNJRF0udmFsIyN0eXBlXzsgfQorCiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNM
QVJFX09QVElPTl9BQ0NFU1NPUlMpCiAjdW5kZWYgREVDTEFSRV9PUFRJT05fQUNDRVNTT1JTCiAK
LSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZShPcHRpb25JRCwgQXZhaWxhYmlsaXR5KTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZShJRCwgQXZhaWxhYmlsaXR5KTsKIAogcHJpdmF0ZToK
IApAQCAtMTAyLDkgKzExNiw4IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEVudHJ5SW5mbyB7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
OwotICAgICAgICBPcHRpb25UeXBlSUQgdHlwZTsKKyAgICAgICAgVHlwZSB0eXBlOwogICAgICAg
ICBBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5OwotICAgICAgICB1bnNpZ25lZCB0eXBlU3BlY2lm
aWNJbmRleDsKICAgICB9OwogCiAgICAgT3B0aW9ucygpOwpAQCAtMTE2LDg5ICsxMjksMTIyIEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbnNJZk5lZWRlZCgpOwogICAgIHN0
YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIGNvbnN0
IGNoYXIqIHRpdGxlLAogICAgICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IsIGNvbnN0IGNoYXIq
IG9wdGlvbkhlYWRlciwgY29uc3QgY2hhciogb3B0aW9uRm9vdGVyLCBEdW1wRGVmYXVsdHNPcHRp
b24pOwotICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZl
bCwgT3B0aW9uSUQsCisgICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwg
RHVtcExldmVsLCBJRCwKICAgICAgICAgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBj
aGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7CiAKICAgICBzdGF0aWMgYm9v
bCBzZXRPcHRpb25XaXRob3V0QWxpYXMoY29uc3QgY2hhciogYXJnKTsKICAgICBzdGF0aWMgYm9v
bCBzZXRBbGlhc2VkT3B0aW9uKGNvbnN0IGNoYXIqIGFyZyk7CiAgICAgc3RhdGljIGJvb2wgb3Zl
cnJpZGVBbGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyhjb25zdCBjaGFyKiBuYW1lKTsKIAotICAg
IHN0YXRpYyBjb25zdCBFbnRyeUluZm8gc19vcHRpb25zSW5mb1tOdW1iZXJPZk9wdGlvbnNdOwor
ICAgIHN0YXRpYyBjb25zdCBFbnRyeUluZm8gc19vcHRpb25zSW5mb1tudW1iZXJPZk9wdGlvbnNd
OwogCiAgICAgZnJpZW5kIGNsYXNzIE9wdGlvbjsKIH07CiAKIGNsYXNzIE9wdGlvbiB7CiBwdWJs
aWM6Ci0gICAgT3B0aW9uKE9wdGlvbklEKTsKLQorICAgIE9wdGlvbihPcHRpb25zOjpJRCBpZCkK
KyAgICAgICAgOiBtX2lkKGlkKQorICAgICAgICAsIG1fZW50cnkoZ19qc2NDb25maWcub3B0aW9u
c1ttX2lkXSkKKyAgICB7CisgICAgfQorICAgIAogICAgIHZvaWQgZHVtcChTdHJpbmdCdWlsZGVy
JikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgT3B0aW9uSUQgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9Ci0gICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIE9w
dGlvbnM6OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS5uYW1lOyB9Ci0gICAgY29uc3QgY2hhciog
ZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5k
ZXgoKV0uZGVzY3JpcHRpb247IH0KLSAgICBPcHRpb25UeXBlSUQgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS50eXBlOyB9Ci0gICAgT3B0aW9u
czo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNf
b3B0aW9uc0luZm9baWRJbmRleCgpXS5hdmFpbGFiaWxpdHk7IH0KLSAgICBib29sIGlzT3ZlcnJp
ZGRlbigpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IGRlZmF1bHRPcHRpb24oKTsgfQorICAgIE9w
dGlvbnM6OklEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIE9w
dGlvbnM6OlR5cGUgdHlwZSgpIGNvbnN0OworICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFp
bGFiaWxpdHkoKSBjb25zdDsKKyAgICBib29sIGlzT3ZlcnJpZGRlbigpIGNvbnN0OwogICAgIGNv
bnN0IE9wdGlvbiBkZWZhdWx0T3B0aW9uKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCYgYm9vbFZh
bCgpOworICAgIHVuc2lnbmVkJiB1bnNpZ25lZFZhbCgpOworICAgIGRvdWJsZSYgZG91YmxlVmFs
KCk7CisgICAgaW50MzJfdCYgaW50MzJWYWwoKTsKKyAgICBPcHRpb25SYW5nZSBvcHRpb25SYW5n
ZVZhbCgpOworICAgIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZ1ZhbCgpOworICAgIEdDTG9nZ2lu
Zzo6TGV2ZWwmIGdjTG9nTGV2ZWxWYWwoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgLy8gT25seSB1
c2VkIGZvciBjb25zdHJ1Y3RpbmcgZGVmYXVsdCBPcHRpb25zLgorICAgIE9wdGlvbihPcHRpb25z
OjpJRCBpZCwgT3B0aW9uRW50cnkmIGVudHJ5KQorICAgICAgICA6IG1faWQoaWQpCisgICAgICAg
ICwgbV9lbnRyeShlbnRyeSkKKyAgICB7CisgICAgfQorICAgIAorICAgIE9wdGlvbnM6OklEIG1f
aWQ7CisgICAgT3B0aW9uRW50cnkmIG1fZW50cnk7Cit9OwogCi0jZGVmaW5lIERFQ0xBUkVfQUND
RVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCi0gICAgdHlwZV8gdmFsIyNPcHRpb25UeXBlXygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQotICAgIEZPUl9FQUNIX0pTQ19P
UFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQotI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IKK2lu
bGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPcHRp
b25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Cit9CiAKLXByaXZhdGU6Ci0gICAgT3B0aW9u
KCkgeyB9CitpbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0uZGVzY3JpcHRpb247Cit9
CiAKLSAgICBzaXplX3QgaWRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4obV9pZCk7IH0KK2lubGluZSBPcHRpb25zOjpUeXBlIE9wdGlvbjo6dHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0udHlwZTsKK30KIAotICAg
IE9wdGlvbklEIG1faWQ7Ci0gICAgdW5pb24geworaW5saW5lIE9wdGlvbnM6OkF2YWlsYWJpbGl0
eSBPcHRpb246OmF2YWlsYWJpbGl0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9wdGlvbnM6OnNf
b3B0aW9uc0luZm9bbV9pZF0uYXZhaWxhYmlsaXR5OworfQogCi0jZGVmaW5lIERFQ0xBUkVfTUVN
QkVSKE9wdGlvblR5cGVfLCB0eXBlXykgXAotICAgICAgICB0eXBlXyBtX3ZhbCMjT3B0aW9uVHlw
ZV87Ci0gICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfTUVNQkVSKQotI3VuZGVm
IERFQ0xBUkVfTUVNQkVSCitpbmxpbmUgYm9vbCBPcHRpb246OmlzT3ZlcnJpZGRlbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuICp0aGlzICE9IGRlZmF1bHRPcHRpb24oKTsKK30KIAotICAgIH07Ci19
OworaW5saW5lIGNvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPcHRpb24obV9pZCwgZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbV9pZF0p
OworfQogCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIE1TVkMncyBpbmFiaWxp
dHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCi0vLyBPbmNlIHRoZSBNU1ZDIGJ1ZyBoYXMgYmVl
biBmaXhlZCwgd2UgY2FuIG1ha2UgdGhlIGZvbGxvd2luZyB1bmNvbmRpdGlvbmFsIGFuZAotLy8g
cmVtb3ZlIGl0cyBjb3VudGVycGFydCBNU1ZDIHZlcnNpb24gaW4gT3B0aW9ucy5jcHAuCi0vLyBT
ZWUgaHR0cHM6Ly9kZXZlbG9wZXJjb21tdW5pdHkudmlzdWFsc3R1ZGlvLmNvbS9jb250ZW50L3By
b2JsZW0vNjUzMzAxL2ZhdGFsLWVycm9yLWMxMDAyLWNvbXBpbGVyLWlzLW91dC1vZi1oZWFwLXNw
YWNlLWluLmh0bWwKLSNpZiAhQ09NUElMRVIoTVNWQykKLQotdGVtcGxhdGU8T3B0aW9uVHlwZUlE
IHR5cGUsIE9wdGlvbklEIGlkPgotY29uc3RleHByIHNpemVfdCBvcHRpb25UeXBlU3BlY2lmaWNJ
bmRleCgpCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKLSNkZWZpbmUgQ09VTlRfSU5ERVhfQU5E
X0ZJTkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBk
ZXNjcmlwdGlvbl8pIFwKLSAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om5hbWVfKSBcCi0gICAgICAg
IHJldHVybiBpbmRleDsgXAotICAgIGlmICh0eXBlID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwK
LSAgICAgICAgaW5kZXgrKzsKLQotICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfSU5ERVhf
QU5EX0ZJTkRfTUFUQ0gpOwotI3VuZGVmIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENICi0gICAg
cmV0dXJuIEludmFsaWRPcHRpb25JbmRleDsKLX0KLQotI2RlZmluZSBERUZJTkVfT1BUSU9OX0FD
Q0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2Ny
aXB0aW9uXykgXAotICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uVHlwZXM6OnR5cGVfJiBPcHRpb25z
OjpuYW1lXygpIFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLnR5cGUjI3R5
cGVfIyNPcHRpb25zW29wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6dHlwZV8s
IE9wdGlvbklEOjpuYW1lXz4oKV07IFwKLSAgICB9ICBcCi0gICAgQUxXQVlTX0lOTElORSBPcHRp
b25UeXBlczo6dHlwZV8mIE9wdGlvbnM6Om5hbWVfIyNEZWZhdWx0KCkgXAotICAgIHsgXAotICAg
ICAgICByZXR1cm4gZ19qc2NDb25maWcudHlwZSMjdHlwZV8jI0RlZmF1bHRPcHRpb25zW29wdGlv
blR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6dHlwZV8sIE9wdGlvbklEOjpuYW1lXz4o
KV07IFwKLSAgICB9Ci0gICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUZJTkVfT1BUSU9OX0FDQ0VT
U09SUykKLSN1bmRlZiBERUZJTkVfT1BUSU9OX0FDQ0VTU09SUworaW5saW5lIGJvb2wmIE9wdGlv
bjo6Ym9vbFZhbCgpCit7CisgICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbDsKK30KKworaW5saW5l
IHVuc2lnbmVkJiBPcHRpb246OnVuc2lnbmVkVmFsKCkKK3sKKyAgICByZXR1cm4gbV9lbnRyeS52
YWxVbnNpZ25lZDsKK30KKworaW5saW5lIGRvdWJsZSYgT3B0aW9uOjpkb3VibGVWYWwoKQorewor
ICAgIHJldHVybiBtX2VudHJ5LnZhbERvdWJsZTsKK30KIAotI2VuZGlmIC8vICFDT01QSUxFUihN
U1ZDKQoraW5saW5lIGludDMyX3QmIE9wdGlvbjo6aW50MzJWYWwoKQoreworICAgIHJldHVybiBt
X2VudHJ5LnZhbEludDMyOworfQorCitpbmxpbmUgT3B0aW9uUmFuZ2UgT3B0aW9uOjpvcHRpb25S
YW5nZVZhbCgpCit7CisgICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2U7Cit9CisKK2lu
bGluZSBjb25zdCBjaGFyKiBPcHRpb246Om9wdGlvblN0cmluZ1ZhbCgpCit7CisgICAgcmV0dXJu
IG1fZW50cnkudmFsT3B0aW9uU3RyaW5nOworfQorCitpbmxpbmUgR0NMb2dnaW5nOjpMZXZlbCYg
T3B0aW9uOjpnY0xvZ0xldmVsVmFsKCkKK3sKKyAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xl
dmVsOworfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjUxMzczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
MTggKzI1LDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0j
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KIG5hbWVzcGFjZSBKU0MgewogCiAvLyBIb3cg
ZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PQog
Ly8gVGhlIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBtYWNybyBiZWxvdyBkZWZpbmVzIGEgbGlzdCBv
ZiBhbGwgSlNDIG9wdGlvbnMgaW4gdXNlLAogLy8gYWxvbmcgd2l0aCB0aGVpciB0eXBlcyBhbmQg
ZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRpb25zIHZhbHVlcyBhcmUgYWN0dWFsbHkKLS8vIHJlYWxp
emVkIGFzIGFycmF5cyBvZiBlYWNoIG9mIHRoZSBPcHRpb25UeXBlcyBpbiBKU0M6OkNvbmZpZy4K
Ky8vIHJlYWxpemVkIGFzIGFuIGFycmF5IG9mIE9wdGlvbkVudHJ5IGVsZW1lbnRzIGluIEpTQzo6
Q29uZmlnLgogLy8KLS8vICAgICBPcHRpb25zOjppbml0aWFsaXplKCkgd2lsbCBpbml0aWFsaXpl
IHRoZSBhcnJheXMgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAorLy8gICAgIE9wdGlvbnM6OmluaXRp
YWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5IG9mIG9wdGlvbnMgdmFsdWVzIHdpdGgK
IC8vIHRoZSBkZWZhdWx0cyBzcGVjaWZpZWQgaW4gRk9SX0VBQ0hfSlNDX09QVElPTigpIGJlbG93
LiBBZnRlciB0aGF0LCB0aGUgdmFsdWVzIGNhbgogLy8gYmUgcHJvZ3JhbW1hdGljYWxseSByZWFk
IGFuZCB3cml0dGVuIHRvIHVzaW5nIGFuIGFjY2Vzc29yIG1ldGhvZCB3aXRoIHRoZQogLy8gc2Ft
ZSBuYW1lIGFzIHRoZSBvcHRpb24uIEZvciBleGFtcGxlLCB0aGUgb3B0aW9uICJ1c2VKSVQiIGNh
biBiZSByZWFkIGFuZApAQCAtNTcsNjggKzU0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBjaGVj
a3MgYXJlIGRvbmUgYWZ0ZXIgdGhlIG9wdGlvbiB2YWx1ZXMgYXJlIHNldC4gSWYgeW91IGFsdGVy
IHRoZSBvcHRpb24KIC8vIHZhbHVlcyBhZnRlciB0aGUgc2FuaXR5IGNoZWNrcyAoZm9yIHlvdXIg
b3duIHRlc3RpbmcpLCB0aGVuIHlvdSdyZSBsaWFibGUgdG8KIC8vIGVuc3VyZSB0aGF0IHRoZSBu
ZXcgdmFsdWVzIHNldCBhcmUgc2FuZSBhbmQgcmVhc29uYWJsZSBmb3IgeW91ciBvd24gcnVuLgot
Ly8KLS8vIEFueSBtb2RpZmljYXRpb25zIHRvIG9wdGlvbnMgbXVzdCBiZSBkb25lIGJlZm9yZSB0
aGUgZmlyc3QgVk0gaXMgaW5zdGFudGlhdGUuCi0vLyBPbiBpbnN0YW50aWF0aW9uIG9mIHRoZSBm
aXJzdCBWTSBpbnN0YW5jZSwgdGhlIE9wdGlvbnMgd2lsbCBiZSB3cml0ZSBwcm90ZWN0ZWQKLS8v
IGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgdGhlcmVhZnRlci4KLQotY2xhc3MgT3B0aW9uUmFuZ2Ug
ewotcHJpdmF0ZToKLSAgICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJy
b3IsIE5vcm1hbCwgSW52ZXJ0ZWQgfTsKLXB1YmxpYzoKLSAgICBPcHRpb25SYW5nZSYgb3BlcmF0
b3I9IChjb25zdCBpbnQmIHJocykKLSAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXph
dGlvbgotICAgICAgICBpZiAoIXJocykgewotICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlh
bGl6ZWQ7Ci0gICAgICAgICAgICBtX3JhbmdlU3RyaW5nID0gMDsKLSAgICAgICAgICAgIG1fbG93
TGltaXQgPSAwOwotICAgICAgICAgICAgbV9oaWdoTGltaXQgPSAwOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoY29uc3QgY2hhciopOwot
ICAgIGJvb2wgaXNJblJhbmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcg
OiBzX251bGxSYW5nZVN0cjsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxs
UmFuZ2VTdHI7Ci0KLSAgICBSYW5nZVN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgY2hhciogbV9y
YW5nZVN0cmluZzsKLSAgICB1bnNpZ25lZCBtX2xvd0xpbWl0OwotICAgIHVuc2lnbmVkIG1faGln
aExpbWl0OwotfTsKLQotI2RlZmluZSBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUodikgXAotICAg
IHYoQm9vbCwgYm9vbCkgXAotICAgIHYoVW5zaWduZWQsIHVuc2lnbmVkKSBcCi0gICAgdihEb3Vi
bGUsIGRvdWJsZSkgXAotICAgIHYoSW50MzIsIGludDMyX3QpIFwKLSAgICB2KFNpemUsIHNpemVf
dCkgXAotICAgIHYoT3B0aW9uUmFuZ2UsIE9wdGlvblJhbmdlKSBcCi0gICAgdihPcHRpb25TdHJp
bmcsIGNvbnN0IGNoYXIqKSBcCi0gICAgdihHQ0xvZ0xldmVsLCBHQ0xvZ2dpbmc6OkxldmVsKSBc
Ci0KLW5hbWVzcGFjZSBPcHRpb25UeXBlcyB7Ci0KLSNkZWZpbmUgREVDTEFSRV9UWVBFUyhPcHRp
b25UeXBlXywgdHlwZV8pIFwKLSAgICB1c2luZyBPcHRpb25UeXBlXyA9IHR5cGVfOwotICAgIEZP
Ul9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX1RZUEVTKQotI3VuZGVmIERFQ0xBUkVfVFlQ
RVMKLQotfSAvLyBuYW1lc3BhY2UgT3B0aW9uVHlwZXMKLQotZW51bSBjbGFzcyBPcHRpb25UeXBl
SUQgOiB1aW50OF90IHsKLQotI2RlZmluZSBERUNMQVJFX1RZUEVJRChPcHRpb25UeXBlXywgdHlw
ZV8pIFwKLSAgICBPcHRpb25UeXBlXywKLSAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVD
TEFSRV9UWVBFSUQpCi0jdW5kZWYgREVDTEFSRV9UWVBFSUQKLQotfTsKIAogI2RlZmluZSBGT1Jf
RUFDSF9KU0NfT1BUSU9OKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIHYoQm9vbCwgdXNlS2VyblRDU00sIHRydWUsIE5vcm1hbCwgIk5vdGU6IHRoaXMg
bmVlZHMgdG8gZ28gYmVmb3JlIG90aGVyIG9wdGlvbnMgc2luY2UgdGhleSBkZXBlbmQgb24gdGhp
cyB2YWx1ZS4iKSBcCkBAIC01NzUsMTQgKzUxMCw2IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2Ug
ewogICAgIHYobWF4aW11bUZUTENhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIG1heGltdW1GVExD
YW5kaWRhdGVCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKICAgICB2KG1heGltdW1Jbmxpbmlu
Z0NhbGxlclNpemUsIG1heGltdW1JbmxpbmluZ0NhbGxlckJ5dGVjb2RlQ29zdCwgU2FtZU9wdGlv
bikgXAogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0lEKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZh
bHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgbmFtZV8sCi1lbnVtIGNs
YXNzIE9wdGlvbklEIDogdWludDE2X3QgewotICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFS
RV9PUFRJT05fSUQpCi19OwotI3VuZGVmIERFQ0xBUkVfT1BUSU9OX0lECi0KLXN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IEludmFsaWRPcHRpb25JbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk7CiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMo
KQogewpAQCAtNTk1LDI0ICs1MjIsNSBAQCBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZK
U0NPcHRpb25zCiAKIGNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25zID0gY291bnROdW1i
ZXJPZkpTQ09wdGlvbnMoKTsKIAotY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0
aW9uc09mVHlwZShPcHRpb25UeXBlSUQgdHlwZSkKLXsKLSAgICBzaXplX3QgY291bnQgPSAwOwot
I2RlZmluZSBDT1VOVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5
cGVfKSBcCi0gICAgICAgIGNvdW50Kys7Ci0gICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9P
UFRJT04pOwotI3VuZGVmIENPVU5UX09QVElPTgotICAgIHJldHVybiBjb3VudDsKLX0KLQotY29u
c3RleHByIHNpemVfdCBOdW1iZXJPZkJvb2xPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlv
bnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpCb29sKTsKLWNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZV
bnNpZ25lZE9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBl
SUQ6OlVuc2lnbmVkKTsKLWNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZEb3VibGVPcHRpb25zID0g
Y291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpEb3VibGUpOwotY29u
c3RleHByIHNpemVfdCBOdW1iZXJPZkludDMyT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRp
b25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6SW50MzIpOwotY29uc3RleHByIHNpemVfdCBOdW1iZXJP
ZlNpemVPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlE
OjpTaXplKTsKLWNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnMgPSBj
b3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlKTsK
LWNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zID0gY291bnROdW1i
ZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmcpOwotY29uc3Rl
eHByIHNpemVfdCBOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09w
dGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsKTsKLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>