<?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>200508</bug_id>
          
          <creation_ts>2019-08-07 11:14:55 -0700</creation_ts>
          <short_desc>RegisterSet should be constexpr</short_desc>
          <delta_ts>2019-08-07 14:57:27 -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>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559193</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 11:14:55 -0700</bug_when>
    <thetext>RegisterSet should be constexpr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559196</commentid>
    <comment_count>1</comment_count>
      <attachid>375716</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 11:16:07 -0700</bug_when>
    <thetext>Created attachment 375716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559199</commentid>
    <comment_count>2</comment_count>
      <attachid>375716</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 11:19:23 -0700</bug_when>
    <thetext>Comment on attachment 375716
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=375716&amp;action=review

very nice

&gt; Source/JavaScriptCore/jit/RegisterSet.h:251
&gt; +namespace JSC {

style nit: newline after this

&gt; Source/JavaScriptCore/jit/RegisterSet.h:545
&gt; +}

nit: // namespace JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559216</commentid>
    <comment_count>3</comment_count>
      <attachid>375723</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 11:36:58 -0700</bug_when>
    <thetext>Created attachment 375723
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559220</commentid>
    <comment_count>4</comment_count>
      <attachid>375725</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 11:38:16 -0700</bug_when>
    <thetext>Created attachment 375725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559225</commentid>
    <comment_count>5</comment_count>
      <attachid>375727</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 11:50:18 -0700</bug_when>
    <thetext>Created attachment 375727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559254</commentid>
    <comment_count>6</comment_count>
      <attachid>375734</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 12:51:27 -0700</bug_when>
    <thetext>Created attachment 375734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559306</commentid>
    <comment_count>7</comment_count>
      <attachid>375752</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 14:09:28 -0700</bug_when>
    <thetext>Created attachment 375752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559338</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-08-07 14:57:27 -0700</bug_when>
    <thetext>Nvm, we can&apos;t do this because old Clang is broken... :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375716</attachid>
            <date>2019-08-07 11:16:07 -0700</date>
            <delta_ts>2019-08-07 11:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200508-20190807111604.patch</filename>
            <type>text/plain</type>
            <size>53432</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi4zNTA0Y2Y5ODQ5MjdiNDMy
YTdhNmZlYjk5YTFmOWFmNzE1MGI2Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5v
dyB1c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAg
ICAgICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0
cyBmb3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAg
ICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVS
ZWdzOjp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJl
Zzo6UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpS
ZWc6OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVn
OjpuZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAg
IChKU0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UmVnOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6
aXNHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6
b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6
Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3Qp
OgorICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Omlu
dmFsaWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdp
c3RlclNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVn
aXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdS
ZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJl
Z2lzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJl
Z2lzdGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVy
cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9y
SlNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1Rv
Tm90U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFs
bEdQUnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJl
Z2lzdGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVs
ZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0
QW55KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpydW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNp
YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4g
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uZWYy
YTlkM2Y1OGM2OTQ4NmUzZGRlMTEyMjYxZTZmYzg2NzZhMWI4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBA
QAorMjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBz
aW5jZSB3ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAg
ICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJp
dG1hcDo6aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAg
ICAoV1RGOjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRD
bGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2li
bHlVbnNldCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Mg
Y29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+
Ojppc0Z1bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAg
ICAgKFdURjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4
Y2x1ZGUpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJn
ZUFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAg
ICAgIChXVEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgt
MDYgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBG
aWxlU3lzdGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgy
NzViZGQyZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNm
YmNiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxT
cGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3Bl
Y2lhbC5jcHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6
OmFsbFJlZ2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFj
a1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNl
dDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjIpOworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7Cisg
ICAgcmV0dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQog
ewotICAgIG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAg
ICBtX2Nsb2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7
Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0
dXJuVmFsdWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVw
YXJlQ2xvYmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0K
IAogQ0NhbGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKaW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAx
ZGZmYWM2MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVy
YXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9n
cHI7IH0KLSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsg
fQotICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBj
b25zdGV4cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAg
Y29uc3RleHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAg
ICAKLSAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3By
OyB9CisgICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X2dwciA9PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3
Mzk2ZDEyMTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHBy
IFJlZygpCiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAg
IFJlZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVk
KCkpCiAgICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgcmVnKQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQogICAgICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkK
ICAgICB7CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklE
IHJlZykKKyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
KQogICAgICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkK
ICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkK
ICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5k
ZXg7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcg
Zmlyc3QoKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAg
IFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4
cHIgc3RhdGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAg
IHJlc3VsdC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBN
YWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBSZWcgbmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAg
ICAgIGlmICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRl
eCgpCisgICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsg
fQogCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXggPT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAot
ICAgIGJvb2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9m
UmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNv
bnN0ZXhwciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRl
eCAtIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVy
OjpudW1iZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFj
cm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHBy
IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1i
bGVyOjpGUFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBS
ZWdpc3RlcigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMo
KSkpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAK
LSAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9w
ZXJhdG9yPihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPihjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5k
ZXggPiBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29u
c3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhl
ci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBv
dGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4
OwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAg
ICB9CkBAIC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFi
bGUgYWxsKCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgdWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBz
dGF0aWMgdWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVp
bnQ4X3QgZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVp
bnQ4X3QgZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5k
ZXg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAx
MzY1NjBjZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYy
YWQ3N2JjMWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1S
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBS
ZWdpc3RlclNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1S
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0g
ICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVz
dWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VU
X0lGX1JFU0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkK
LSN1bmRlZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07
Ci0jZW5kaWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMo
KQotewotICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwg
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQot
ewotICAgIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KSk7Ci0gICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRI
YXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVn
aXN0ZXJzOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBX
ZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBh
Y3R1YWxseSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwg
dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBS
ZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BV
KEFSTTY0KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBS
ZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUo
TUlQUykKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2Vt
Ymxlcjo6aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0
ZXIpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYK
LX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewot
ICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQs
IG5hbWUsIGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2Fs
bGVlU2F2ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hf
R1BfUkVHSVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVS
KFNFVF9JRl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShY
ODZfNjQpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M0KTsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsK
LSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02
NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQp
OwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7
Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJ
bmZvOjpmcFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTNCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Nyk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0
ZXJBdE9mZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMo
KQogewogICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3
NiArNDcsNiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBS
ZWdpc3RlclNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYg
IU9TKFdJTkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NT
NCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3
KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwot
I2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNp
ZiBDUFUoWDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6
cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQ
UkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0j
ZWxzZQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJN
X1RIVU1CMikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJl
Z0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUo
TUlQUykKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShG
VExfSklUKQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMg
PT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6
cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBz
YXZlcyBzcGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86
OmZwUmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1
bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MzKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lz
dGVyU2V0IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7
IGkrKykKLSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkp
OwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVy
U2V0KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkp
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0Nh
bGwoKQotewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJl
c2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0
OjphbGxHUFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3Rlcigp
OyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2Fz
dDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5z
ZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNl
dDo6YWxsRlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9B
c3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lz
dGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3Rh
dGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAg
IHJlc3VsdC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBS
ZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0g
ICAgcmVzdWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNl
dEdQUnMoKSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1w
LmZpbHRlcihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJz
KCk7Ci19Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsK
LSAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKLSAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJl
Z2lzdGVyU2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhj
MDE4NDJkNjk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQw
MDgxNzcxNGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lz
dGVyU2V0LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRl
ZiBCaXRtYXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBS
cyArIDE+IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNs
YXNzIFJlZ2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJp
dG1hcDxNYWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsg
MT47CiAgICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRN
YW55KHJlZ3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVnaXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0
IHNwZWNpYWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJk
d2FyZSwgYW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhh
dCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0
YXRpYyBSZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0
YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFj
aywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4
cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4
cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUg
c2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4K
ICAgICBzdGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zm
c2V0cygpOwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAg
IHN0YXRpYyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVy
cyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQg
ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVy
U2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNl
dCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBi
eSB0aGUgREZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxl
ZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVz
ZWQgYnkgdGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0
YXRpYyBSZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVn
aXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBz
dGF0aWMgUmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlv
biBvZiBjYWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJl
Z2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWdpc3RlclNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdp
c3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0
ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29s
IHZhbHVlID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxl
UmVnaXN0ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBh
bmQgc3BlY2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0
IGFsbEdQUnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsK
KyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNv
bnN0ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4
cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAg
IGNvbnN0ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwo
KTsKKyAgICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRy
dWUpCiAgICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJl
Zy5pbmRleCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdz
IHJlZ3MsIGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVl
UmVncyByZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRh
Z0dQUigpICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwg
dmFsdWUpOwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVl
KSB7IHZhbHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkg
eyB2YWx1ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNs
ZWFyKFJlZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQo
UmVnIHJlZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJl
dHVybiBtX2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJh
YmxlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUp
CiAgICAgewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNl
dChyZWcpOwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFp
bnMgdGVybWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9n
ZXQuCi0gICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJl
ZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRz
LnRlc3RBbmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVn
KQorICAgIGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCEhcmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4
KCkpOwogICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdl
dChyZWcpOyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyBy
ZXR1cm4gZ2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0
JiBvdGhlcikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVy
KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7
IH0KLSAgICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5l
eGNsdWRlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBS
ZWdpc3RlclNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBj
b25zdGV4cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5m
aWx0ZXIob3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3Qg
UmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAg
ICAKLSAgICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9v
bCBzdWJzdW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cy5zdWJzdW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0
R1BScygpIGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBz
aXplX3QgbnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQo
KTsgfQorICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAg
Y29uc3RleHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIg
c2l6ZV90IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50
KCk7IH0KICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNF
bXB0eSgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cy5pc0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0
eVZhbHVlIH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAg
ICAKLSAgICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3Rl
clNldChFbXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lh
bEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFn
KQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAg
ICAgICBtX2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0
KGRlbGV0ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5n
ZXQoZGVsZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1
ZSgpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9i
aXRzLmdldChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3Ro
ZXIubV9iaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhl
ci5tX2JpdHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0g
ICAgdm9pZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZv
aWQgZm9yRWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRz
LmZvckVhY2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4
LDEyICsyMDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IGl0ZXJhdG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRB
bnkoUmVnIHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJl
Z3MpIHsgc2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNl
dCkgeyBtZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBz
ZXRBbnkoSlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29u
c3RleHByIHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUs
IHR5cGVuYW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4u
IHJlZ3MpCisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiBy
ZWdzKQogICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4u
Lik7CkBAIC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpT
Qzo6UmVnaXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQo
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAg
ICBSZWdpc3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1l
LCBpc1Jlc2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1
bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRf
SUZfUkVTRVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQor
I3VuZGVmIFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3Rl
eHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJl
dHVybiB7IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0
OjpzcGVjaWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAg
IHN0YWNrUmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRh
Z1JlZ2lzdGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVS
ZWdpc3RlcnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZv
bGF0aWxlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpKTsKKyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdp
c3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBv
dXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAg
cmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJT
ZXQoTWFjcm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkK
KyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIs
IE1hY3JvQXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisg
ICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6Omlt
bVRlbXBSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2Nv
bnN0ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7
CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChp
ZCwgbmFtZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXND
YWxsZWVTYXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFD
SF9HUF9SRUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNU
RVIoU0VUX0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2
bUNhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M0KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzkpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQo
RlBSSW5mbzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzcpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Nv
bnN0ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2Vs
aWYgQ1BVKFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChH
UFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M0KTsKKyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NT
NiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M1KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlm
IENQVShBUk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzgpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBT
KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25z
dGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQor
eworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82
NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1Mo
V0lORE9XUykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJU
KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAg
IEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkK
KyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25z
dGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQor
eworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUo
WDg2XzY0KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8g
QjMgbWlnaHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGlu
IHRoZSBBQkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M0KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVn
aXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQg
cmVzdWx0OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQor
ICAgICAgICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5k
aWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lz
dGVyU2V0KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJz
KCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1Rv
Tm90U2F2ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJl
Z2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJl
c3VsdDsKKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lz
dGVyKCk7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcg
KyAxKSkKKyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2NvbnN0ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBy
ZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2Vt
Ymxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFs
bFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJn
ZShhbGxHUFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BS
cygpIGNvbnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmls
dGVyKGFsbEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsK
K30KKworY29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29u
c3QKK3sKKyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxs
RlBScygpKTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9
CisKICNlbmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0JpdG1hcC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJm
MmYzMzQ4MGI1ODAxYjI1YWYyZWIwZGRjNi4uNWRhYWE1ZDVhZjlhOTU4YzgyZDM0YjU0MWU5ZTYz
YTU5N2E3Mzg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291
cmNlL1dURi93dGYvQml0bWFwLmgKQEAgLTM0LDY5ICszNCw2OCBAQCBjbGFzcyBCaXRtYXAgewog
ICAgIAogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWdu
ZWQpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1Ymxp
YzoKLSAgICBjb25zdGV4cHIgQml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBzaXplKCkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAg
IGJvb2wgZ2V0KHNpemVfdCwgRGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAg
dm9pZCBzZXQoc2l6ZV90KTsKLSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wg
dGVzdEFuZFNldChzaXplX3QpOwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAg
Y29uc3RleHByIGJvb2wgZ2V0KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBE
ZXBlbmRlbmN5KSBjb25zdDsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBj
b25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0
QW5kU2V0KHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7
CiAgICAgYm9vbCBjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBl
bmRlbmN5KCkpOwogICAgIGJvb2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVu
ZGVuY3kgPSBEZXBlbmRlbmN5KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXpl
X3QpIGNvbnN0OwotICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG5leHRQb3NzaWJseVVuc2V0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xl
YXIoc2l6ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2Za
ZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0
YXJ0ID0gMCkgY29uc3Q7Ci0gICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3Qg
aXNGdWxsKCkgY29uc3Q7CisgICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6
ZV90IHJ1bkxlbmd0aCkgY29uc3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qg
c3RhcnQgPSAwKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsK
KyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVy
Z2UoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAg
dm9pZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNv
bnN0IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsK
KyAgICBjb25zdGV4cHIgdm9pZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBj
b25jdXJyZW50RmlsdGVyKGNvbnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMo
Y29uc3QgQml0bWFwJikgY29uc3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3Qg
Qml0bWFwJikgY29uc3Q7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lk
IGZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5k
Qml0KHNpemVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIg
c2l6ZV90IGZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAg
IAogICAgIGNsYXNzIGl0ZXJhdG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkK
KyAgICAgICAgY29uc3RleHByIGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVs
bHB0cikKICAgICAgICAgICAgICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5k
ZXgpCisgICAgICAgIGNvbnN0ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6
ZV90IGluZGV4KQogICAgICAgICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAg
LCBtX2luZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHNpemVfdCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNv
bnN0ZXhwciBzaXplX3Qgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAg
ICAgICAKLSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIg
aXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0g
bV9iaXRtYXAtPmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAg
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAg
ICAgfQpAQCAtMTA3LDE2ICsxMDYsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8g
VXNlIHRoaXMgdG8gaXRlcmF0ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAg
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUp
OyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0
b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAot
ICAgIHZvaWQgbWVyZ2VBbmRDbGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJp
dG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAg
Y29uc3RleHByIHZvaWQgc2V0QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBC
aXRtYXAmKSBjb25zdDsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYpIGNvbnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikg
Y29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEyOCwyOSBA
QCBwcml2YXRlOgogICAgIC8vIGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZm
ZjgwMDAKICAgICBzdGF0aWMgY29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJy
YXk8V29yZFR5cGUsIHdvcmRzPiBiaXRzOworICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRz
PiBiaXRzIHsgfTsKIH07CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KLWNvbnN0ZXhwciBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpCaXRtYXAo
KQorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVf
dCBuKSBjb25zdAogewotICAgIGNsZWFyQWxsKCk7CisgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdv
cmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpIGNv
bnN0Citib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVw
ZW5kZW5jeSBkZXBlbmRlbmN5KSBjb25zdAogewogICAgIHJldHVybiAhIShkZXBlbmRlbmN5LmNv
bnN1bWUodGhpcyktPmJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkp
KTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQor
Y29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBu
KQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSB8PSAob25lIDw8IChuICUgd29yZFNpemUpKTsK
IH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29s
IHZhbHVlKQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0
KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4p
OwpAQCAtMTYwLDcgKzE1OSw3IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKK2NvbnN0ZXhwciBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29y
ZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBu
IC8gd29yZFNpemU7CkBAIC0xNzAsNyArMTY5LDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKIH0KIAogdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQorY29uc3RleHByIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQog
ewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90
IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMjEyLDE5ICsyMTEsMTkgQEAgQUxXQVlTX0lOTElO
RSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xl
YXIoc2l6ZV90IG4KIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIo
c2l6ZV90IG4pCitjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpj
bGVhcihzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwgKG4g
JSB3b3JkU2l6ZSkpOwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVh
ckFsbCgpCit2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsK
ICAgICBtZW1zZXQoYml0cy5kYXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0
KSBjb25zdAorY29uc3RleHByIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpu
ZXh0UG9zc2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgaWYgKCF+Yml0c1tz
dGFydCAvIHdvcmRTaXplXSkKICAgICAgICAgcmV0dXJuICgoc3RhcnQgLyB3b3JkU2l6ZSkgKyAx
KSAqIHdvcmRTaXplOwpAQCAtMjMyLDcgKzIzMSw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25z
CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9z
KHNpemVfdCBydW5MZW5ndGgpIGNvbnN0Citjb25zdGV4cHIgaW50NjRfdCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAog
ewogICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yNTIs
NyArMjUxLDcgQEAgaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY28KIH0KIAogdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Citjb25zdGV4cHIg
c2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkg
Y29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdv
cmRTaXplKTsgKytzdGFydCkgewpAQCAtMjY1LDcgKzI2NCw3IEBAIGlubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogfQog
CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
c2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAorY29u
c3RleHByIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29u
c3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlm
IChiaXRzW2ldKQpAQCAtMjc0LDcgKzI3Myw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmICh+Yml0c1tpXSkKQEAgLTI4Mywy
MSArMjgyLDIxIEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aXNGdWxsKCkgY29uc3QKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVy
Z2UoY29uc3QgQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNb
aV07CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
LWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBC
aXRtYXAmIG90aGVyKQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAK
IHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBv
dGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1
ZGUoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CkBAIC0zMjQsNyAr
MzIzLDcgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3Vy
cmVudEZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpzdWJzdW1lcyhjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAorY29uc3Rl
eHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0
bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyAr
K2kpIHsKICAgICAgICAgV29yZFR5cGUgbXlCaXRzID0gYml0c1tpXTsKQEAgLTMzNyw3ICszMzYs
NyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzdWJzdW1lcyhj
b25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBm
dW5jKSBjb25zdAorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tp
XTsKQEAgLTM1Myw3ICszNTIsNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29y
ZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3Qg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qgc3RhcnRJbmRleCwg
Ym9vbCB2YWx1ZSkgY29uc3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6ZmluZEJpdChzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKIHsK
ICAgICBXb3JkVHlwZSBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PFdvcmRUeXBlPih2YWx1ZSkg
XiAxKTsKICAgICBzaXplX3Qgd29yZEluZGV4ID0gc3RhcnRJbmRleCAvIHdvcmRTaXplOwpAQCAt
Mzc1LDcgKzM3NCw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6ZmluZEJpdChzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1CiB9CiAKIHRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK2NvbnN0
ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0
bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsK
ICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwpAQCAtMzg0LDcgKzM4Myw3IEBAIGlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0
bWFwJiBvdGhlcikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5k
Q2xlYXIoQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OnNldEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGJpdHNbaV0gPSBvdGhlci5iaXRzW2ld
OwpAQCAtMzkzLDcgKzM5Miw3IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnNldEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2Nv
bnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29u
c3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpIHsKICAgICAgICAgaWYgKGJpdHNbaV0gIT0gb3RoZXIuYml0c1tpXSkKQEAgLTQw
MywxMyArNDAyLDEzIEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25z
dAorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBj
b25zdAorY29uc3RleHByIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhh
c2goKSBjb25zdAogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3JkczsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375723</attachid>
            <date>2019-08-07 11:36:58 -0700</date>
            <delta_ts>2019-08-07 11:38:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200508-20190807113653.patch</filename>
            <type>text/plain</type>
            <size>53585</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi5kMzhiY2M2ZWE3Y2Y1YmY1
NDMzMTY2NzViN2JmMzA2MTIzMjc0Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5vdyB1
c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAgICAg
ICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0cyBm
b3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAgICog
aml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdz
Ojp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJlZzo6
UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6
OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpu
ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAgIChK
U0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6aXNH
UFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmludmFs
aWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlND
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90
U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVsZXRl
ZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0QW55
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpy
dW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNpYWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNG
b3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4gYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uNWU0MzNj
ZTUzOWMxN2U3NmQ1N2Q2MTg0NmEwMTA1Mzk3MDFkNjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBzaW5jZSB3
ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6aXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNl
dCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3MgY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1
bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJnZUFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChX
VEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3QpOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgtMDYgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaWxlU3lz
dGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgyNzViZGQy
ZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNmYmNiY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xvYmJlcmVk
UmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJk
d2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgcmV0
dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQogewotICAg
IG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICBtX2Ns
b2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAg
bV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0KIAogQ0Nh
bGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
aW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAxZGZmYWM2
MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0K
LSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQotICAg
IEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBjb25zdGV4
cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3RleHByIEdQ
UlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKLSAg
ICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9Cisg
ICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3Mzk2ZDEy
MTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHByIFJlZygp
CiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAgIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVkKCkpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZykK
KyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7
CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZmlyc3Qo
KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAgIFJlZyBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fz
c2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhwciBSZWcg
bmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAgICAgIGlm
ICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCisg
ICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXgg
PT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAotICAgIGJv
b2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0
ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRleCAtIE1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVyOjpudW1i
ZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KICAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICB9CkBA
IC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFibGUgYWxs
KCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5kZXg7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAxMzY1NjBj
ZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYyYWQ3N2Jj
MWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBSZWdpc3Rl
clNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFtZSwgaXNS
ZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVzdWx0LnNl
dChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VUX0lGX1JF
U0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkKLSN1bmRl
ZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5k
aWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKQotewot
ICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwgcmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdp
c3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQotewotICAg
IFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0gICAgdm9s
YXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVnaXN0ZXJz
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3Vs
ZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBhY3R1YWxs
eSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBSZWdpc3Rl
clNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVtcFJlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0ZXIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYKLX0KLQot
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQsIG5hbWUs
IGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2FsbGVlU2F2
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVH
SVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9J
Rl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShYODZfNjQp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKQogewog
ICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3NiArNDcs
NiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNpZiBDUFUo
WDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShGVExfSklU
KQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBz
cGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0g
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKLSAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lzdGVyU2V0
IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IGkrKykK
LSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKQot
ewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVk
SGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5zZXQocmVn
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxs
RlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3Vs
dC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVz
dWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMo
KSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRl
cihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19
Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsKLSAgICBS
ZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygpKTsKLSAg
ICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJlZ2lzdGVy
U2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhjMDE4NDJk
Njk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQwMDgxNzcx
NGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiBCaXRt
YXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScyArIDE+
IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJpdG1hcDxN
YWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsgMT47CiAg
ICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRNYW55KHJl
Z3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdo
dCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJl
Z2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3Rl
clNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVz
ZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAgICBz
dGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygp
OwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAgIHN0YXRp
YyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUg
REZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVk
IGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBj
YWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3Rl
clNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdpc3RlcnNU
b05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29sIHZhbHVl
ID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3Bl
Y2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQ
UnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBj
b25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyAg
ICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJlZy5pbmRl
eCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3Ms
IGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVlUmVncyBy
ZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigp
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUp
OwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZh
bHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1
ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNsZWFyKFJl
ZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQoUmVnIHJl
ZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiBt
X2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQor
ICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCiAgICAg
ewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNldChyZWcp
OwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFpbnMgdGVy
bWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9nZXQuCi0g
ICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRzLnRlc3RB
bmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVnKQorICAg
IGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEh
cmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOwog
ICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcp
OyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4g
Z2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAg
ICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRl
KG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5maWx0ZXIo
b3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0
ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAgICAKLSAg
ICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQor
ICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50KCk7IH0K
ICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNFbXB0eSgp
OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5p
c0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVl
IH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICAKLSAg
ICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChF
bXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lhbEJpdElu
ZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFnKQorICAg
IGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAgICAgICBt
X2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0KGRlbGV0
ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVs
ZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9iaXRzLmdl
dChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2Jp
dHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmhh
c2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZvaWQgZm9y
RWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRzLmZvckVh
Y2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJlZ3MpIHsg
c2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBt
ZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHByIHZvaWQg
c2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRBbnko
SlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRB
bnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3Mp
CisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiByZWdzKQog
ICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CkBA
IC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVn
aXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVy
U2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1lLCBpc1Jl
c2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQuc2V0
KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRfSUZfUkVT
RVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQorI3VuZGVm
IFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJldHVybiB7
IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAgIHN0YWNr
UmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRhZ1JlZ2lz
dGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2b2xhdGls
ZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3Rl
cnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZvbGF0aWxl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhv
c2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFj
cm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmltbVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXNDYWxsZWVT
YXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9S
RUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VU
X0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQp
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BV
KFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBTKQorICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9X
UykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUklu
Zm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gQjMgbWln
aHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBB
QkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Mik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChGUFJJbmZv
OjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQorICAgICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5kaWYKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwor
fQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkK
KyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJnZShhbGxH
UFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScygpIGNv
bnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmlsdGVyKGFs
bEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKK30KKwor
Y29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9CisKICNl
bmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJmMmYzMzQ4
MGI1ODAxYjI1YWYyZWIwZGRjNi4uMmY0Y2IzMGUzNDBlN2YzYmI5MWUyOTJmZTlhN2U4OGExMjJk
NjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQml0bWFwLmgKQEAgLTE5LDYgKzE5LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNwcmFn
bWEgbWVzc2FnZSAiX19jcGx1c3BsdXMgPSIgX19jcGx1c3BsdXMKKwogI2luY2x1ZGUgPGFycmF5
PgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KQEAgLTM0LDY5ICszNiw2OCBAQCBjbGFzcyBCaXRtYXAgewogICAgIAogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAiV29yZFR5cGUgbXVz
dCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIg
Qml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAgIGJvb2wgZ2V0KHNpemVfdCwg
RGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAgdm9pZCBzZXQoc2l6ZV90KTsK
LSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wgdGVzdEFuZFNldChzaXplX3Qp
OwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgZ2V0
KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBEZXBlbmRlbmN5KSBjb25zdDsK
KyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQo
c2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0QW5kU2V0KHNpemVfdCk7Cisg
ICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CiAgICAgYm9vbCBjb25jdXJy
ZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5KCkpOwogICAgIGJv
b2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5
KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNvbnN0OwotICAgIHZv
aWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG5leHRQb3NzaWJseVVuc2V0
KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2
b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVu
Z3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7Ci0g
ICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7Cisg
ICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29u
c3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6
ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVyZ2UoY29uc3QgQml0bWFwJik7
Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBleGNsdWRlKGNvbnN0
IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNvbnN0IEJpdG1hcCYpOworICAg
IGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsKKyAgICBjb25zdGV4cHIgdm9p
ZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBjb25jdXJyZW50RmlsdGVyKGNv
bnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFwJikgY29u
c3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFwJikgY29uc3Q7CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIGZvckVhY2hTZXRCaXQoY29u
c3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5kQml0KHNpemVfdCBzdGFydElu
ZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGZpbmRCaXQoc2l6
ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAgIAogICAgIGNsYXNzIGl0ZXJh
dG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAgICAgY29uc3RleHBy
IGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVsbHB0cikKICAgICAgICAgICAg
ICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGl0
ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5kZXgpCisgICAgICAgIGNvbnN0
ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6ZV90IGluZGV4KQogICAgICAg
ICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQog
ICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNpemVfdCBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICAKLSAgICAgICAgaXRl
cmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIgaXRlcmF0b3ImIG9wZXJhdG9y
KysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRtYXAtPmZpbmRCaXQo
bV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0g
b3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQpAQCAtMTA3LDE2ICsx
MDgsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgdG8gaXRlcmF0
ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRl
cmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUpOyB9CisgICAgY29uc3RleHBy
IGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQo
MCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAotICAgIHZvaWQgbWVyZ2VBbmRD
bGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAgIGNvbnN0
ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgY29uc3RleHByIHZvaWQgc2V0
QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAmKSBjb25zdDsKKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNvbnN0OworICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCi0gICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRTaXplID0gc2l6
ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEzMCwyOSBAQCBwcml2YXRlOgogICAgIC8v
IGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZmZjgwMDAKICAgICBzdGF0aWMg
Y29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRz
PiBiaXRzOworICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRzPiBiaXRzIHsgfTsKIH07CiAK
IHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWNvbnN0ZXhw
ciBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpCaXRtYXAoKQorY29uc3RleHByIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuKSBjb25zdAogewotICAg
IGNsZWFyQWxsKCk7CisgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwg
KG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Z2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpIGNvbnN0Citib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVwZW5kZW5jeSBkZXBlbmRlbmN5
KSBjb25zdAogewogICAgIHJldHVybiAhIShkZXBlbmRlbmN5LmNvbnN1bWUodGhpcyktPmJpdHNb
biAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQorY29uc3RleHByIHZvaWQgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQogewogICAgIGJpdHNbbiAv
IHdvcmRTaXplXSB8PSAob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAogdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQorY29uc3RleHBy
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTYwLDcgKzE2MSw3
IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3Qg
biwgYm9vbCB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVz
dEFuZFNldChzaXplX3QgbikKK2NvbnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8
PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0x
NzAsNyArMTcxLDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
dGVzdEFuZFNldChzaXplX3QgbikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMjEyLDE5ICsyMTMsMTkgQEAgQUxXQVlTX0lOTElORSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4KIH0KIAog
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCitjb25zdGV4
cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKIHsK
ICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQog
CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCit2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQoYml0cy5k
YXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAorY29uc3RleHBy
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNldChz
aXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgaWYgKCF+Yml0c1tzdGFydCAvIHdvcmRTaXplXSkK
ICAgICAgICAgcmV0dXJuICgoc3RhcnQgLyB3b3JkU2l6ZSkgKyAxKSAqIHdvcmRTaXplOwpAQCAt
MjMyLDcgKzIzMyw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zCiB9CiAKIHRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgp
IGNvbnN0Citjb25zdGV4cHIgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpm
aW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVu
Z3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yNTIsNyArMjUzLDcgQEAgaW5saW5l
IGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6
ZV90IHJ1bkxlbmd0aCkgY28KIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXpl
X3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkg
ewpAQCAtMjY1LDcgKzI2Niw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAorY29uc3RleHByIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmIChiaXRzW2ldKQpAQCAtMjc0
LDcgKzI3NSw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aXNFbXB0eSgpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aXNGdWxsKCkgY29uc3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCiAgICAgICAgIGlmICh+Yml0c1tpXSkKQEAgLTI4MywyMSArMjg0LDIxIEBAIGlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIH0K
IAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2UoY29uc3QgQml0bWFwJiBv
dGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
KGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jk
czsgKytpKQogICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07CiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQorY29u
c3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJp
dG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQog
ICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBv
dGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAg
IGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CkBAIC0zMjQsNyArMzI1LDcgQEAgaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudEZpbHRlcihjb25zdCBC
aXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzdWJz
dW1lcyhjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAorY29uc3RleHByIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29y
ZFR5cGUgbXlCaXRzID0gYml0c1tpXTsKQEAgLTMzNyw3ICszMzgsNyBAQCBpbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzdWJzdW1lcyhjb25zdCBCaXRtYXAmIG90aGVy
KSBjb25zdAogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAorY29uc3Rl
eHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25z
dCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7
ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTM1Myw3ICszNTQs
NyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JFYWNoU2V0
Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QK
K2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChz
aXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKIHsKICAgICBXb3JkVHlwZSBza2lw
VmFsdWUgPSAtKHN0YXRpY19jYXN0PFdvcmRUeXBlPih2YWx1ZSkgXiAxKTsKICAgICBzaXplX3Qg
d29yZEluZGV4ID0gc3RhcnRJbmRleCAvIHdvcmRTaXplOwpAQCAtMzc1LDcgKzM3Niw3IEBAIGlu
bGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qg
c3RhcnRJbmRleCwgYm9vbCB2YWx1CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgYml0c1tpXSB8
PSBvdGhlci5iaXRzW2ldOwpAQCAtMzg0LDcgKzM4NSw3IEBAIGlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKIH0KIAog
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhl
cikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENs
ZWFyKEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKSB7CiAgICAgICAgIGJpdHNbaV0gPSBvdGhlci5iaXRzW2ldOwpAQCAtMzkzLDcgKzM5NCw3
IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFy
KEJpdG1hcCYgb3RoZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9w
ZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2NvbnN0ZXhwciBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikg
Y29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAg
ICAgaWYgKGJpdHNbaV0gIT0gb3RoZXIuYml0c1tpXSkKQEAgLTQwMywxMyArNDA0LDEzIEBAIGlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3Qg
Qml0bWFwJiBvdGhlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAorY29uc3RleHByIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90
aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAogdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVuc2lnbmVk
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAorY29uc3RleHByIHVu
c2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogewogICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375725</attachid>
            <date>2019-08-07 11:38:16 -0700</date>
            <delta_ts>2019-08-07 11:50:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200508-20190807113814.patch</filename>
            <type>text/plain</type>
            <size>53585</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi5kMzhiY2M2ZWE3Y2Y1YmY1
NDMzMTY2NzViN2JmMzA2MTIzMjc0Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5vdyB1
c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAgICAg
ICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0cyBm
b3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAgICog
aml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdz
Ojp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJlZzo6
UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6
OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpu
ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAgIChK
U0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6aXNH
UFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmludmFs
aWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlND
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90
U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVsZXRl
ZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0QW55
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpy
dW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNpYWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNG
b3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4gYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uNWU0MzNj
ZTUzOWMxN2U3NmQ1N2Q2MTg0NmEwMTA1Mzk3MDFkNjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBzaW5jZSB3
ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6aXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNl
dCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3MgY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1
bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJnZUFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChX
VEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3QpOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgtMDYgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaWxlU3lz
dGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgyNzViZGQy
ZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNmYmNiY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xvYmJlcmVk
UmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJk
d2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgcmV0
dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQogewotICAg
IG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICBtX2Ns
b2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAg
bV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0KIAogQ0Nh
bGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
aW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAxZGZmYWM2
MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0K
LSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQotICAg
IEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBjb25zdGV4
cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3RleHByIEdQ
UlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKLSAg
ICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9Cisg
ICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3Mzk2ZDEy
MTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHByIFJlZygp
CiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAgIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVkKCkpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZykK
KyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7
CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZmlyc3Qo
KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAgIFJlZyBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fz
c2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhwciBSZWcg
bmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAgICAgIGlm
ICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCisg
ICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXgg
PT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAotICAgIGJv
b2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0
ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRleCAtIE1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVyOjpudW1i
ZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KICAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICB9CkBA
IC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFibGUgYWxs
KCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5kZXg7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAxMzY1NjBj
ZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYyYWQ3N2Jj
MWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBSZWdpc3Rl
clNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFtZSwgaXNS
ZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVzdWx0LnNl
dChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VUX0lGX1JF
U0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkKLSN1bmRl
ZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5k
aWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKQotewot
ICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwgcmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdp
c3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQotewotICAg
IFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0gICAgdm9s
YXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVnaXN0ZXJz
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3Vs
ZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBhY3R1YWxs
eSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBSZWdpc3Rl
clNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVtcFJlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0ZXIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYKLX0KLQot
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQsIG5hbWUs
IGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2FsbGVlU2F2
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVH
SVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9J
Rl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShYODZfNjQp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKQogewog
ICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3NiArNDcs
NiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNpZiBDUFUo
WDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShGVExfSklU
KQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBz
cGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0g
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKLSAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lzdGVyU2V0
IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IGkrKykK
LSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKQot
ewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVk
SGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5zZXQocmVn
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxs
RlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3Vs
dC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVz
dWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMo
KSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRl
cihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19
Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsKLSAgICBS
ZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygpKTsKLSAg
ICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJlZ2lzdGVy
U2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhjMDE4NDJk
Njk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQwMDgxNzcx
NGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiBCaXRt
YXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScyArIDE+
IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJpdG1hcDxN
YWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsgMT47CiAg
ICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRNYW55KHJl
Z3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdo
dCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJl
Z2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3Rl
clNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVz
ZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAgICBz
dGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygp
OwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAgIHN0YXRp
YyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUg
REZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVk
IGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBj
YWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3Rl
clNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdpc3RlcnNU
b05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29sIHZhbHVl
ID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3Bl
Y2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQ
UnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBj
b25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyAg
ICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJlZy5pbmRl
eCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3Ms
IGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVlUmVncyBy
ZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigp
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUp
OwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZh
bHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1
ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNsZWFyKFJl
ZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQoUmVnIHJl
ZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiBt
X2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQor
ICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCiAgICAg
ewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNldChyZWcp
OwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFpbnMgdGVy
bWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9nZXQuCi0g
ICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRzLnRlc3RB
bmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVnKQorICAg
IGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEh
cmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOwog
ICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcp
OyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4g
Z2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAg
ICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRl
KG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5maWx0ZXIo
b3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0
ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAgICAKLSAg
ICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQor
ICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50KCk7IH0K
ICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNFbXB0eSgp
OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5p
c0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVl
IH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICAKLSAg
ICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChF
bXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lhbEJpdElu
ZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFnKQorICAg
IGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAgICAgICBt
X2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0KGRlbGV0
ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVs
ZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9iaXRzLmdl
dChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2Jp
dHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmhh
c2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZvaWQgZm9y
RWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRzLmZvckVh
Y2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJlZ3MpIHsg
c2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBt
ZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHByIHZvaWQg
c2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRBbnko
SlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRB
bnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3Mp
CisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiByZWdzKQog
ICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CkBA
IC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVn
aXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVy
U2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1lLCBpc1Jl
c2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQuc2V0
KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRfSUZfUkVT
RVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQorI3VuZGVm
IFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJldHVybiB7
IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAgIHN0YWNr
UmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRhZ1JlZ2lz
dGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2b2xhdGls
ZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3Rl
cnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZvbGF0aWxl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhv
c2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFj
cm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmltbVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXNDYWxsZWVT
YXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9S
RUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VU
X0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQp
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BV
KFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBTKQorICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9X
UykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUklu
Zm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gQjMgbWln
aHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBB
QkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Mik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChGUFJJbmZv
OjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQorICAgICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5kaWYKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwor
fQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkK
KyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJnZShhbGxH
UFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScygpIGNv
bnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmlsdGVyKGFs
bEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKK30KKwor
Y29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9CisKICNl
bmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJmMmYzMzQ4
MGI1ODAxYjI1YWYyZWIwZGRjNi4uMmY0Y2IzMGUzNDBlN2YzYmI5MWUyOTJmZTlhN2U4OGExMjJk
NjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQml0bWFwLmgKQEAgLTE5LDYgKzE5LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNwcmFn
bWEgbWVzc2FnZSAiX19jcGx1c3BsdXMgPSIgX19jcGx1c3BsdXMKKwogI2luY2x1ZGUgPGFycmF5
PgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KQEAgLTM0LDY5ICszNiw2OCBAQCBjbGFzcyBCaXRtYXAgewogICAgIAogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAiV29yZFR5cGUgbXVz
dCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIg
Qml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAgIGJvb2wgZ2V0KHNpemVfdCwg
RGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAgdm9pZCBzZXQoc2l6ZV90KTsK
LSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wgdGVzdEFuZFNldChzaXplX3Qp
OwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgZ2V0
KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBEZXBlbmRlbmN5KSBjb25zdDsK
KyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQo
c2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0QW5kU2V0KHNpemVfdCk7Cisg
ICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CiAgICAgYm9vbCBjb25jdXJy
ZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5KCkpOwogICAgIGJv
b2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5
KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNvbnN0OwotICAgIHZv
aWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG5leHRQb3NzaWJseVVuc2V0
KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2
b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVu
Z3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7Ci0g
ICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7Cisg
ICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29u
c3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQgPSAwKSBjb25zdDsK
KyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6
ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVyZ2UoY29uc3QgQml0bWFwJik7
Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBleGNsdWRlKGNvbnN0
IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNvbnN0IEJpdG1hcCYpOworICAg
IGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsKKyAgICBjb25zdGV4cHIgdm9p
ZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBjb25jdXJyZW50RmlsdGVyKGNv
bnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFwJikgY29u
c3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFwJikgY29uc3Q7CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIGZvckVhY2hTZXRCaXQoY29u
c3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5kQml0KHNpemVfdCBzdGFydElu
ZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGZpbmRCaXQoc2l6
ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAgIAogICAgIGNsYXNzIGl0ZXJh
dG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAgICAgY29uc3RleHBy
IGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVsbHB0cikKICAgICAgICAgICAg
ICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGl0
ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5kZXgpCisgICAgICAgIGNvbnN0
ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6ZV90IGluZGV4KQogICAgICAg
ICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQog
ICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNpemVfdCBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICAKLSAgICAgICAgaXRl
cmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIgaXRlcmF0b3ImIG9wZXJhdG9y
KysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRtYXAtPmZpbmRCaXQo
bV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0g
b3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQpAQCAtMTA3LDE2ICsx
MDgsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgdG8gaXRlcmF0
ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRl
cmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUpOyB9CisgICAgY29uc3RleHBy
IGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQo
MCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAotICAgIHZvaWQgbWVyZ2VBbmRD
bGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAgIGNvbnN0
ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgY29uc3RleHByIHZvaWQgc2V0
QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAmKSBjb25zdDsKKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNvbnN0OworICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCi0gICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRTaXplID0gc2l6
ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEzMCwyOSBAQCBwcml2YXRlOgogICAgIC8v
IGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZmZjgwMDAKICAgICBzdGF0aWMg
Y29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRz
PiBiaXRzOworICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRzPiBiaXRzIHsgfTsKIH07CiAK
IHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWNvbnN0ZXhw
ciBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpCaXRtYXAoKQorY29uc3RleHByIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuKSBjb25zdAogewotICAg
IGNsZWFyQWxsKCk7CisgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwg
KG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Z2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpIGNvbnN0Citib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVwZW5kZW5jeSBkZXBlbmRlbmN5
KSBjb25zdAogewogICAgIHJldHVybiAhIShkZXBlbmRlbmN5LmNvbnN1bWUodGhpcyktPmJpdHNb
biAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQorY29uc3RleHByIHZvaWQgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQogewogICAgIGJpdHNbbiAv
IHdvcmRTaXplXSB8PSAob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAogdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQorY29uc3RleHBy
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTYwLDcgKzE2MSw3
IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3Qg
biwgYm9vbCB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVz
dEFuZFNldChzaXplX3QgbikKK2NvbnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8
PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0x
NzAsNyArMTcxLDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
dGVzdEFuZFNldChzaXplX3QgbikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMjEyLDE5ICsyMTMsMTkgQEAgQUxXQVlTX0lOTElORSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4KIH0KIAog
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCitjb25zdGV4
cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKIHsK
ICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQog
CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCit2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQoYml0cy5k
YXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAorY29uc3RleHBy
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNldChz
aXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgaWYgKCF+Yml0c1tzdGFydCAvIHdvcmRTaXplXSkK
ICAgICAgICAgcmV0dXJuICgoc3RhcnQgLyB3b3JkU2l6ZSkgKyAxKSAqIHdvcmRTaXplOwpAQCAt
MjMyLDcgKzIzMyw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zCiB9CiAKIHRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgp
IGNvbnN0Citjb25zdGV4cHIgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpm
aW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVu
Z3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yNTIsNyArMjUzLDcgQEAgaW5saW5l
IGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6
ZV90IHJ1bkxlbmd0aCkgY28KIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXpl
X3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkg
ewpAQCAtMjY1LDcgKzI2Niw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAorY29uc3RleHByIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmIChiaXRzW2ldKQpAQCAtMjc0
LDcgKzI3NSw3IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aXNFbXB0eSgpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aXNGdWxsKCkgY29uc3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCiAgICAgICAgIGlmICh+Yml0c1tpXSkKQEAgLTI4MywyMSArMjg0LDIxIEBAIGlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIH0K
IAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2UoY29uc3QgQml0bWFwJiBv
dGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
KGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jk
czsgKytpKQogICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07CiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQorY29u
c3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJp
dG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQog
ICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBv
dGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAg
IGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CkBAIC0zMjQsNyArMzI1LDcgQEAgaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudEZpbHRlcihjb25zdCBC
aXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzdWJz
dW1lcyhjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAorY29uc3RleHByIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29y
ZFR5cGUgbXlCaXRzID0gYml0c1tpXTsKQEAgLTMzNyw3ICszMzgsNyBAQCBpbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzdWJzdW1lcyhjb25zdCBCaXRtYXAmIG90aGVy
KSBjb25zdAogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAorY29uc3Rl
eHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25z
dCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7
ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTM1Myw3ICszNTQs
NyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JFYWNoU2V0
Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QK
K2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChz
aXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKIHsKICAgICBXb3JkVHlwZSBza2lw
VmFsdWUgPSAtKHN0YXRpY19jYXN0PFdvcmRUeXBlPih2YWx1ZSkgXiAxKTsKICAgICBzaXplX3Qg
d29yZEluZGV4ID0gc3RhcnRJbmRleCAvIHdvcmRTaXplOwpAQCAtMzc1LDcgKzM3Niw3IEBAIGlu
bGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qg
c3RhcnRJbmRleCwgYm9vbCB2YWx1CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgYml0c1tpXSB8
PSBvdGhlci5iaXRzW2ldOwpAQCAtMzg0LDcgKzM4NSw3IEBAIGlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKIH0KIAog
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhl
cikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENs
ZWFyKEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKSB7CiAgICAgICAgIGJpdHNbaV0gPSBvdGhlci5iaXRzW2ldOwpAQCAtMzkzLDcgKzM5NCw3
IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFy
KEJpdG1hcCYgb3RoZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9w
ZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2NvbnN0ZXhwciBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikg
Y29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAg
ICAgaWYgKGJpdHNbaV0gIT0gb3RoZXIuYml0c1tpXSkKQEAgLTQwMywxMyArNDA0LDEzIEBAIGlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3Qg
Qml0bWFwJiBvdGhlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAorY29uc3RleHByIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90
aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAogdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVuc2lnbmVk
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAorY29uc3RleHByIHVu
c2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogewogICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375727</attachid>
            <date>2019-08-07 11:50:18 -0700</date>
            <delta_ts>2019-08-07 12:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200508-20190807115013.patch</filename>
            <type>text/plain</type>
            <size>53481</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi5kMzhiY2M2ZWE3Y2Y1YmY1
NDMzMTY2NzViN2JmMzA2MTIzMjc0Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5vdyB1
c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAgICAg
ICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0cyBm
b3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAgICog
aml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdz
Ojp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJlZzo6
UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6
OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpu
ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAgIChK
U0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6aXNH
UFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmludmFs
aWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlND
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90
U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVsZXRl
ZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0QW55
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpy
dW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNpYWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNG
b3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4gYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uNWU0MzNj
ZTUzOWMxN2U3NmQ1N2Q2MTg0NmEwMTA1Mzk3MDFkNjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBzaW5jZSB3
ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6aXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNl
dCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3MgY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1
bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJnZUFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChX
VEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3QpOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgtMDYgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaWxlU3lz
dGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgyNzViZGQy
ZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNmYmNiY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xvYmJlcmVk
UmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJk
d2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgcmV0
dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQogewotICAg
IG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICBtX2Ns
b2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAg
bV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0KIAogQ0Nh
bGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
aW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAxZGZmYWM2
MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0K
LSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQotICAg
IEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBjb25zdGV4
cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3RleHByIEdQ
UlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKLSAg
ICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9Cisg
ICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3Mzk2ZDEy
MTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHByIFJlZygp
CiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAgIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVkKCkpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZykK
KyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7
CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZmlyc3Qo
KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAgIFJlZyBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fz
c2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhwciBSZWcg
bmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAgICAgIGlm
ICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCisg
ICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXgg
PT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAotICAgIGJv
b2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0
ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRleCAtIE1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVyOjpudW1i
ZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KICAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICB9CkBA
IC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFibGUgYWxs
KCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5kZXg7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAxMzY1NjBj
ZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYyYWQ3N2Jj
MWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBSZWdpc3Rl
clNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFtZSwgaXNS
ZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVzdWx0LnNl
dChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VUX0lGX1JF
U0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkKLSN1bmRl
ZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5k
aWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKQotewot
ICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwgcmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdp
c3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQotewotICAg
IFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0gICAgdm9s
YXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVnaXN0ZXJz
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3Vs
ZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBhY3R1YWxs
eSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBSZWdpc3Rl
clNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVtcFJlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0ZXIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYKLX0KLQot
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQsIG5hbWUs
IGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2FsbGVlU2F2
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVH
SVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9J
Rl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShYODZfNjQp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKQogewog
ICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3NiArNDcs
NiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNpZiBDUFUo
WDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShGVExfSklU
KQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBz
cGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0g
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKLSAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lzdGVyU2V0
IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IGkrKykK
LSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKQot
ewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVk
SGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5zZXQocmVn
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxs
RlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3Vs
dC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVz
dWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMo
KSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRl
cihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19
Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsKLSAgICBS
ZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygpKTsKLSAg
ICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJlZ2lzdGVy
U2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhjMDE4NDJk
Njk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQwMDgxNzcx
NGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiBCaXRt
YXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScyArIDE+
IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJpdG1hcDxN
YWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsgMT47CiAg
ICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRNYW55KHJl
Z3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdo
dCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJl
Z2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3Rl
clNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVz
ZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAgICBz
dGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygp
OwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAgIHN0YXRp
YyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUg
REZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVk
IGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBj
YWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3Rl
clNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdpc3RlcnNU
b05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29sIHZhbHVl
ID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3Bl
Y2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQ
UnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBj
b25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyAg
ICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJlZy5pbmRl
eCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3Ms
IGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVlUmVncyBy
ZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigp
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUp
OwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZh
bHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1
ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNsZWFyKFJl
ZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQoUmVnIHJl
ZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiBt
X2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQor
ICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCiAgICAg
ewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNldChyZWcp
OwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFpbnMgdGVy
bWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9nZXQuCi0g
ICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRzLnRlc3RB
bmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVnKQorICAg
IGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEh
cmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOwog
ICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcp
OyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4g
Z2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAg
ICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRl
KG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5maWx0ZXIo
b3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0
ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAgICAKLSAg
ICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQor
ICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50KCk7IH0K
ICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNFbXB0eSgp
OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5p
c0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVl
IH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICAKLSAg
ICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChF
bXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lhbEJpdElu
ZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFnKQorICAg
IGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAgICAgICBt
X2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0KGRlbGV0
ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVs
ZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9iaXRzLmdl
dChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2Jp
dHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmhh
c2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZvaWQgZm9y
RWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRzLmZvckVh
Y2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJlZ3MpIHsg
c2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBt
ZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHByIHZvaWQg
c2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRBbnko
SlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRB
bnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3Mp
CisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiByZWdzKQog
ICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CkBA
IC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVn
aXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVy
U2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1lLCBpc1Jl
c2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQuc2V0
KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRfSUZfUkVT
RVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQorI3VuZGVm
IFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJldHVybiB7
IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAgIHN0YWNr
UmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRhZ1JlZ2lz
dGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2b2xhdGls
ZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3Rl
cnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZvbGF0aWxl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhv
c2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFj
cm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmltbVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXNDYWxsZWVT
YXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9S
RUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VU
X0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQp
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BV
KFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBTKQorICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9X
UykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUklu
Zm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gQjMgbWln
aHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBB
QkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Mik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChGUFJJbmZv
OjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQorICAgICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5kaWYKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwor
fQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkK
KyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJnZShhbGxH
UFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScygpIGNv
bnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmlsdGVyKGFs
bEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKK30KKwor
Y29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9CisKICNl
bmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJmMmYzMzQ4
MGI1ODAxYjI1YWYyZWIwZGRjNi4uM2Y1NzhlYjE0N2YxYzY3YTdhZjRlOThlMTAxN2I4NGYzN2M0
NTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQml0bWFwLmgKQEAgLTM0LDY5ICszNCw2OCBAQCBjbGFzcyBCaXRtYXAgewogICAgIAog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAi
V29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1YmxpYzoKLSAg
ICBjb25zdGV4cHIgQml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXpl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAgIGJvb2wg
Z2V0KHNpemVfdCwgRGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXQoc2l6ZV90KTsKLSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wgdGVzdEFu
ZFNldChzaXplX3QpOwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAgY29uc3Rl
eHByIGJvb2wgZ2V0KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBEZXBlbmRl
bmN5KSBjb25zdDsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBjb25zdGV4
cHIgdm9pZCBzZXQoc2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0QW5kU2V0
KHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CiAgICAg
Ym9vbCBjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5
KCkpOwogICAgIGJvb2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVuZGVuY3kg
PSBEZXBlbmRlbmN5KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNv
bnN0OwotICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG5leHRQ
b3NzaWJseVVuc2V0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoc2l6
ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhz
aXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0g
MCkgY29uc3Q7Ci0gICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3QgaXNGdWxs
KCkgY29uc3Q7CisgICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1
bkxlbmd0aCkgY29uc3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQg
PSAwKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKKyAgICBj
b25zdGV4cHIgc2l6ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVyZ2UoY29u
c3QgQml0bWFwJik7Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBl
eGNsdWRlKGNvbnN0IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNvbnN0IEJp
dG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsKKyAgICBj
b25zdGV4cHIgdm9pZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBjb25jdXJy
ZW50RmlsdGVyKGNvbnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMoY29uc3Qg
Qml0bWFwJikgY29uc3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFw
JikgY29uc3Q7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5kQml0KHNp
emVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IGZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAgIAogICAg
IGNsYXNzIGl0ZXJhdG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAg
ICAgY29uc3RleHByIGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVsbHB0cikK
ICAgICAgICAgICAgICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5kZXgpCisg
ICAgICAgIGNvbnN0ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6ZV90IGlu
ZGV4KQogICAgICAgICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAgLCBtX2lu
ZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNpemVf
dCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNvbnN0ZXhw
ciBzaXplX3Qgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICAK
LSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIgaXRlcmF0
b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRt
YXAtPmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQpA
QCAtMTA3LDE2ICsxMDYsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8gVXNlIHRo
aXMgdG8gaXRlcmF0ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUpOyB9Cisg
ICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRo
aXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAotICAgIHZv
aWQgbWVyZ2VBbmRDbGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYp
OworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgY29uc3Rl
eHByIHZvaWQgc2V0QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAm
KSBjb25zdDsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNv
bnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7
CiAgICAgCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdv
cmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEyOCwyOSBAQCBwcml2
YXRlOgogICAgIC8vIGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZmZjgwMDAK
ICAgICBzdGF0aWMgY29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJyYXk8V29y
ZFR5cGUsIHdvcmRzPiBiaXRzOworICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRzPiBiaXRz
IHsgfTsKIH07CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWNvbnN0ZXhwciBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpCaXRtYXAoKQorY29u
c3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuKSBj
b25zdAogewotICAgIGNsZWFyQWxsKCk7CisgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXpl
XSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpIGNvbnN0Citi
b29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVwZW5kZW5j
eSBkZXBlbmRlbmN5KSBjb25zdAogewogICAgIHJldHVybiAhIShkZXBlbmRlbmN5LmNvbnN1bWUo
dGhpcyktPmJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0K
IAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQorY29uc3Rl
eHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQogewot
ICAgIGJpdHNbbiAvIHdvcmRTaXplXSB8PSAob25lIDw8IChuICUgd29yZFNpemUpKTsKKyAgICBi
aXRzLmF0KG4gLyB3b3JkU2l6ZSkgfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKIHRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lk
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkK
K2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3Qg
biwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHNldChuKTsKQEAgLTE2
MCw3ICsxNTksNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpz
ZXQoc2l6ZV90IG4sIGJvb2wgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCitjb25zdGV4cHIgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMTcwLDcgKzE2OSw3IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKK2NvbnN0ZXhwciBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKICAgICBX
b3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9
IG4gLyB3b3JkU2l6ZTsKQEAgLTIxMiwxOSArMjExLDE5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVf
dCBuCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
LWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBu
KQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6
ZV90IG4pCiB7CiAgICAgYml0c1tuIC8gd29yZFNpemVdICY9IH4ob25lIDw8IChuICUgd29yZFNp
emUpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQor
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCiB7CiAgICAgbWVt
c2V0KGJpdHMuZGF0YSgpLCAwLCBzaXplb2YoYml0cykpOwogfQogCiB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QK
K2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3Np
Ymx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3
b3JkU2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3Jk
U2l6ZTsKQEAgLTIzMiw3ICsyMzEsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29ucwogfQogCiB0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgaW50
NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3Qg
cnVuTGVuZ3RoKSBjb25zdAorY29uc3RleHByIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKIHsKICAgICBp
ZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7IApAQCAtMjUyLDcgKzI1MSw3
IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5P
Zlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAorY29uc3RleHByIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0CiB7
CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgZm9yICggOyAoc3RhcnQgJSB3b3JkU2l6ZSk7
ICsrc3RhcnQpIHsKQEAgLTI2NSw3ICsyNjQsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIH0KIAogdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK2NvbnN0ZXhwciBz
aXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAoYml0c1tp
XSkKQEAgLTI3NCw3ICsyNzMsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAofmJpdHNbaV0pCkBAIC0yODMsMjEgKzI4Miwy
MSBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRnVsbCgp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlKGNvbnN0
IEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQog
CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBv
dGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRl
cihjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29y
ZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOwogfQogCiB0ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpleGNsdWRlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCitj
b25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpleGNsdWRlKGNvbnN0
IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytp
KQogICAgICAgICBiaXRzW2ldICY9IH5vdGhlci5iaXRzW2ldOwpAQCAtMzI0LDcgKzMyMyw3IEBA
IGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRGaWx0
ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6c3Vic3VtZXMoY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2NvbnN0ZXhwciBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnN1YnN1bWVzKGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAg
ICAgICAgIFdvcmRUeXBlIG15Qml0cyA9IGJpdHNbaV07CkBAIC0zMzcsNyArMzM2LDcgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0
bWFwJiBvdGhlcikgY29uc3QKIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29u
c3QKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hT
ZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBAIC0z
NTMsNyArMzUyLDcgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFs
dWUpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OmZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0CiB7CiAgICAgV29y
ZFR5cGUgc2tpcFZhbHVlID0gLShzdGF0aWNfY2FzdDxXb3JkVHlwZT4odmFsdWUpIF4gMSk7CiAg
ICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0SW5kZXggLyB3b3JkU2l6ZTsKQEAgLTM3NSw3ICsz
NzQsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRC
aXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9p
ZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYgb3Ro
ZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAg
IGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKQEAgLTM4NCw3ICszODMsNyBAQCBpbmxpbmUgdm9p
ZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYgb3Ro
ZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
LWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFyKEJp
dG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd29yZHM7ICsraSkgewogICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKQEAgLTM5
Myw3ICszOTIsNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpz
ZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29y
ZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Citjb25zdGV4cHIg
Ym9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytp
KSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC00MDMsMTMgKzQw
MiwxMyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRv
cj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2NvbnN0
ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3Qg
Qml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9
CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKK2Nv
bnN0ZXhwciB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29u
c3QKIHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd29yZHM7ICsraSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375734</attachid>
            <date>2019-08-07 12:51:27 -0700</date>
            <delta_ts>2019-08-07 14:09:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200508-20190807125126.patch</filename>
            <type>text/plain</type>
            <size>54481</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi5kMzhiY2M2ZWE3Y2Y1YmY1
NDMzMTY2NzViN2JmMzA2MTIzMjc0Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5vdyB1
c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAgICAg
ICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0cyBm
b3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAgICog
aml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdz
Ojp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJlZzo6
UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6
OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpu
ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAgIChK
U0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6aXNH
UFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmludmFs
aWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlND
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90
U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVsZXRl
ZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0QW55
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpy
dW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNpYWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNG
b3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4gYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uNWU0MzNj
ZTUzOWMxN2U3NmQ1N2Q2MTg0NmEwMTA1Mzk3MDFkNjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBzaW5jZSB3
ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6aXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNl
dCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3MgY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1
bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJnZUFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChX
VEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3QpOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgtMDYgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaWxlU3lz
dGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgyNzViZGQy
ZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNmYmNiY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xvYmJlcmVk
UmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJk
d2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgcmV0
dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQogewotICAg
IG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICBtX2Ns
b2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAg
bV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0KIAogQ0Nh
bGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
aW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAxZGZmYWM2
MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0K
LSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQotICAg
IEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBjb25zdGV4
cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3RleHByIEdQ
UlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKLSAg
ICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9Cisg
ICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3Mzk2ZDEy
MTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHByIFJlZygp
CiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAgIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVkKCkpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZykK
KyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7
CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZmlyc3Qo
KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAgIFJlZyBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fz
c2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhwciBSZWcg
bmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAgICAgIGlm
ICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCisg
ICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXgg
PT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAotICAgIGJv
b2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0
ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRleCAtIE1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVyOjpudW1i
ZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KICAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICB9CkBA
IC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFibGUgYWxs
KCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5kZXg7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAxMzY1NjBj
ZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYyYWQ3N2Jj
MWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBSZWdpc3Rl
clNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFtZSwgaXNS
ZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVzdWx0LnNl
dChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VUX0lGX1JF
U0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkKLSN1bmRl
ZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5k
aWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKQotewot
ICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwgcmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdp
c3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQotewotICAg
IFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0gICAgdm9s
YXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVnaXN0ZXJz
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3Vs
ZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBhY3R1YWxs
eSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBSZWdpc3Rl
clNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVtcFJlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0ZXIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYKLX0KLQot
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQsIG5hbWUs
IGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2FsbGVlU2F2
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVH
SVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9J
Rl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShYODZfNjQp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKQogewog
ICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3NiArNDcs
NiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNpZiBDUFUo
WDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShGVExfSklU
KQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBz
cGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0g
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKLSAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lzdGVyU2V0
IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IGkrKykK
LSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKQot
ewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVk
SGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5zZXQocmVn
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxs
RlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3Vs
dC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVz
dWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMo
KSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRl
cihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19
Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsKLSAgICBS
ZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygpKTsKLSAg
ICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJlZ2lzdGVy
U2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhjMDE4NDJk
Njk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQwMDgxNzcx
NGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiBCaXRt
YXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScyArIDE+
IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJpdG1hcDxN
YWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsgMT47CiAg
ICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRNYW55KHJl
Z3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdo
dCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJl
Z2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3Rl
clNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVz
ZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAgICBz
dGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygp
OwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAgIHN0YXRp
YyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUg
REZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVk
IGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBj
YWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3Rl
clNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdpc3RlcnNU
b05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29sIHZhbHVl
ID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3Bl
Y2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQ
UnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBj
b25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyAg
ICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJlZy5pbmRl
eCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3Ms
IGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVlUmVncyBy
ZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigp
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUp
OwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZh
bHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1
ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNsZWFyKFJl
ZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQoUmVnIHJl
ZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiBt
X2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQor
ICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCiAgICAg
ewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNldChyZWcp
OwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFpbnMgdGVy
bWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9nZXQuCi0g
ICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRzLnRlc3RB
bmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVnKQorICAg
IGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEh
cmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOwog
ICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcp
OyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4g
Z2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAg
ICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRl
KG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5maWx0ZXIo
b3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0
ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAgICAKLSAg
ICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQor
ICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50KCk7IH0K
ICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNFbXB0eSgp
OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5p
c0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVl
IH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICAKLSAg
ICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChF
bXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lhbEJpdElu
ZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFnKQorICAg
IGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAgICAgICBt
X2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0KGRlbGV0
ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVs
ZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9iaXRzLmdl
dChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2Jp
dHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmhh
c2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZvaWQgZm9y
RWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRzLmZvckVh
Y2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJlZ3MpIHsg
c2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBt
ZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHByIHZvaWQg
c2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRBbnko
SlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRB
bnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3Mp
CisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiByZWdzKQog
ICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CkBA
IC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVn
aXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVy
U2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1lLCBpc1Jl
c2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQuc2V0
KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRfSUZfUkVT
RVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQorI3VuZGVm
IFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJldHVybiB7
IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAgIHN0YWNr
UmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRhZ1JlZ2lz
dGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2b2xhdGls
ZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3Rl
cnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZvbGF0aWxl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhv
c2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFj
cm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmltbVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXNDYWxsZWVT
YXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9S
RUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VU
X0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQp
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BV
KFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBTKQorICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9X
UykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUklu
Zm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gQjMgbWln
aHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBB
QkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Mik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChGUFJJbmZv
OjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQorICAgICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5kaWYKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwor
fQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkK
KyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJnZShhbGxH
UFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScygpIGNv
bnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmlsdGVyKGFs
bEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKK30KKwor
Y29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9CisKICNl
bmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJmMmYzMzQ4
MGI1ODAxYjI1YWYyZWIwZGRjNi4uYjg1OGRlODc0OTAzNTE0MWQwMmM5ZTBjZmY5ODUwMGEwNzNj
M2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQml0bWFwLmgKQEAgLTM0LDY5ICszNCw2OCBAQCBjbGFzcyBCaXRtYXAgewogICAgIAog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAi
V29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1YmxpYzoKLSAg
ICBjb25zdGV4cHIgQml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXpl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAgIGJvb2wg
Z2V0KHNpemVfdCwgRGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXQoc2l6ZV90KTsKLSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wgdGVzdEFu
ZFNldChzaXplX3QpOwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAgY29uc3Rl
eHByIGJvb2wgZ2V0KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBEZXBlbmRl
bmN5KSBjb25zdDsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBjb25zdGV4
cHIgdm9pZCBzZXQoc2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0QW5kU2V0
KHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CiAgICAg
Ym9vbCBjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5
KCkpOwogICAgIGJvb2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVuZGVuY3kg
PSBEZXBlbmRlbmN5KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNv
bnN0OwotICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG5leHRQ
b3NzaWJseVVuc2V0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoc2l6
ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhz
aXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0g
MCkgY29uc3Q7Ci0gICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3QgaXNGdWxs
KCkgY29uc3Q7CisgICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1
bkxlbmd0aCkgY29uc3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQg
PSAwKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKKyAgICBj
b25zdGV4cHIgc2l6ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVyZ2UoY29u
c3QgQml0bWFwJik7Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBl
eGNsdWRlKGNvbnN0IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNvbnN0IEJp
dG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsKKyAgICBj
b25zdGV4cHIgdm9pZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBjb25jdXJy
ZW50RmlsdGVyKGNvbnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMoY29uc3Qg
Qml0bWFwJikgY29uc3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFw
JikgY29uc3Q7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5kQml0KHNp
emVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IGZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAgIAogICAg
IGNsYXNzIGl0ZXJhdG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAg
ICAgY29uc3RleHByIGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVsbHB0cikK
ICAgICAgICAgICAgICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5kZXgpCisg
ICAgICAgIGNvbnN0ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6ZV90IGlu
ZGV4KQogICAgICAgICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAgLCBtX2lu
ZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNpemVf
dCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNvbnN0ZXhw
ciBzaXplX3Qgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICAK
LSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIgaXRlcmF0
b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRt
YXAtPmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQpA
QCAtMTA3LDE2ICsxMDYsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8gVXNlIHRo
aXMgdG8gaXRlcmF0ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUpOyB9Cisg
ICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRo
aXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAotICAgIHZv
aWQgbWVyZ2VBbmRDbGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYp
OworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgY29uc3Rl
eHByIHZvaWQgc2V0QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAm
KSBjb25zdDsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNv
bnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7
CiAgICAgCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdv
cmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEyOCwzMCBAQCBwcml2
YXRlOgogICAgIC8vIGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZmZjgwMDAK
ICAgICBzdGF0aWMgY29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJyYXk8V29y
ZFR5cGUsIHdvcmRzPiBiaXRzOworICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RkOjphcnJh
eSBoZXJlIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGlzIG5vdCBjb25zdGV4cHIgKGRlc3BpdGUgdGhl
IHN0YW5kYXJkKSBvbiBzb21lIGxkYmMrKzE3IGltcGxlbWVudGF0aW9ucy4KKyAgICBXb3JkVHlw
ZSBiaXRzW3dvcmRzXSB7IH07CiB9OwogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Ci1jb25zdGV4cHIgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Qml0bWFwKCkKK2NvbnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omdl
dChzaXplX3QgbikgY29uc3QKIHsKLSAgICBjbGVhckFsbCgpOworICAgIHJldHVybiAhIShiaXRz
W24gLyB3b3JkU2l6ZV0gJiAob25lIDw8IChuICUgd29yZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVwZW5kZW5jeSBkZXBlbmRl
bmN5KSBjb25zdAorYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90
IG4sIERlcGVuZGVuY3kgZGVwZW5kZW5jeSkgY29uc3QKIHsKICAgICByZXR1cm4gISEoZGVwZW5k
ZW5jeS5jb25zdW1lKHRoaXMpLT5iaXRzW24gLyB3b3JkU2l6ZV0gJiAob25lIDw8IChuICUgd29y
ZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXpl
X3QgbikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRT
aXplKSk7CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3Qg
biwgYm9vbCB2YWx1ZSkKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAg
IHNldChuKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4sIGJvb2wgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCitjb25zdGV4cHIgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQogewog
ICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGlu
ZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTcwLDcgKzE3MCw3IEBAIGlubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB9CiAKIHRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKK2NvbnN0
ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXpl
X3QgbikKIHsKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAg
IHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RB
bmRTZXQoc2l6ZV90IG4sCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRT
aXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7Ci0gICAgV29yZFR5cGUqIGRh
dGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cy5kYXRhKCkpICsgaW5kZXg7CisgICAgV29yZFR5
cGUqIGRhdGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cykgKyBpbmRleDsKICAgICByZXR1cm4g
IWJpdHdpc2VfY2FzdDxBdG9taWM8V29yZFR5cGU+Kj4oZGF0YSktPnRyYW5zYWN0aW9uUmVsYXhl
ZCgKICAgICAgICAgWyZdIChXb3JkVHlwZSYgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICAgICAg
aWYgKHZhbHVlICYgbWFzaykKQEAgLTIwMCw3ICsyMDAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXpl
X3QgbgogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAg
c2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwotICAgIFdvcmRUeXBlKiBkYXRhID0gZGVwZW5k
ZW5jeS5jb25zdW1lKGJpdHMuZGF0YSgpKSArIGluZGV4OworICAgIFdvcmRUeXBlKiBkYXRhID0g
ZGVwZW5kZW5jeS5jb25zdW1lKGJpdHMpICsgaW5kZXg7CiAgICAgcmV0dXJuICFiaXR3aXNlX2Nh
c3Q8QXRvbWljPFdvcmRUeXBlPio+KGRhdGEpLT50cmFuc2FjdGlvblJlbGF4ZWQoCiAgICAgICAg
IFsmXSAoV29yZFR5cGUmIHZhbHVlKSAtPiBib29sIHsKICAgICAgICAgICAgIGlmICghKHZhbHVl
ICYgbWFzaykpCkBAIC0yMTIsMTkgKzIxMiwxOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3Qgbgog
fQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxp
bmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKK2Nv
bnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBu
KQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7
CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKK3ZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewotICAgIG1lbXNldChi
aXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMpKTsKKyAgICBtZW1zZXQoYml0cywgMCwgc2l6ZW9m
KGJpdHMpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpuZXh0UG9z
c2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29u
c3QKIHsKICAgICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1cm4g
KChzdGFydCAvIHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CkBAIC0yMzIsNyArMjMyLDcgQEAg
aW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpuZXh0UG9zc2libHlV
bnNldChzaXplX3Qgc3RhcnQpIGNvbnMKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKK2NvbnN0ZXhw
ciBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNp
emVfdCBydW5MZW5ndGgpIGNvbnN0CiB7CiAgICAgaWYgKCFydW5MZW5ndGgpIAogICAgICAgICBy
dW5MZW5ndGggPSAxOyAKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbmxpbmUgaW50NjRfdCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBj
bwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBz
dGFydCkgY29uc3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwog
ICAgIGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0yNjUsNyArMjY1
LDcgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb3VudChz
aXplX3Qgc3RhcnQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBl
bmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6aXNFbXB0eSgpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d29yZHM7ICsraSkKICAgICAgICAgaWYgKGJpdHNbaV0pCkBAIC0yNzQsNyArMjc0LDcgQEAgaW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QK
IH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAor
Y29uc3RleHByIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
aWYgKH5iaXRzW2ldKQpAQCAtMjgzLDIxICsyODMsMjEgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQorY29uc3RleHBy
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2UoY29uc3QgQml0bWFwJiBv
dGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAg
IGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0g
Jj0gb3RoZXIuYml0c1tpXTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3Ro
ZXIuYml0c1tpXTsKQEAgLTMyNCw3ICszMjQsNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50RmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB9
CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnN1YnN1bWVzKGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0Citjb25zdGV4cHIgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpzdWJzdW1lcyhjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSBteUJpdHMgPSBi
aXRzW2ldOwpAQCAtMzM3LDcgKzMzNyw3IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OnN1YnN1bWVzKGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiAKIHRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JF
YWNoU2V0Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0Citjb25zdGV4cHIgdm9pZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNv
bnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAg
IFdvcmRUeXBlIHdvcmQgPSBiaXRzW2ldOwpAQCAtMzUzLDcgKzM1Myw3IEBAIGlubGluZSB2b2lk
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYg
ZnVuYykgY29uc3QKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5k
Qml0KHNpemVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdAorY29uc3RleHByIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kQml0KHNpemVfdCBzdGFydEluZGV4
LCBib29sIHZhbHVlKSBjb25zdAogewogICAgIFdvcmRUeXBlIHNraXBWYWx1ZSA9IC0oc3RhdGlj
X2Nhc3Q8V29yZFR5cGU+KHZhbHVlKSBeIDEpOwogICAgIHNpemVfdCB3b3JkSW5kZXggPSBzdGFy
dEluZGV4IC8gd29yZFNpemU7CkBAIC0zNzUsNyArMzc1LDcgQEAgaW5saW5lIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kQml0KHNpemVfdCBzdGFydEluZGV4LCBib29s
IHZhbHUKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2VBbmRDbGVh
cihCaXRtYXAmIG90aGVyKQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6bWVyZ2VBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07
CkBAIC0zODQsNyArMzg0LDcgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6bWVyZ2VBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQorY29uc3RleHByIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhl
cikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAg
Yml0c1tpXSA9IG90aGVyLmJpdHNbaV07CkBAIC0zOTMsNyArMzkzLDcgQEAgaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikK
IH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBC
aXRtYXAmIG90aGVyKSBjb25zdAorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBpZiAoYml0c1tpXSAh
PSBvdGhlci5iaXRzW2ldKQpAQCAtNDAzLDEzICs0MDMsMTMgQEAgaW5saW5lIGJvb2wgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9KGNv
bnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Citjb25zdGV4cHIgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0Citjb25zdGV4cHIgdW5zaWduZWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0
ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375752</attachid>
            <date>2019-08-07 14:09:28 -0700</date>
            <delta_ts>2019-08-07 14:09:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200508-20190807140928.patch</filename>
            <type>text/plain</type>
            <size>54567</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzM1YmY4ZDdjMjY4MGNmY2Y2Mjk2ZjUzMGY2NDhiZWMzOTJiZWEwLi5kMzhiY2M2ZWE3Y2Y1YmY1
NDMzMTY2NzViN2JmMzA2MTIzMjc0Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDgtMDcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2hvdWxkIGJlIGNvbnN0ZXhwcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgU2luY2Ugd2UgYXJlIG5vdyB1
c2luZyBDKysxNyB3ZSBjYW4gbm93IG1ha2UgUmVnaXN0ZXJTZXQgY29uc3RleHByLgorICAgICAg
ICBUaGlzIGlzIG5pY2UgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdXNlIFJlZ2lzdGVyU2V0cyBm
b3Igc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUNsb2JiZXJlZFJlZ3MpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCk6CisgICAgICAgICog
aml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp0YWdHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlUmVnczo6cGF5bG9hZEdQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdz
Ojp1c2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUmVnLmg6CisgICAgICAgIChKU0M6OlJlZzo6
UmVnKToKKyAgICAgICAgKEpTQzo6UmVnOjpmcm9tSW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6
OmZpcnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpsYXN0KToKKyAgICAgICAgKEpTQzo6UmVnOjpu
ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnOjppbmRleCBjb25zdCk6CisgICAgICAgIChK
U0M6OlJlZzo6bWF4SW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVn
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6aXNH
UFIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UmVnOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmZwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I8IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZWc6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWc6OmludmFs
aWQpOgorICAgICAgICAoSlNDOjpSZWc6OmRlbGV0ZWQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJ1bnRpbWVUYWdSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlND
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90
U2F2ZUZvckNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsRlBScyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRHUFJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnNldEFsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphZGQpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZpbHRlcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN1YnN1bWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmlzRGVsZXRl
ZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZvckVhY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c2V0QW55
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldE1hbnkpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpy
dW50aW1lVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNwZWNpYWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNG
b3JKU0NhbGwpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjphbGxHUFJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbEZQUnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEZQUnMgY29uc3QpOgorCiAyMDE5LTA4LTA2ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBwbGVXaW4gYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGMwOTdiOWY5ZjdmMmJkOTBkMTM2ZWE5NDEzN2JkMDA1YmIyMzMzMC4uNWU0MzNj
ZTUzOWMxN2U3NmQ1N2Q2MTg0NmEwMTA1Mzk3MDFkNjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wOC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWdpc3RlclNldCBzaG91bGQgYmUgY29uc3RleHByCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBCaXRNYXAgY2FuIGJlIGNvbnN0ZXhwciBzaW5jZSB3
ZSBhcmUgbm93IG9uIEMrKzE3LgorCisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkJpdG1hcDo6
aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6aXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpCaXRtYXA6Oml0ZXJhdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Qml0bWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OkJpdG1hcDo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpCaXRtYXA6OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNl
dCBjb25zdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3MgY29uc3Qp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1
bGwgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnN1YnN1bWVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kQml0IGNvbnN0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJnZUFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChX
VEY6Oj0gY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2ggY29uc3QpOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6IERlbGV0ZWQuCisKIDIwMTktMDgtMDYgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaWxlU3lz
dGVtOiBzaWxlbnQgYnVpbGQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDUwYTUwOTQ2Yjc5ZDY4NmEzNjgyNzViZGQy
ZTIzN2ExNGNkZmY3MzEuLmIzNzAyNjgxMjA3Mjc0MzA4OTVmMDgxYTc0NTIxYTJmMmNmYmNiY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAKQEAgLTMwLDE1ICszMCwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKK2NvbnN0ZXhwciBSZWdpc3RlclNldCBwcmVwYXJlQ2xvYmJlcmVk
UmVncygpCit7CisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOworICAgIGNsb2JiZXJlZC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJk
d2FyZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuZXhjbHVkZShSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyZWQuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGNsb2JiZXJlZC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworICAgIGNsb2JiZXJlZC5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgcmV0
dXJuIGNsb2JiZXJlZDsKK30KKwogQ0NhbGxTcGVjaWFsOjpDQ2FsbFNwZWNpYWwoKQogewotICAg
IG1fY2xvYmJlcmVkUmVncyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICBtX2Ns
b2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAg
bV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgbV9jbG9iYmVyZWRSZWdzLmNsZWFyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCBjbG9iYmVyZWQgPSBwcmVwYXJlQ2xv
YmJlcmVkUmVncygpOworICAgIG1fY2xvYmJlcmVkUmVncyA9IGNsb2JiZXJlZDsKIH0KIAogQ0Nh
bGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
aW5kZXggYTNmODc1NTQ1Nzk5NWEyZGE2MzhjNDhiZDQ4NjM4M2EwMjAzODY2NC4uMjAxZGZmYWM2
MGY4M2E4YzhhZjk1MGM2NjYyZWRiMmE3N2FkYTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0K
LSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQotICAg
IEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBjb25zdGV4
cHIgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgY29uc3RleHByIEdQ
UlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKLSAg
ICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9Cisg
ICAgY29uc3RleHByIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBncHI7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZy5oCmluZGV4IDlkMjQ2YWRlNWJjNzEwNTAwYjdmNzE3Mzk2ZDEy
MTdiM2VkMjBmNWIuLmViOTNiNTAxZjBlNzJkODRmNzA1YzM3MmMzNjc3ZGU2ZTBiODE3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtNTAsNDggKzUwLDQ4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBSZWcgewogcHVibGljOgotICAgIFJlZygpCisgICAgY29uc3RleHByIFJlZygp
CiAgICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpCiAgICAgewogICAgIH0KIAotICAgIFJlZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgY29uc3RleHByIFJlZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9pbmRleChkZWxldGVkKCkpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
KQorICAgIGNvbnN0ZXhwciBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZykK
KyAgICBjb25zdGV4cHIgUmVnKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnKQogICAg
ICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSkKICAgICB7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZnJvbUluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7
CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWcgZmlyc3Qo
KQorICAgIGNvbnN0ZXhwciBzdGF0aWMgUmVnIGZpcnN0KCkKICAgICB7CiAgICAgICAgIFJlZyBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZyBsYXN0KCkKICAgICB7CiAgICAgICAgIFJlZyByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fz
c2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVnIG5leHQoKSBjb25zdAorICAgIGNvbnN0ZXhwciBSZWcg
bmV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoISEqdGhpcyk7CiAgICAgICAgIGlm
ICgqdGhpcyA9PSBsYXN0KCkpCkBAIC0xMDEsNzIgKzEwMSw3MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCisg
ICAgY29uc3RleHByIHN0YXRpYyB1bnNpZ25lZCBtYXhJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdCgpLmluZGV4KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IGludmFsaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXgg
PT0gZGVsZXRlZCgpOyB9CisgICAgY29uc3RleHByIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQogICAgIAotICAgIGJv
b2wgaXNHUFIoKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIGlzR1BSKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0
ZXJzKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBib29sIGlzRlBSKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAobV9pbmRleCAtIE1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8IE1hY3JvQXNzZW1ibGVyOjpudW1i
ZXJPZkZQUmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGdwcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNHUFIoKSk7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgpOwogICAgIH0KICAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNvbnN0CisgICAgY29uc3RleHByIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0ZQUigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQ+KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KICAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW5kZXggPCBvdGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmRleDsKICAgICB9CkBA
IC0yMTYsOSArMjE2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBBbGxSZWdzSXRlcmFibGUgYWxs
KCkgeyByZXR1cm4gQWxsUmVnc0l0ZXJhYmxlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQogCi0gICAgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ4X3Qg
ZGVsZXRlZCgpIHsgcmV0dXJuIDB4ZmU7IH0KICAgICAKICAgICB1aW50OF90IG1faW5kZXg7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAxMzY1NjBj
ZGRmZDhmOTgyNzJiODliMWNlYWY0NWJjNmE1NDNhMTgxLi5mMjEzM2Y1MmZmNzg3YmYyYWQ3N2Jj
MWMyMmEwNDlkMDU2MGRlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcApAQCAtMzcsMTI5ICszNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKQotewotICAgIHJldHVybiBSZWdpc3Rl
clNldCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotfQotCi1SZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwotCi0jZGVmaW5lIFNFVF9JRl9SRVNFUlZFRChpZCwgbmFtZSwgaXNS
ZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgXAotICAgIGlmIChpc1Jlc2VydmVkKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmVzdWx0LnNl
dChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVHSVNURVIoU0VUX0lGX1JF
U0VSVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9JRl9SRVNFUlZFRCkKLSN1bmRl
ZiBTRVRfSUZfUkVTRVJWRUQKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5k
aWYKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKQotewot
ICAgIHJldHVybiBSZWdpc3RlclNldCgKLSAgICAgICAgc3RhY2tSZWdpc3RlcnMoKSwgcmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpLCBydW50aW1lVGFnUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdp
c3RlclNldCBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKQotewotICAg
IFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0gYWxsUmVnaXN0ZXJzKCk7Ci0gICAgdm9s
YXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0g
ICAgdm9sYXRpbGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgcmV0dXJuIHZvbGF0aWxlUmVnaXN0ZXJz
OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3Vs
ZCBzdWJ0cmFjdCBvdXQgdGhvc2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKLSAgICAvLyBhY3R1YWxs
eSBzYXZlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Njg2Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKLXsKLSNpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBSZWdpc3Rl
clNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjphZGRyVGVtcFJlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpjbXBUZW1wUmVnaXN0ZXIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJldHVybiB7IH07Ci0jZW5kaWYKLX0KLQot
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKLQotI2RlZmluZSBTRVRfSUZfQ0FMTEVFU0FWRUQoaWQsIG5hbWUs
IGlzUmVzZXJ2ZWQsIGlzQ2FsbGVlU2F2ZWQpICAgICAgICBcCi0gICAgaWYgKGlzQ2FsbGVlU2F2
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7Ci0gICAgRk9SX0VBQ0hfR1BfUkVH
SVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQotICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNFVF9J
Rl9DQUxMRUVTQVZFRCkKLSN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKLSAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIENQVShYODZfNjQp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0jZW5kaWYKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0gICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpm
cFJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMik7Ci0gICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
NCk7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCi0gICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKQogewog
ICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVzdWx0OwpAQCAtMTcwLDE3NiArNDcs
NiBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3Rl
clNldCByZXN1bHQ7Ci0jaWYgQ1BVKFg4NikKLSNlbGlmIENQVShYODZfNjQpCi0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQotICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7Ci0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQotewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKLSNpZiBDUFUo
WDg2KQotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0jZWxzZQot
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNCk7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Ci0gICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwotI2VuZGlmCi0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLSNlbGlmIENQVShBUk02NCkKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M4KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotI2lmIEVOQUJMRShGVExfSklU
KQotI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MwKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0
ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAvLyBCMyBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBz
cGVjaWZpZWQgaW4gdGhlIEFCSS4KLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7Ci0g
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7Ci0gICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVn
Q1MwKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MyKTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsK
LSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M0KTsKLSAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M1KTsKLSAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKLSAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M3KTsKLSNlbHNlCi0gICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKQotewotICAgIFJlZ2lzdGVyU2V0
IHJlc3VsdDsKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IGkrKykK
LSAgICAgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotfQot
Ci1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKQot
ewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVk
SGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci19Ci0KLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3VsdC5zZXQocmVn
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxs
RlBScygpCi17Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpCi0gICAgICAgIHJlc3Vs
dC5zZXQocmVnKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkKLXsKLSAgICBSZWdpc3RlclNldCByZXN1bHQ7Ci0gICAgcmVz
dWx0Lm1lcmdlKGFsbEdQUnMoKSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGFsbEZQUnMoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMo
KSBjb25zdAotewotICAgIFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRl
cihhbGxHUFJzKCkpOwotICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19
Ci0KLXNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKLXsKLSAgICBS
ZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7Ci0gICAgdGVtcC5maWx0ZXIoYWxsRlBScygpKTsKLSAg
ICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotfQotCiB2b2lkIFJlZ2lzdGVy
U2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IDhjMDE4NDJk
Njk0OWVhNDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYuLjZmMzllYTlhZTMyMzA2ODQwMDgxNzcx
NGYyODQ5MTJhYTg5MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiBCaXRt
YXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScyArIDE+
IFJlZ2lzdGVyQml0bWFwOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAKIGNsYXNzIFJl
Z2lzdGVyU2V0IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlckJpdG1hcCA9IEJpdG1hcDxN
YWNyb0Fzc2VtYmxlcjo6bnVtR1BScyArIE1hY3JvQXNzZW1ibGVyOjpudW1GUFJzICsgMT47CiAg
ICAgY29uc3RleHByIFJlZ2lzdGVyU2V0KCkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBSZWdzPgpAQCAtNDgsMTIyICs0OCwxMjIgQEAgcHVibGljOgogICAgICAgICBzZXRNYW55KHJl
Z3MuLi4pOwogICAgIH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdo
dCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJl
Z2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3Rl
clNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVz
ZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAgICBz
dGF0aWMgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygp
OwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgotICAgIHN0YXRp
YyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUg
REZHIEpJVC4KKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVk
IGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCisgICAgY29uc3RleHByIHN0YXRpYyBS
ZWdpc3RlclNldCB3ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJz
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBXZWJBc3NlbWJseSBKSVQuCiAjZW5kaWYKLSAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBj
YWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVy
U2V0IGFsbFJlZ2lzdGVycygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3Rl
clNldCBhcmd1bWVudEdQUlMoKTsKLQotICAgIHN0YXRpYyBSZWdpc3RlclNldCByZWdpc3RlcnNU
b05vdFNhdmVGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKTsKLSAgICAKLSAgICB2b2lkIHNldChSZWcgcmVnLCBib29sIHZhbHVl
ID0gdHJ1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3Bl
Y2lhbCByZWdpc3RlcnMuCisgICAgY29uc3RleHByIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQ
UnMoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBj
b25zdGV4cHIgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOworICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJTKCk7CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyAg
ICAKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBtX2JpdHMuc2V0KHJlZy5pbmRl
eCgpLCB2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3Ms
IGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIGNvbnN0ZXhwciB2b2lkIHNldChKU1ZhbHVlUmVncyBy
ZWdzLCBib29sIHZhbHVlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigp
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUp
OwogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZh
bHVlID8gbWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKyAgICBjb25zdGV4cHIgdm9p
ZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1
ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CiAKLSAgICB2b2lkIGNsZWFyKFJl
ZyByZWcpCisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHNldChyZWcsIGZhbHNlKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBnZXQoUmVnIHJl
ZykgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiBt
X2JpdHMuZ2V0KHJlZy5pbmRleCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmFibGU+Ci0gICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQor
ICAgIGNvbnN0ZXhwciB2b2lkIHNldEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCiAgICAg
ewogICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJsZSkKICAgICAgICAgICAgIHNldChyZWcp
OwogICAgIH0KICAgICAKICAgICAvLyBBbHNvIGFsbG93IGFkZC9yZW1vdmUvY29udGFpbnMgdGVy
bWlub2xvZ3ksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHNldC9jbGVhci9nZXQuCi0g
ICAgYm9vbCBhZGQoUmVnIHJlZykKKyAgICBjb25zdGV4cHIgYm9vbCBhZGQoUmVnIHJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CiAgICAgICAgIHJldHVybiAhbV9iaXRzLnRlc3RB
bmRTZXQocmVnLmluZGV4KCkpOwogICAgIH0KLSAgICBib29sIHJlbW92ZShSZWcgcmVnKQorICAg
IGNvbnN0ZXhwciBib29sIHJlbW92ZShSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEh
cmVnKTsKICAgICAgICAgcmV0dXJuIG1fYml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOwog
ICAgIH0KLSAgICBib29sIGNvbnRhaW5zKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcp
OyB9CisgICAgY29uc3RleHByIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4g
Z2V0KHJlZyk7IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMubWVyZ2Uob3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAg
ICB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRl
KG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBtZXJnZShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4
cHIgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5maWx0ZXIo
b3RoZXIubV9iaXRzKTsgfQorICAgIGNvbnN0ZXhwciB2b2lkIGV4Y2x1ZGUoY29uc3QgUmVnaXN0
ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0KICAgICAKLSAg
ICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9CiAgICAgCi0gICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKLSAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQor
ICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IG51bWJlck9mU2V0UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmNvdW50KCk7IH0K
ICAgICAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNFbXB0eSgp
OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5p
c0VtcHR5KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVl
IH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICAKLSAg
ICBSZWdpc3RlclNldChFbXB0eVZhbHVlVGFnKQorICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldChF
bXB0eVZhbHVlVGFnKQogICAgIHsKICAgICAgICAgbV9iaXRzLnNldChoYXNoU3BlY2lhbEJpdElu
ZGV4KTsKICAgICB9CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQoRGVsZXRlZFZhbHVlVGFnKQorICAg
IGNvbnN0ZXhwciBSZWdpc3RlclNldChEZWxldGVkVmFsdWVUYWcpCiAgICAgewogICAgICAgICBt
X2JpdHMuc2V0KGhhc2hTcGVjaWFsQml0SW5kZXgpOwogICAgICAgICBtX2JpdHMuc2V0KGRlbGV0
ZWRCaXRJbmRleCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVs
ZXRlZEJpdEluZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgY29uc3RleHByIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fYml0cy5nZXQoaGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgbV9iaXRzLmdl
dChkZWxldGVkQml0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzICE9IG90aGVyLm1fYml0czsgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2Jp
dHM7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmhh
c2goKTsgfQorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmhhc2goKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgY29uc3RleHByIHZvaWQgZm9y
RWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogICAgIHsKICAgICAgICAgbV9iaXRzLmZvckVh
Y2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKG1fYml0cy5lbmQoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBbnkoUmVn
IHJlZykgeyBzZXQocmVnKTsgfQotICAgIHZvaWQgc2V0QW55KEpTVmFsdWVSZWdzIHJlZ3MpIHsg
c2V0KHJlZ3MpOyB9Ci0gICAgdm9pZCBzZXRBbnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBt
ZXJnZShzZXQpOyB9Ci0gICAgdm9pZCBzZXRNYW55KCkgeyB9CisgICAgY29uc3RleHByIHZvaWQg
c2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRBbnko
SlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7IH0KKyAgICBjb25zdGV4cHIgdm9pZCBzZXRB
bnkoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkgeyBtZXJnZShzZXQpOyB9CisgICAgY29uc3RleHBy
IHZvaWQgc2V0TWFueSgpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIFJlZ3M+Ci0gICAgdm9pZCBzZXRNYW55KFJlZ1R5cGUgcmVnLCBSZWdzLi4uIHJlZ3Mp
CisgICAgY29uc3RleHByIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4uLiByZWdzKQog
ICAgIHsKICAgICAgICAgc2V0QW55KHJlZyk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CkBA
IC0yNDgsNCArMjQ4LDMwMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVn
aXN0ZXJTZXQ+IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpSZQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAorbmFtZXNwYWNlIEpTQyB7Citjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVy
U2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisKKyNkZWZpbmUgU0VUX0lGX1JFU0VSVkVEKGlkLCBuYW1lLCBpc1Jl
c2VydmVkLCBpc0NhbGxlZVNhdmVkKSAgICBcCisgICAgaWYgKGlzUmVzZXJ2ZWQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQuc2V0
KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9SRUdJU1RFUihTRVRfSUZfUkVT
RVJWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VUX0lGX1JFU0VSVkVEKQorI3VuZGVm
IFNFVF9JRl9SRVNFUlZFRAorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3RleHByIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJzKCkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgIHJldHVybiB7
IH07CisjZW5kaWYKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoCisgICAgICAgIHN0YWNr
UmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVudGltZVRhZ1JlZ2lz
dGVycygpKTsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2b2xhdGls
ZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCit7CisgICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3Rl
cnMgPSBhbGxSZWdpc3RlcnMoKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIHZvbGF0aWxl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7Cit9CisKK2NvbnN0ZXhwciBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLiBXZSBjb3VsZCBzdWJ0cmFjdCBvdXQgdGhv
c2UgY2FsbGVlLXNhdmVzIHRoYXQgd2UKKyAgICAvLyBhY3R1YWxseSBzYXZlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Njg2CisgICAgcmV0dXJu
IFJlZ2lzdGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFj
cm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmltbVRlbXBS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6YWRkclRlbXBSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6Y21wVGVtcFJlZ2lzdGVyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OworCisjZGVmaW5lIFNFVF9JRl9DQUxMRUVTQVZFRChpZCwgbmFt
ZSwgaXNSZXNlcnZlZCwgaXNDYWxsZWVTYXZlZCkgICAgICAgIFwKKyAgICBpZiAoaXNDYWxsZWVT
YXZlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXN1bHQuc2V0KFJlZ2lzdGVyTmFtZXM6OmlkKTsKKyAgICBGT1JfRUFDSF9HUF9S
RUdJU1RFUihTRVRfSUZfQ0FMTEVFU0FWRUQpCisgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoU0VU
X0lGX0NBTExFRVNBVkVEKQorI3VuZGVmIFNFVF9JRl9DQUxMRUVTQVZFRAorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworY29uc3RleHByIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQp
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBS
ZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcp
OworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQorICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MwKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhw
ciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BV
KFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
MSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
KyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKKyNlbGlmIENQVShNSVBTKQorICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9X
UykKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUklu
Zm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk02NCkKKyAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CisjZWxpZiBDUFUoTUlQUykKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gQjMgbWln
aHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBB
QkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
Mik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChG
UFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAgcmVzdWx0LnNldChGUFJJbmZv
OjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsgaSsrKQorICAgICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKSk7CisjZW5kaWYKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6
OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwor
fQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCkKK3sKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworfQorCitjb25zdGV4cHIgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkK
KyAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
ZXhwciBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsRlBScygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRD4ocmVnICsgMSkpCisgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitjb25zdGV4cHIgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5tZXJnZShhbGxH
UFJzKCkpOworICAgIHJlc3VsdC5tZXJnZShhbGxGUFJzKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScygpIGNv
bnN0Cit7CisgICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOworICAgIHRlbXAuZmlsdGVyKGFs
bEdQUnMoKSk7CisgICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKK30KKwor
Y29uc3RleHByIHNpemVfdCBSZWdpc3RlclNldDo6bnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QKK3sK
KyAgICBSZWdpc3RlclNldCB0ZW1wID0gKnRoaXM7CisgICAgdGVtcC5maWx0ZXIoYWxsRlBScygp
KTsKKyAgICByZXR1cm4gdGVtcC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworfQorCit9CisKICNl
bmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggZTQyMzM0NTZjNzIwYzJmMmYzMzQ4
MGI1ODAxYjI1YWYyZWIwZGRjNi4uOTM2OTczNWQzNDcwYmNjYWU2OTIwYzU5YWExZTQ2YWExZDk3
NTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQml0bWFwLmgKQEAgLTM0LDY5ICszNCw2OCBAQCBjbGFzcyBCaXRtYXAgewogICAgIAog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAi
V29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKIHB1YmxpYzoKLSAg
ICBjb25zdGV4cHIgQml0bWFwKCk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXpl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXRtYXBTaXplOwogICAgIH0KIAotICAgIGJvb2wg
Z2V0KHNpemVfdCwgRGVwZW5kZW5jeSA9IERlcGVuZGVuY3koKSkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXQoc2l6ZV90KTsKLSAgICB2b2lkIHNldChzaXplX3QsIGJvb2wpOwotICAgIGJvb2wgdGVzdEFu
ZFNldChzaXplX3QpOwotICAgIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CisgICAgY29uc3Rl
eHByIGJvb2wgZ2V0KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90LCBEZXBlbmRl
bmN5KSBjb25zdDsKKyAgICBjb25zdGV4cHIgdm9pZCBzZXQoc2l6ZV90KTsKKyAgICBjb25zdGV4
cHIgdm9pZCBzZXQoc2l6ZV90LCBib29sKTsKKyAgICBjb25zdGV4cHIgYm9vbCB0ZXN0QW5kU2V0
KHNpemVfdCk7CisgICAgY29uc3RleHByIGJvb2wgdGVzdEFuZENsZWFyKHNpemVfdCk7CiAgICAg
Ym9vbCBjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QsIERlcGVuZGVuY3kgPSBEZXBlbmRlbmN5
KCkpOwogICAgIGJvb2wgY29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QsIERlcGVuZGVuY3kg
PSBEZXBlbmRlbmN5KCkpOwotICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNv
bnN0OwotICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG5leHRQ
b3NzaWJseVVuc2V0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3RleHByIHZvaWQgY2xlYXIoc2l6
ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhz
aXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0g
MCkgY29uc3Q7Ci0gICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKLSAgICBzaXplX3QgaXNGdWxs
KCkgY29uc3Q7CisgICAgY29uc3RleHByIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1
bkxlbmd0aCkgY29uc3Q7CisgICAgY29uc3RleHByIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQg
PSAwKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKKyAgICBj
b25zdGV4cHIgc2l6ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgbWVyZ2UoY29u
c3QgQml0bWFwJik7Ci0gICAgdm9pZCBmaWx0ZXIoY29uc3QgQml0bWFwJik7Ci0gICAgdm9pZCBl
eGNsdWRlKGNvbnN0IEJpdG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlKGNvbnN0IEJp
dG1hcCYpOworICAgIGNvbnN0ZXhwciB2b2lkIGZpbHRlcihjb25zdCBCaXRtYXAmKTsKKyAgICBj
b25zdGV4cHIgdm9pZCBleGNsdWRlKGNvbnN0IEJpdG1hcCYpOwogCiAgICAgdm9pZCBjb25jdXJy
ZW50RmlsdGVyKGNvbnN0IEJpdG1hcCYpOwogICAgIAotICAgIGJvb2wgc3Vic3VtZXMoY29uc3Qg
Qml0bWFwJikgY29uc3Q7CisgICAgY29uc3RleHByIGJvb2wgc3Vic3VtZXMoY29uc3QgQml0bWFw
JikgY29uc3Q7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAotICAgIHNpemVfdCBmaW5kQml0KHNp
emVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90
IGZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0OwogICAgIAogICAg
IGNsYXNzIGl0ZXJhdG9yIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAg
ICAgY29uc3RleHByIGl0ZXJhdG9yKCkKICAgICAgICAgICAgIDogbV9iaXRtYXAobnVsbHB0cikK
ICAgICAgICAgICAgICwgbV9pbmRleCgwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IEJpdG1hcCYgYml0bWFwLCBzaXplX3QgaW5kZXgpCisg
ICAgICAgIGNvbnN0ZXhwciBpdGVyYXRvcihjb25zdCBCaXRtYXAmIGJpdG1hcCwgc2l6ZV90IGlu
ZGV4KQogICAgICAgICAgICAgOiBtX2JpdG1hcCgmYml0bWFwKQogICAgICAgICAgICAgLCBtX2lu
ZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNpemVf
dCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIGNvbnN0ZXhw
ciBzaXplX3Qgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICAK
LSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICBjb25zdGV4cHIgaXRlcmF0
b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRt
YXAtPmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQpA
QCAtMTA3LDE2ICsxMDYsMTYgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgLy8gVXNlIHRo
aXMgdG8gaXRlcmF0ZSBvdmVyIHNldCBiaXRzLgotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9Ci0gICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGJpdG1hcFNpemUpOyB9Cisg
ICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRo
aXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBiaXRtYXBTaXplKTsgfQogICAgIAotICAgIHZv
aWQgbWVyZ2VBbmRDbGVhcihCaXRtYXAmKTsKLSAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYp
OworICAgIGNvbnN0ZXhwciB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgY29uc3Rl
eHByIHZvaWQgc2V0QW5kQ2xlYXIoQml0bWFwJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAm
KSBjb25zdDsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNv
bnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7
CiAgICAgCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdv
cmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CkBAIC0xMjksMjkgKzEyOCwzMSBAQCBwcml2
YXRlOgogICAgIC8vIGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4ZmZmZjgwMDAK
ICAgICBzdGF0aWMgY29uc3QgV29yZFR5cGUgb25lID0gMTsKIAotICAgIHN0ZDo6YXJyYXk8V29y
ZFR5cGUsIHdvcmRzPiBiaXRzOworICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RkOjphcnJh
eSBoZXJlIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGlzIG5vdCBjb25zdGV4cHIgKGRlc3BpdGUgdGhl
IHN0YW5kYXJkKSBvbiBzb21lIGxkYmMrKzE3IGltcGxlbWVudGF0aW9ucy4KKyAgICBXb3JkVHlw
ZSBiaXRzW3dvcmRzXSB7IH07CiB9OwogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Ci1jb25zdGV4cHIgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Qml0bWFwKCkKK2NvbnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omdl
dChzaXplX3QgbikgY29uc3QKIHsKLSAgICBjbGVhckFsbCgpOworICAgIHJldHVybiAhIShiaXRz
W24gLyB3b3JkU2l6ZV0gJiAob25lIDw8IChuICUgd29yZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbiwgRGVwZW5kZW5jeSBkZXBlbmRl
bmN5KSBjb25zdAorYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90
IG4sIERlcGVuZGVuY3kgZGVwZW5kZW5jeSkgY29uc3QKIHsKICAgICByZXR1cm4gISEoZGVwZW5k
ZW5jeS5jb25zdW1lKHRoaXMpLT5iaXRzW24gLyB3b3JkU2l6ZV0gJiAob25lIDw8IChuICUgd29y
ZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXpl
X3QgbikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbikKIHsKLSAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRT
aXplKSk7CisgICAgV29yZFR5cGUmIHdvcmQgPSBiaXRzW24gLyB3b3JkU2l6ZV07CisgICAgd29y
ZCA9IHdvcmQgfCAob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQorY29uc3RleHByIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVl
KQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTYwLDcgKzE2MSw3IEBA
IGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3Qgbiwg
Ym9vbCB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFu
ZFNldChzaXplX3QgbikKK2NvbnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAo
biAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xNzAs
NyArMTcxLDcgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVz
dEFuZFNldChzaXplX3QgbikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
dGVzdEFuZENsZWFyKHNpemVfdCBuKQorY29uc3RleHByIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sg
PSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXpl
OwpAQCAtMTg0LDcgKzE4NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbiwKIHsKICAgICBXb3Jk
VHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9IG4g
LyB3b3JkU2l6ZTsKLSAgICBXb3JkVHlwZSogZGF0YSA9IGRlcGVuZGVuY3kuY29uc3VtZShiaXRz
LmRhdGEoKSkgKyBpbmRleDsKKyAgICBXb3JkVHlwZSogZGF0YSA9IGRlcGVuZGVuY3kuY29uc3Vt
ZShiaXRzKSArIGluZGV4OwogICAgIHJldHVybiAhYml0d2lzZV9jYXN0PEF0b21pYzxXb3JkVHlw
ZT4qPihkYXRhKS0+dHJhbnNhY3Rpb25SZWxheGVkKAogICAgICAgICBbJl0gKFdvcmRUeXBlJiB2
YWx1ZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICBpZiAodmFsdWUgJiBtYXNrKQpAQCAtMjAwLDcg
KzIwMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuCiB7CiAgICAgV29yZFR5cGUgbWFzayA9
IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7
Ci0gICAgV29yZFR5cGUqIGRhdGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cy5kYXRhKCkpICsg
aW5kZXg7CisgICAgV29yZFR5cGUqIGRhdGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cykgKyBp
bmRleDsKICAgICByZXR1cm4gIWJpdHdpc2VfY2FzdDxBdG9taWM8V29yZFR5cGU+Kj4oZGF0YSkt
PnRyYW5zYWN0aW9uUmVsYXhlZCgKICAgICAgICAgWyZdIChXb3JkVHlwZSYgdmFsdWUpIC0+IGJv
b2wgewogICAgICAgICAgICAgaWYgKCEodmFsdWUgJiBtYXNrKSkKQEAgLTIxMiwxOSArMjEzLDE5
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25j
dXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQorY29uc3RleHByIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCiB7CiAgICAgYml0c1tuIC8gd29yZFNpemVd
ICY9IH4ob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQordm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpjbGVhckFsbCgpCiB7Ci0gICAgbWVtc2V0KGJpdHMuZGF0YSgpLCAwLCBzaXplb2YoYml0cykp
OworICAgIG1lbXNldChiaXRzLCAwLCBzaXplb2YoYml0cykpOwogfQogCiB0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29u
c3QKK2NvbnN0ZXhwciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBv
c3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQg
LyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3
b3JkU2l6ZTsKQEAgLTIzMiw3ICsyMzMsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29ucwogfQog
CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
aW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXpl
X3QgcnVuTGVuZ3RoKSBjb25zdAorY29uc3RleHByIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKIHsKICAg
ICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7IApAQCAtMjUyLDcgKzI1
Myw3IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRS
dW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAorY29uc3RleHByIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgZm9yICggOyAoc3RhcnQgJSB3b3JkU2l6
ZSk7ICsrc3RhcnQpIHsKQEAgLTI2NSw3ICsyNjYsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIH0KIAogdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK2NvbnN0ZXhw
ciBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAoYml0
c1tpXSkKQEAgLTI3NCw3ICsyNzUsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAofmJpdHNbaV0pCkBAIC0yODMsMjEgKzI4
NCwyMSBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRnVs
bCgpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlKGNv
bnN0IEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29y
ZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwog
fQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxp
bmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFw
JiBvdGhlcikKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZp
bHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOwogfQogCiB0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpleGNsdWRlKGNvbnN0IEJpdG1hcCYgb3RoZXIp
Citjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpleGNsdWRlKGNv
bnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKQogICAgICAgICBiaXRzW2ldICY9IH5vdGhlci5iaXRzW2ldOwpAQCAtMzI0LDcgKzMyNSw3
IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRG
aWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2NvbnN0ZXhwciBi
b29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnN1YnN1bWVzKGNvbnN0IEJpdG1hcCYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7
CiAgICAgICAgIFdvcmRUeXBlIG15Qml0cyA9IGJpdHNbaV07CkBAIC0zMzcsNyArMzM4LDcgQEAg
aW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3Qg
Qml0bWFwJiBvdGhlcikgY29uc3QKIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykg
Y29uc3QKK2NvbnN0ZXhwciB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBA
IC0zNTMsNyArMzU0LDcgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wg
dmFsdWUpIGNvbnN0Citjb25zdGV4cHIgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OmZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0CiB7CiAgICAg
V29yZFR5cGUgc2tpcFZhbHVlID0gLShzdGF0aWNfY2FzdDxXb3JkVHlwZT4odmFsdWUpIF4gMSk7
CiAgICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0SW5kZXggLyB3b3JkU2l6ZTsKQEAgLTM3NSw3
ICszNzYsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZp
bmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdQogfQogCiB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYg
b3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAg
ICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKQEAgLTM4NCw3ICszODUsNyBAQCBpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYg
b3RoZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFy
KEJpdG1hcCYgb3RoZXIpCitjb25zdGV4cHIgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKQEAg
LTM5Myw3ICszOTQsNyBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
V29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Citjb25zdGV4
cHIgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJp
dG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkczsg
KytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC00MDMsMTMg
KzQwNCwxMyBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVy
YXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK2Nv
bnN0ZXhwciBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29u
c3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QK
K2NvbnN0ZXhwciB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>