<?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>215833</bug_id>
          
          <creation_ts>2020-08-25 19:01:40 -0700</creation_ts>
          <short_desc>[JSC] FTL should use m_origin instead of m_node-&gt;origin since m_node can be nullptr</short_desc>
          <delta_ts>2020-08-25 22:29:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682876</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 19:01:40 -0700</bug_when>
    <thetext>[JSC] FTL should use m_origin instead of m_node-&gt;origin since m_node can be nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682877</commentid>
    <comment_count>1</comment_count>
      <attachid>407259</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 19:02:55 -0700</bug_when>
    <thetext>Created attachment 407259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682878</commentid>
    <comment_count>2</comment_count>
      <attachid>407260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 19:04:16 -0700</bug_when>
    <thetext>Created attachment 407260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682888</commentid>
    <comment_count>3</comment_count>
      <attachid>407260</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-25 19:39:35 -0700</bug_when>
    <thetext>Comment on attachment 407260
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682913</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 22:17:58 -0700</bug_when>
    <thetext>Committed r266159: &lt;https://trac.webkit.org/changeset/266159&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682916</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 22:29:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/67723445&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407259</attachid>
            <date>2020-08-25 19:02:55 -0700</date>
            <delta_ts>2020-08-25 19:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215833-20200825190254.patch</filename>
            <type>text/plain</type>
            <size>83332</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
M2FiZTlhMzhjZGJkZDM4MjFkMWM4OTM4ZjE3NTUzMWY3Y2Q5OWJhLi40YTEyMDFlZjY0MTk4NDAw
MWQwM2I5NWNkMzc2Njc2M2Y0NzE4OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjIgQEAKKzIwMjAtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGVEwgc2hvdWxkIHVzZSBtX29yaWdpbiBpbnN0ZWFkIG9mIG1f
bm9kZS0+b3JpZ2luIHNpbmNlIG1fbm9kZSBjYW4gYmUgbnVsbHB0cgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgd2UgYXJlIHVzaW5nIG1fbm9k
ZS0+b3JpZ2luLCBtX25vZGUgY2FuIGJlIG51bGxwdHIgKGF0IHRoZSBlbnRyeSBvZiB0aGUgRlRM
IGZ1bmN0aW9uKS4KKyAgICAgICAgbV9vcmlnaW4gaXMgYWx3YXlzIHBvaW50aW5nIGFwcHJvcHJp
YXRlIG9yaWdpbi4gV2Ugc2hvdWxkIHVzZSBpdCBpbnN0ZWFkLgorCisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyQ2F0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhDbHozMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aFVuYXJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUmFuZG9tKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhGbG9vcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENlaWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhUcnVu
Yyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aFNx
cnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhG
Um91bmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5j
T3JEZWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlVmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUF0b21p
Y3NSZWFkTW9kaWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQXRvbWljc0lzTG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlQdXNoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5U2xpY2UpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlJbmRleE9mKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5UG9wKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1c2hXaXRoU2Nv
cGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRl
QWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlUmVzdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU9iamVjdENyZWF0ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVRo
aXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRl
UHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1iZXIpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvUHJvcGVydHlLZXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0Zyb21DaGFyQ29k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aVB1
dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUdldEdsb2JhbFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYXJhcmdzTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUZvcndhcmRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUaHJvdyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bWFwSGFzaFN0cmluZyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldE1hcEJ1Y2tldCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTZXRBZGQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWFwU2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzQ2FsbGFibGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhhc093blByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVBhcnNlSW50
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNl
T2ZDdXN0b20pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
SGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUhhc0dlbmVyaWNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RGlyZWN0UG5hbWUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJvcGVydHlFbnVt
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRv
SW5kZXhTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3UmVnZXhwKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWls
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0Q3VycmVudENh
bGxlZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEFyZ3VtZW50
c1N0YXJ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGFyZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdTbGlj
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb0xvd2Vy
Q2FzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVSZXNvbHZlU2NvcGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlR2V0RHluYW1pY1Zhcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQdXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmdlbmVyaWNKU1ZhbHVlQ29tcGFyZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnN0cmluZ3NFcXVhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlSlNBcnJheSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3dpdGNoU3RyaW5nU2xvdyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bGF6eVNsb3dQYXRoKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRJc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbENoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YXBwZW5kT1NSRXhpdCk6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIw
LTA4LTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBicmVha3BvaW50IGNvbmRpdGlvbiBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSB0aGUgaWdub3JlIGNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggZGE5ZGM1M2ExNmYzMThmMDIzMzQxMzk5Nzk2MWVlYWRmNmQxMzU4
ZS4uNTJhODQ5NzA1YjlhZjcyZGQxZDc5ZGUzNmVlOTZhZTdjZDM4NDZlNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjE0Nyw3ICsyMTQ3
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAg
ICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAg
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25Ub09iamVj
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKGVy
cm9yTWVzc2FnZSkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9y
LCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlKSk7CkBAIC0yMTU5
LDcgKzIxNTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGls
ZVRvVGhpcygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIApAQCAtMjE5Myw3ICsyMTkzLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAK
ICNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgYW5vdGhlciBC
aWdJbnQzMiBjb2RlIGdlbmVyYXRpb246IGJpbmFyeSB1c2Uga2luZHMgYXJlIEJpZ0ludFVzZTMy
LCBidXQgcmVzdWx0IGlzIFNwZWNBbnlJbnQgYW5kIGFjY2VwdGluZyBvdmVyZmxvdy4KQEAgLTIy
MjUsOCArMjIyNSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9m
dGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX29yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CiAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKQEAgLTIyMzUsNyArMjIzNSw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVN1YigpCiAgICAgewot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwogCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGFub3Ro
ZXIgQmlnSW50MzIgY29kZSBnZW5lcmF0aW9uOiBiaW5hcnkgdXNlIGtpbmRzIGFyZSBCaWdJbnRV
c2UzMiwgYnV0IHJlc3VsdCBpcyBTcGVjQW55SW50IGFuZCBhY2NlcHRpbmcgb3ZlcmZsb3cuCkBA
IC0yMjY3LDggKzIyNjcsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdG
dW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBAIC0yMjc3LDcgKzIyNzcsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVNdWwoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKIAogI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgLy8gRklYTUU6IEludHJvZHVjZSBh
bm90aGVyIEJpZ0ludDMyIGNvZGUgZ2VuZXJhdGlvbjogYmluYXJ5IHVzZSBraW5kcyBhcmUgQmln
SW50VXNlMzIsIGJ1dCByZXN1bHQgaXMgU3BlY0FueUludCBhbmQgYWNjZXB0aW5nIG92ZXJmbG93
LgpAQCAtMjMwOSw4ICsyMzA5LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOworICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpAQCAtMjQxNyw3ICsyNDE3
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOwogCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjUxNSw3
ICsyNTE1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVT
dHJDYXQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDMoKSkgewpAQCAtMjU4Niw4ICsyNTg2LDggQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCgpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1f
ZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9vcmlnaW4uc2VtYW50
aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBAIC0yNjAzLDcgKzI2MDMsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhDbHozMigpCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJV
c2UgfHwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gS25vd25JbnQzMlVzZSkgewogICAg
ICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIHNldEludDMyKG1fb3V0LmN0bHozMihvcGVyYW5kKSk7CkBAIC0yNjkwLDcgKzI2
OTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVEaXYo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50
MzIgaGVyZQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjExMDQxCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50
VXNlKSkgewpAQCAtMjc3MSw3ICsyNzcxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAvLyBGSVhNRTog
YWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTI5MjMsNyArMjkyMyw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJpdGhBYnMoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAg
ICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTI5NTUsNyArMjk1NSw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0aFVuYXJ5KCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAg
ICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVVbmFyeShtX25vZGUtPmFyaXRoVW5hcnlUeXBl
KCksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjk2Nyw3ICsyOTY3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZVZhbHVlUG93KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBhZGQgYSBm
YXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0zMTI2LDcgKzMxMjYsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhSYW5kb20oKQogICAgIHsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
IAogICAgICAgICAvLyBJbmxpbmVkIFdlYWtSYW5kb206OmFkdmFuY2UoKS4KICAgICAgICAgLy8g
dWludDY0X3QgeCA9IG1fbG93OwpAQCAtMzE3Myw3ICszMTczLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUFyaXRoUm91bmQoKQogICAgIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgewogICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAocHJvZHVjZXNJ
bnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRp
dmVaZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKQEAgLTMyMTQsNyArMzIxNCw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0aEZsb29yKCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3Vi
bGVGbG9vcih2YWx1ZSk7CkBAIC0zMjMxLDcgKzMyMzEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhDZWlsKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3VibGVDZWlsKHZhbHVlKTsKQEAgLTMyNDgs
NyArMzI0OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0
aFRydW5jKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5k
b3VibGVUcnVuYyh2YWx1ZSk7CkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAg
ICAgIHNldERvdWJsZShtX291dC5kb3VibGVTcXJ0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI3Nyw3ICszMjc3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUFyaXRoRlJvdW5kKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsK
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5mcm91bmQobG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjkwLDcgKzMyOTAsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUluY09yRGVjKCkKICAgICB7CiAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0
LCBtX25vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0aW9uSW5jIDogb3BlcmF0aW9uRGVjLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwpAQCAtMzI5OSw4ICszMjk5LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZU5lZ2F0ZSgpCiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0
ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKICAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25Bcml0aE5lZ2F0ZTsKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQogICAgIHsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lm
IFVTRShCSUdJTlQzMikKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKSB7CkBAIC0zMzk4LDcgKzMzOTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lmIFVTRShC
SUdJTlQzMikKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgewpAQCAtMzQzMCw3ICszNDMwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAg
ICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAKICNpZiBVU0UoQklHSU5UMzIp
CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKQEAg
LTM0NjIsNyArMzQ2Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBj
b21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lmIFVTRShCSUdJTlQzMikKICAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewpAQCAtMzQ5NCw3
ICszNDk0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUJpdFJTaGlmdCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKQEAgLTM1NDIsNyArMzU0Miw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIgaGVyZS4KICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CkBAIC0zODI4LDcgKzM4MjgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIHZvaWQgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZSB0eXBlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCB8fCB0eXBlID09IEFjY2Vzc1R5
cGU6OlRyeUdldEJ5SWQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBj
YXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0zODc0LDcgKzM4NzQsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZFdpdGhUaGlzKCkKICAgICB7Ci0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG1f
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKGdldEJ5SWRXaXRoVGhpcyhsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMzkxMyw3ICszOTEzLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDMoKSk7CkBAIC0zOTI0LDcgKzM5MjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAg
ICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHRo
aXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CkBAIC0zOTM1LDcgKzM5MzUsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwpAQCAt
Mzk0Nyw3ICszOTQ3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNv
bXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFR5cGVkQXJy
YXlUeXBlIHR5cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAgICAg
ICAgIHVuc2lnbmVkIG51bUV4dHJhQXJncyA9IG51bUV4dHJhQXRvbWljc0FyZ3MobV9ub2RlLT5v
cCgpKTsKICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3JhcGguY2hpbGQobV9ub2RlLCAwKTsK
QEAgLTQwOTMsNyArNDA5Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQXRvbWljc0lzTG9ja0ZyZWUoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IEludDMyVXNlKSB7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTQxMjYsNyArNDEyNiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICB2b2lkIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoKQogICAgIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CiAg
ICAgICAgIExWYWx1ZSB2YWx1ZSAgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAyKSk7CiAgICAgICAgIExWYWx1ZSBhdHRyaWJ1dGVzID0gbG93SW50MzIobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKQEAgLTQxNTksNyArNDE1OSw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgZ2V0dGVyID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBMVmFsdWUgc2V0dGVyID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwpAQCAtNDI3NSw3ICs0Mjc1LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKSB7CkBAIC00NDAxLDcgKzQ0MDEsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbnVsbHB0cjsKICAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IG51bGxwdHI7CkBAIC00NjE5LDcgKzQ2MTksNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsKCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJh
eTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsKQEAgLTUxMzMsNyAr
NTEzMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWwoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgRWRnZSBjaGlsZDEgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMCk7CiAgICAgICAgIEVkZ2UgY2hpbGQyID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpOwogICAgICAgICBFZGdlIGNoaWxkMyA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAyKTsKQEAgLTU0MzgsNyArNTQzOCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICB2b2lkIGNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgYWNj
ZXNzb3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1f
Z3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CkBAIC01NDUw
LDcgKzU0NTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlUHV0
R2V0dGVyU2V0dGVyQnlJZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBnZXR0ZXIgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgc2V0dGVyID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMygpKTsKQEAgLTU0NjMsNyArNTQ2Myw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICB2b2lkIGNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZh
bHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExW
YWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7CkBAIC01NTg5LDcgKzU1
ODksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIElDIGV2ZW4gaWYgY2hpbGQxIGlz
IFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBh
ZnRlciB0aGEgZmFzdCBwYXRoIG9mIElDLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NwotICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBi
YXNlLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTYyOSw3ICs1NjI5LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSBJQyBldmVuIGlmIGNoaWxkMSBpcyBVbnR5cGVkVXNlLiBJbiB0aGF0IGNh
c2UsIHdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYWZ0ZXIgdGhhIGZhc3QgcGF0aCBvZiBJ
Qy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDkzOTcKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5v
dFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgc3Vic2NyaXB0LCBt
X291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsKQEAgLTU2NDQs
NyArNTY0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
QXJyYXlQdXNoKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxv
d1N0b3JhZ2UobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgdW5zaWdu
ZWQgZWxlbWVudE9mZnNldCA9IDI7CkBAIC01ODkxLDcgKzU4OTEsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJyYXlTbGljZSgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAg
ICAgIExWYWx1ZSBzb3VyY2VBcnJheSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDApKTsKICAgICAgICAgTFZhbHVlIHNvdXJjZVN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCBtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxKSk7CkBAIC01
OTY2LDcgKzU5NjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxl
QXJyYXlJbmRleE9mKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGxvd1N0b3JhZ2UobV9ub2RlLT5udW1DaGlsZHJlbigpID09IDMgPyBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMikgOiBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5
X3B1YmxpY0xlbmd0aCk7CkBAIC02MTEwLDcgKzYxMTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UG9wKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHN0
b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTYyMTUs
NyArNjIxNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVQdXNo
V2l0aFNjb3BlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBwYXJlbnRTY29wZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGF1dG8gb2JqZWN0RWRnZSA9IG1fbm9kZS0+
Y2hpbGQyKCk7CiAgICAgICAgIGlmIChvYmplY3RFZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2Up
IHsKQEAgLTYyMzQsNyArNjIzNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgewogICAg
ICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBT
eW1ib2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsK
LSAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fb3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
SlNWYWx1ZSBpbml0aWFsaXphdGlvblZhbHVlID0gbV9ub2RlLT5pbml0aWFsaXphdGlvblZhbHVl
Rm9yQWN0aXZhdGlvbigpOwogICAgICAgICBBU1NFUlQoaW5pdGlhbGl6YXRpb25WYWx1ZS5pc1Vu
ZGVmaW5lZCgpIHx8IGluaXRpYWxpemF0aW9uVmFsdWUgPT0ganNURFpWYWx1ZSgpKTsKICAgICAg
ICAgaWYgKHRhYmxlLT5zaW5nbGV0b24oKS5pc1N0aWxsVmFsaWQoKSkgewpAQCAtNjMxMCw3ICs2
MzEwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBb
Jl0gKCkgewotICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKCk7CkBAIC02MzgwLDkgKzYzODAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMjA3
CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9Ci0gICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKICAg
ICAgICAgCi0gICAgICAgIHVuc2lnbmVkIG1pbkNhcGFjaXR5ID0gbV9ncmFwaC5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm51bVBhcmFtZXRlcnMoKSAtIDE7
CisgICAgICAgIHVuc2lnbmVkIG1pbkNhcGFjaXR5ID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9j
a0ZvcihtX29yaWdpbi5zZW1hbnRpYyktPm51bVBhcmFtZXRlcnMoKSAtIDE7CiAgICAgICAgIAog
ICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02NDM1LDcg
KzY0MzUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5zdG9yZVB0cihn
ZXRDdXJyZW50Q2FsbGVlKCksIHJlc3VsdCwgbV9oZWFwcy5EaXJlY3RBcmd1bWVudHNfY2FsbGVl
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGguaXNLbm93bikgewotICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHN0YXJ0ID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFydCht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
cnQgPSBBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0KG1fb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGQ6Om1heChsZW5ndGgua25v
d24sIG1pbkNhcGFjaXR5KTsgKytpKSB7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0KGFkZHJlc3NGb3Ioc3RhcnQgKyBpKSks
CkBAIC02NDgyLDEzICs2NDgyLDEzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExW
YWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNy
ZWF0ZVNjb3BlZEFyZ3VtZW50cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwKICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAor
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRz
U3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSwg
c2NvcGUpOwogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtNjQ5Niwx
MSArNjQ5NiwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwKICAgICAgICAgICAgIHdlYWtQb2ludGVy
KAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAorICAgICAgICAgICAgICAg
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJn
dW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSk7CiAgICAgICAgIAogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CkBAIC02NTA4LDE0ICs2NTA4LDE0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBn
ZXRBcmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSk7CiAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0
KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQobV9ub2RlKSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExWYWx1ZSBhcnJheUxlbmd0aCA9
IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNjU3Myw3ICs2NTczLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93
blByb3BlcnR5TmFtZXMoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTm9kZVR5cGUgb3AgPSBtX25vZGUt
Pm9wKCk7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAg
ICAgICAgY2FzZSBPYmplY3RVc2U6IHsKQEAgLTY2NDAsNyArNjY0MCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNl
IE9iamVjdFVzZToKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRp
b25PYmplY3RDcmVhdGVPYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd09iamVj
dChtX25vZGUtPmNoaWxkMSgpKSkpOwpAQCAtNjc1Niw3ICs2NzU2LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbCgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBpZiAoIW1fbm9kZS0+Y2hpbGQxKCkpIHsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk5ld1N5bWJvbCwgbV92bVZhbHVlKSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC02Nzc3LDcgKzY3NzcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG1f
bm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytvcGVyYW5kSW5kZXgpCiAgICAgICAgICAgICBzcGVjdWxh
dGUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIG9wZXJhbmRJbmRleCkpOwogICAgICAgICAK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAogICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
CkBAIC02ODY0LDcgKzY4NjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBj
b21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX2dyYXBo
LmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9ub2RlKSkgewogICAgICAgICAg
ICAgQ2hlY2tlZEludDMyIHN0YXJ0TGVuZ3RoID0gMDsKICAgICAgICAgICAgIEJpdFZlY3Rvciog
Yml0VmVjdG9yID0gbV9ub2RlLT5iaXRWZWN0b3IoKTsKQEAgLTY5NjYsNyArNjk2Niw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMVmFsdWUgZXhjZWVkc01heEFsbG93ZWRM
ZW5ndGggPSBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDMyKE1JTl9B
UlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKICAgICAgICAgICAgIGJsZXNzU3Bl
Y3VsYXRpb24obV9vdXQuc3BlY3VsYXRlKGV4Y2VlZHNNYXhBbGxvd2VkTGVuZ3RoKSwgT3ZlcmZs
b3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOwogCi0gICAgICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyktPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cykpOwogICAg
ICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRD
b250aWd1b3VzSlNBcnJheShsZW5ndGgsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gYXJyYXlWYWx1ZXMuYXJyYXk7CiAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTcxMDMsNyArNzEwMyw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcygpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIAogICAg
ICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOwpAQCAt
NzEzOSw3ICs3MTM5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZVByb21pc2UoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtNzE5OSw3ICs3MTk5LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVy
YXRpb24+CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChPcGVyYXRp
b24gb3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtNzI2MCw3ICs3MjYwLDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBp
ZiAobV9ub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKIApAQCAtNzQ2OSw3ICs3NDY5LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheUJ1ZmZlcigp
CiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCiAgICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nTW9k
ZSgpKSk7CiAgICAgICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IG1fbm9kZS0+Y2FzdE9w
ZXJhbmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpOwpAQCAtNzUwMyw3ICs3NTAzLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICB7CiAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCi0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKICAg
ICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCkBAIC03NTI2LDcg
Kzc1MjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVk
QXJyYXkoKQogICAgIHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUgPSBt
X25vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKQEAg
LTc2NjUsNyArNzY2NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBp
bGVUb051bWJlcigpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIGlmICghKGFic3RyYWN0VmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkKQEAgLTc2OTMsNyArNzY5
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9OdW1l
cmljKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCkpIHsK
QEAgLTc3MzUsNyArNzczNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNv
bXBpbGVDYWxsTnVtYmVyQ29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICNpZiBVU0UoQklHSU5UMzIp
CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkg
ewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CkBAIC03NzY1LDcgKzc3NjUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQg
Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSAhPSBTdHJpbmdWYWx1ZU9mIHx8IG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnZlcnQgdGhpcyB0
byBHZXRJbnRlcm5hbEZpZWxkKDApLgpAQCAtNzg3NSw3ICs3ODc1LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZSgpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CkBAIC03OTA2LDcgKzc5MDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29t
cGlsZVRvUHJvcGVydHlLZXkoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNzkzNyw3ICs3OTM3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
CiAgICAgICAgIHN0cnVjdCBGbGFnc0FuZExlbmd0aCB7CiAgICAgICAgICAgICBMVmFsdWUgZmxh
Z3M7CkBAIC04MTQ4LDcgKzgxNDgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
MjA0Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkp
OwogICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSk7CiAgICAgICAgICAg
ICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKQEAgLTgyOTMsNyArODI5Myw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdGcm9tQ2hhckNvZGUoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGNoaWxkRWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpAQCAtODQ4
Miw3ICs4NDgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uLCB2YXJpYW50LmtpbmQoKSk7CiAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4udHJhbnNpdGlvbnMoKS5hZGRMYXppbHkoCi0gICAg
ICAgICAgICAgICAgICAgIGNvZGVCbG9jaygpLCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5jb2Rl
T3JpZ2luT3duZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCksIG1fb3JpZ2lu
LnNlbWFudGljLmNvZGVPcmlnaW5Pd25lcigpLAogICAgICAgICAgICAgICAgICAgICB2YXJpYW50
Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RvcmFnZSA9IHN0b3JhZ2VGb3JUcmFu
c2l0aW9uKApAQCAtODczNiw3ICs4NzM2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
IHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoKQogICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihtX291
dC5hYnNvbHV0ZShnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkpKTsKICAgICB9
CiAgICAgCkBAIC04NzkwLDcgKzg3OTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
dm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50
Q291bnQgPSBtX291dC5sb2FkMzIocGF5bG9hZEZvcihBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50
Q291bnQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSk7CisgICAgICAgIExWYWx1ZSBhcmd1bWVu
dENvdW50ID0gbV9vdXQubG9hZDMyKHBheWxvYWRGb3IoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVu
dENvdW50KG1fb3JpZ2luLnNlbWFudGljKSkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIGluQm91
bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgb3V0T2ZCb3VuZHMg
PSBtX291dC5uZXdCbG9jaygpOwpAQCAtODc5OSw3ICs4Nzk5LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lmxlc3NUaGFuT3JFcXVhbChhcmd1bWVu
dENvdW50LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+YXJndW1lbnRJbmRleCgpKSksIHVuc3Vy
ZShvdXRPZkJvdW5kcyksIHVuc3VyZShpbkJvdW5kcykpOwogCiAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5Cb3VuZHMsIG91dE9mQm91bmRzKTsKLSAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGFyZyA9IEFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQo
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgbV9ub2RlLT5hcmd1bWVudEluZGV4KCkgLSAxOwor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJnID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNT
dGFydChtX29yaWdpbi5zZW1hbnRpYykgKyBtX25vZGUtPmFyZ3VtZW50SW5kZXgoKSAtIDE7CiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGluQm91bmRzUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LmxvYWQ2NChhZGRyZXNzRm9yKGFyZykpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCkBAIC04ODYwLDcgKzg4NjAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAog
ICAgIHZvaWQgY29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29s
ZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAtOTI2MSw3ICs5MjYxLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVNhbWVWYWx1ZSgpCiAgICAg
ewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkg
ewogICAgICAgICAgICAgTFZhbHVlIGFyZzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMVmFsdWUgYXJnMiA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsK
QEAgLTEwMzY1LDcgKzEwMzY1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwog
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAg
ICAgWz0sICZ2bV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwNDE1LDcgKzEwNDE1LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVWYXJhcmdzTGVuZ3RoKCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG1fbm9kZS0+bG9hZFZhcmFy
Z3NEYXRhKCk7CiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5hcmd1bWVudHNDaGlsZCgpKTsKIApAQCAtMTA0MjgsNyArMTA0MjgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlTG9hZFZhcmFyZ3MoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ub2RlLT5sb2FkVmFyYXJnc0RhdGEoKTsK
ICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRzID0gbG93SlNWYWx1ZShtX25vZGUtPmFyZ3VtZW50
c0NoaWxkKCkpOwogICAgICAgICBMVmFsdWUgbGVuZ3RoSW5jbHVkaW5nVGhpcyA9IGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTA0NjcsNyArMTA0NjcsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBpZiAobV9ub2RlLT5hcmd1bWVudHNDaGlsZCgpKQogICAgICAgICAg
ICAgaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5hcmd1bWVudHNDaGlsZCgpLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwor
ICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lKCk7CiAKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBk
YXRhLT5vZmZzZXQ7CiAgICAgICAgIExWYWx1ZSBsZW5ndGhJbmNsdWRpbmdUaGlzID0gbG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDY2NCw3ICsxMDY2NCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3dpdGNoKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIFN3aXRjaERhdGEqIGRhdGEgPSBtX25vZGUtPnN3aXRjaERhdGEoKTsKICAgICAgICAgc3dp
dGNoIChkYXRhLT5raW5kKSB7CiAgICAgICAgIGNhc2UgU3dpdGNoSW1tOiB7CkBAIC0xMDk2MCw3
ICsxMDk2MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
VGhyb3coKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGVycm9yID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvblRocm93REZHLCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBlcnJvcik7IAogICAgICAgICAvLyB2bUNhbGwoKSBk
b2VzIGFuIGV4Y2VwdGlvbiBjaGVjayBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVhY2ggdGhpcy4KQEAg
LTEwOTY5LDcgKzEwOTY5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZVRocm93U3RhdGljRXJyb3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGVycm9yTWVz
c2FnZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGVycm9y
VHlwZSA9IG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lcnJvclR5cGUoKSk7CiAgICAgICAgIHZt
Q2FsbChWb2lkLCBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSk7CkBAIC0xMTIyMSw3ICsxMTIyMSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUgbWFwSGFzaFN0cmluZyhMVmFsdWUg
c3RyaW5nLCBFZGdlJiBlZGdlKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm9uRW1w
dHlTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc2xv
d0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTEyNDUsNyArMTEyNDUsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlTWFwSGFzaCgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQm9v
bGVhblVzZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTExMzcwLDcgKzExMzcwLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUdldE1hcEJ1Y2tldCgpCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBsb29wQXJvdW5kID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTE1OTYs
NyArMTE1OTYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlU2V0
QWRkKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBzZXQgPSBsb3dTZXRPYmplY3QobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBrZXkgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzaCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQzKCkp
OwpAQCAtMTE2MDYsNyArMTE2MDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlTWFwU2V0KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBtYXAgPSBsb3dNYXBP
YmplY3QobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIGtl
eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikp
OwpAQCAtMTE2OTQsNyArMTE2OTQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlVHlwZU9mSXNPYmplY3QoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIEVk
Z2UgY2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKGNoaWxkKTsKQEAgLTExNzUxLDcgKzExNzUxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVJc0NhbGxhYmxlKFNfSklUT3BlcmF0aW9uX0dDIHNs
b3dQYXRoT3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIEVkZ2UgY2hpbGQg
PSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGNo
aWxkKTsKQEAgLTExNzk2LDcgKzExNzk2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
IHZvaWQgY29tcGlsZUlzQ29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHZh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgc2V0Qm9vbGVhbih2
bUNhbGwoSW50MzIsIG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIHZhbHVlKSk7CiAgICAgfQpAQCAtMTE4NDIsNyArMTE4NDIsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluQnlWYWwsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICB9CiAKQEAgLTExOTEwLDcgKzExOTEwLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBudWxscHRyOwpAQCAtMTIwMTQsNyArMTIwMTQs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZVBhcnNlSW50KCkKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKTsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkp
IHsKICAgICAgICAgICAgIExWYWx1ZSByYWRpeCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OwpAQCAtMTIxNzcsNyArMTIxNzcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgY29uc3Ry
dWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5z
dGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwpAQCAtMTIyMTAsNyArMTIyMTAs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93
SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgQXJyYXlNb2Rl
IG1vZGUgPSBtX25vZGUtPmFycmF5TW9kZSgpOwpAQCAtMTIzNDUsNyArMTIzNDUsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlSGFzR2VuZXJpY1Byb3BlcnR5KCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkhhc0dlbmVyaWNQ
cm9wZXJ0eSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHkpKTsKQEAg
LTEyMzU0LDcgKzEyMzU0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgU2xvd1BhdGhDYWxsPgogICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3Bl
cnR5SW1wbChMVmFsdWUgYmFzZSwgU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCkKICAgICB7Ci0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgTFZhbHVlIGVudW1lcmF0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQzKCkpOwog
CkBAIC0xMjQwNSw3ICsxMjQwNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RQbmFtZSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVl
IHByb3BlcnR5ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOwogICAg
ICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MikpOwpAQCAtMTI0NTgsNyArMTI0NTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
dm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQogICAgICAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGws
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSkpKTsK
ICAgICAgICAgZWxzZQpAQCAtMTI1MTksNyArMTI1MTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIAogICAgIHZvaWQgY29tcGlsZVRvSW5kZXhTdHJpbmcoKQogICAgIHsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBpbmRleCkpOwogICAgIH0KQEAgLTEyODQyLDcgKzEyODQyLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJs
ZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwotICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3Ry
dWN0dXJlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHNs
b3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTEyOTkzLDcgKzEyOTkzLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhuZWVkVHJhcEhhbmRsaW5nLCBjb250aW51YXRpb24pOwogCiAgICAgICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgIGxhenlTbG93UGF0aCgKICAgICAgICAgICAgIFs9LCAmdm1d
IChjb25zdCBWZWN0b3I8TG9jYXRpb24+JikgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJh
dG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZt
LCBvcGVyYXRpb25IYW5kbGVUcmFwcywgSW52YWxpZEdQUlJlZywgZ2xvYmFsT2JqZWN0KTsKQEAg
LTEzMDgyLDcgKzEzMDgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZU5ld1JlZ2V4cCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBGcm96ZW5WYWx1ZSogcmVnZXhwID0g
bV9ub2RlLT5jZWxsT3BlcmFuZCgpOwogICAgICAgICBMVmFsdWUgbGFzdEluZGV4ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5p
bmhlcml0czxSZWdFeHA+KHZtKCkpKTsKQEAgLTEzMTE4LDE0ICsxMzExOCwxNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKCkKICAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksCiAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlU3RyaW5nUmVwbGFjZSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG1fbm9k
ZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewpAQCAtMTMyMDcsNyArMTMyMDcs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgcGFja2V0ID0gZW5zdXJl
U2hhZG93Q2hpY2tlblBhY2tldCgpOwogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0g
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZENvZGVPcmlnaW4obV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkQ29kZU9yaWdp
bihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0ciht
X2NhbGxGcmFtZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsK
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGlu
dHB0cl90PihTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXIoKSkpLCBwYWNrZXQsIG1f
aGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKQEAgLTEzMjc5LDEyICsxMzI3OSwx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIEFyZ3VtZW50c0xlbmd0aCBnZXRB
cmd1bWVudHNMZW5ndGgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c0xlbmd0
aChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKSk7CisgICAgICAgIHJl
dHVybiBnZXRBcmd1bWVudHNMZW5ndGgobV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KCkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgZ2V0Q3VycmVudENhbGxlZSgpCiAgICAgewot
ICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBmcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGZy
YW1lID0gbV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAg
IGlmIChmcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQu
bG9hZFB0cihhZGRyZXNzRm9yKGZyYW1lLT5jYWxsZWVSZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSkpOwogICAgICAgICAgICAgcmV0dXJuIHdlYWtQb2ludGVyKGZyYW1lLT5jYWxsZWVSZWNvdmVy
eS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKQEAgLTEzMzAwLDcgKzEzMzAwLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAKICAgICBMVmFsdWUgZ2V0QXJndW1lbnRzU3RhcnQoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c1N0YXJ0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c1N0YXJ0KG1f
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpKTsKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTEzNzU3LDcgKzEzNzU3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgQ19KSVRPcGVyYXRpb25fQl9HSnNzSnNzIHN0cmluZ0Z1bmN0
aW9uLAogICAgICAgICBTX0pJVE9wZXJhdGlvbl9HSkogZmFsbGJhY2tGdW5jdGlvbikKICAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpIHsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKQEAgLTEz
ODE1LDcgKzEzODE1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGls
ZVN0cmluZ1NsaWNlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGxlbmd0aENoZWNr
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGVtcHR5Q2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEVtcHR5Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC0xMzkwMSw3ICsxMzkwMSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICB2b2lkIGNvbXBpbGVUb0xvd2VyQ2FzZSgpCiAgICAgewotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBM
QmFzaWNCbG9jayBub3RSb3BlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgaXM4Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbG9vcFRv
cCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xMzk2NCw3ICsxMzk2NCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IHRydWU7
CiAgICAgICAgIH0KIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZt
Q2FsbChwb2ludGVyVHlwZSgpLCB2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50
MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50MzJUb1N0cmluZywgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xMzk4Miw3ICsxMzk4Miw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
Q29uc3RhbnQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgp
KSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOwpAQCAt
MTQwMDAsMTQgKzE0MDAwLDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNv
bXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9u
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFs
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X291dC5jb25zdEludFB0cih1aWQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVzb2x2
ZVNjb3BlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25SZXNvbHZlU2NvcGUsCiAg
ICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpKSk7CkBAIC0xNDAxNSw3ICsxNDAxNSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVHZXREeW5hbWljVmFyKCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0RHluYW1pY1ZhciwKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNv
bnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7
CkBAIC0xNDAyMyw3ICsxNDAyMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lk
IGNvbXBpbGVQdXREeW5hbWljVmFyKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCldOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1
dEluZm8oKSkpKTsKQEAgLTE0MTU2LDcgKzE0MTU2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJlKCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGgg
dGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCkBAIC0xNDIxNyw3ICsxNDIxNyw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZ2V0dGVyIGRvZXMgbm90IGhh
dmUgY29kZSBzZXR0aW5nIHRvcENhbGxGcmFtZSwgQXMgaXMgdGhlIHNhbWUgdG8gSUMsIHdlIHNo
b3VsZCBzZXQgdG9wQ2FsbEZyYW1lIGluIGNhbGxlciBzaWRlLgogICAgICAgICAgICAgLy8gRklY
TUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxs
RnJhbWUpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAgdm1DYWxs
KEludDY0LCBiaXR3aXNlX2Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21HZXR0ZXI+KG1f
bm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIucmV0YWdnZWRF
eGVjdXRhYmxlQWRkcmVzczxDRnVuY3Rpb25QdHJUYWc+KCkpLApAQCAtMTQ3NDksMTEgKzE0NzQ5
LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGlmICghT3B0aW9uczo6cmV0dXJu
RWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9ncmFwaC5iYXNlbGlu
ZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFiYXNlbGluZUNvZGVCbG9jay0+bG9vcEhpbnRz
QXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4oKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogICAgICAgICBWTSogdm0gPSAm
dGhpcy0+dm0oKTsKICAgICAgICAgdWludDY0X3QqIHB0ciA9IHZtLT5nZXRMb29wSGludEV4ZWN1
dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwpAQCAtMTQ4NjcsNyArMTQ4NjcsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludEZ1bmN0b3I+CiAgICAgdm9p
ZCBnZW5lcmljSlNWYWx1ZUNvbXBhcmUoY29uc3QgSW50RnVuY3RvciYgaW50RnVuY3RvciwgU19K
SVRPcGVyYXRpb25fR0pKIGhlbHBlckZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTQ4OTgsNyArMTQ4OTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
CiAgICAgTFZhbHVlIHN0cmluZ3NFcXVhbChMVmFsdWUgbGVmdEpTU3RyaW5nLCBMVmFsdWUgcmln
aHRKU1N0cmluZywgRWRnZSBsZWZ0SlNTdHJpbmdFZGdlID0gRWRnZSgpLCBFZGdlIHJpZ2h0SlNT
dHJpbmdFZGdlID0gRWRnZSgpKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJp
dmlhbGx5VW5lcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9j
ayBub3RFbXB0eUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBs
ZWZ0UmVhZHlDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1NDY5LDcgKzE1NDY5LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlSlNBcnJheShM
VmFsdWUgcHVibGljTGVuZ3RoLCBMVmFsdWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgc3RydWN0dXJl
LCBMVmFsdWUgaW5kZXhpbmdUeXBlLCBib29sIHNob3VsZEluaXRpYWxpemVFbGVtZW50cyA9IHRy
dWUsIGJvb2wgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVhdGVBcnJheVN0b3JhZ2UgPSB0cnVlKQog
ICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgZmFzdENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBsYXJnZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICBMQmFzaWNCbG9jayBmYWlsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xNTc1OSw3
ICsxNTc1OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obWFzcXVlcmFkZXNDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpc1RydXRoeU9iamVjdCA9IG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLAorICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkUHRyKGxvYWRTdHJ1Y3R1cmUodmFsdWUpLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFu
Y2hvcihpc1RydXRoeU9iamVjdCkpOwpAQCAtMTU4NzIsNyArMTU4NzIsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKSksCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpKSkpOwog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICB9CkBAIC0xNTkw
OSw3ICsxNTkwOSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIEZ1bmN0aW9uVHlw
ZSBzbG93UGF0aEZ1bmN0aW9uLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHN0b3JhZ2UsIExWYWx1ZSBp
bmRleCwgTFZhbHVlIHZhbHVlLAogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24pCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RJbkJvdW5kc0Nhc2UgPQogICAgICAgICAgICAg
ICAgIG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xNjMwOSw3ICsxNjMwOSw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIC8vIGJsb2NrcyB3ZSB3YW50IHRvIGp1bXAgdG8sIGFuZCB0aGVu
IHJlcXVlc3QgdGhlaXIgYWRkcmVzc2VzIGFmdGVyIGNvbXBpbGF0aW9uIGNvbXBsZXRlcy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM2OQog
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgYnJhbmNoT2Zmc2V0ID0gdm1DYWxsKAogICAg
ICAgICAgICAgSW50MzIsIG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNldCwK
QEAgLTE2Mzg5LDcgKzE2Mzg5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgYnVpbGRUeXBlT2YoRWRnZSBjaGlsZCwgTFZh
bHVlIHZhbHVlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBicmFuY2hpbmcgc3RydWN0dXJlOgog
ICAgICAgICAvLwpAQCAtMTY4NTAsNyArMTY4NTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBsYXp5
U2xvd1BhdGgoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgVmVjdG9yPExWYWx1ZT4mIHVz
ZXJBcmd1bWVudHMpCiAgICAgewotICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbiA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljOworICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2luLnNl
bWFudGljOwogICAgICAgICAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBtX291
dC5wYXRjaHBvaW50KEIzOjpJbnQ2NCk7CiAgICAgICAgIGZvciAoTFZhbHVlIGFyZyA6IHVzZXJB
cmd1bWVudHMpCkBAIC0xODY5OCw3ICsxODY5OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
bV9vcmlnaW4uc2VtYW50aWMpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgbG9hZENlbGxTdGF0
ZShMVmFsdWUgYmFzZSkKQEAgLTE4ODYzLDcgKzE4ODYzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpIGNv
bnN0CiAgICAgewotICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbV9vcmlnaW4uc2Vt
YW50aWM7CiAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVy
CiAgICAgICAgICAgICB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxWYXJhcmdzSW5saW5lZENh
bGxlcgogICAgICAgICAgICAgfHwgbV9ub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3NJbmxpbmVkQ2FsbGVyCkBAIC0xODg4MSw3ICsxODg4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgCiAgICAgdm9pZCBjYWxsQ2hlY2soKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkgewogI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERS
RVNTKSB8fCBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxs
RnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOwpAQCAtMTg5ODAsNyAr
MTg5ODAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIGlmICghaXNFeGNlcHRp
b25IYW5kbGVyCiAgICAgICAgICAgICAmJiBPcHRpb25zOjp1c2VPU1JFeGl0RnV6eigpCi0gICAg
ICAgICAgICAmJiBjYW5Vc2VPU1JFeGl0RnV6emluZyhtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICYmIGNhblVzZU9TUkV4
aXRGdXp6aW5nKG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMp
KQogICAgICAgICAgICAgJiYgZG9PU1JFeGl0RnV6emluZygpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbnVtYmVyT2ZGdXp6Q2hlY2tzID0gbV9vdXQuYWRkKAogICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMihtX291dC5hYnNvbHV0ZSgmZ19udW1iZXJPZk9TUkV4aXRGdXp6Q2hlY2tzKSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IDNiODZjMzNmOTljNWIzNzgwZjg1MWI5ZjZlZTcwYjNmODky
Mzc4MzQuLjEyMjZmODRiNDYxZDA1NmE1YzNkZjgyZjFlMDBmMTdhZGRhMTUxNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1h
bmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAg
ICBPcHRpb25zOjpmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXQoKSB8fCBPcHRpb25zOjpm
aXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVyKCk7CiAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enooKSAmJiAoIWZpcmVBdEVuYWJsZWQgfHwg
T3B0aW9uczo6dmVyYm9zZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigpKSkKICAgICAgICAgICAg
IHByaW50ZigiSlNDIEVYRUNVVEFCTEUgQUxMT0NBVElPTiBGVVpaOiBlbmNvdW50ZXJlZCAldSBj
aGVja3MuXG4iLCBudW1iZXJPZkV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekNoZWNrcygpKTsKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZU9TUkV4aXRGdXp6KCkpIHsKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZU9TUkV4aXRGdXp6KCkgJiYgT3B0aW9uczo6dmVyYm9zZU9TUkV4aXRGdXp6KCkpIHsK
ICAgICAgICAgICAgIHByaW50ZigiSlNDIE9TUiBFWElUIEZVWlo6IGVuY291bnRlcmVkICV1IHN0
YXRpYyBjaGVja3MuXG4iLCBudW1iZXJPZlN0YXRpY09TUkV4aXRGdXp6Q2hlY2tzKCkpOwogICAg
ICAgICAgICAgcHJpbnRmKCJKU0MgT1NSIEVYSVQgRlVaWjogZW5jb3VudGVyZWQgJXUgZHluYW1p
YyBjaGVja3MuXG4iLCBudW1iZXJPZk9TUkV4aXRGdXp6Q2hlY2tzKCkpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAyYzZiNTE4
MzE2ZmM0ZjMzMzRiNGYzNDQzYzdlNjRiNzBmNTZjMTFhLi5kYjhhNWZkNDFlNjI5NGY3YTRmYmRm
Y2IzOGJhNjczMzE5Mzg0NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTM5NSw2ICszOTUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJB
c3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIGZpcmVPU1JFeGl0
RnV6ekF0U3RhdGljLCAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBmaXJl
T1NSRXhpdEZ1enpBdCwgMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgZmly
ZU9TUkV4aXRGdXp6QXRPckFmdGVyLCAwLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2ws
IHZlcmJvc2VPU1JFeGl0RnV6eiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAg
IHYoVW5zaWduZWQsIHNlZWRPZlZNUmFuZG9tRm9yRnV6emVyLCAwLCBOb3JtYWwsICIwIG1lYW5z
IG5vdCBmdXp6aW5nIHRoaXM7IHVzZSBhIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBzZWVkIikg
XAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA4YTRmOWJlMjFjNWFhYjZkMWFhYmQwMDVkODJmZjczNDBhMmNhMGFlLi45MTMw
NTgwODNjMzQ3MTM4YmU2MTI2YWEyZDYzMzgzZDdkY2M3NzBiIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIw
LTA4LTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gRlRMIHNob3VsZCB1c2UgbV9vcmlnaW4gaW5zdGVhZCBvZiBtX25vZGUtPm9yaWdpbiBzaW5j
ZSBtX25vZGUgY2FuIGJlIG51bGxwdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTgzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3RyZXNzL2Z0bC1lbnRyeS1vc3ItZXhpdC1oYXMtbnVsbHB0ci1u
b2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMjAtMDgtMjUgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJy
b3IgZm9yIG9iamVjdCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZnRsLWVudHJ5LW9zci1leGl0LWhhcy1udWxscHRyLW5vZGUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9mdGwtZW50cnktb3NyLWV4aXQtaGFzLW51bGxwdHItbm9kZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YTAxMWU1MDZjZjRlNTk4NDUwMDM2YWUwMTUwOWJhMDkwYmI0OTVmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWVudHJ5LW9zci1leGl0LWhhcy1udWxs
cHRyLW5vZGUuanMKQEAgLTAsMCArMSw2IEBACisvL0AgcnVuRGVmYXVsdCgiLS1mb3JjZURlYnVn
Z2VyQnl0ZWNvZGVHZW5lcmF0aW9uPTEiLCAiLS11c2VPU1JFeGl0RnV6ej0xIiwgIi0td2F0Y2hk
b2c9NTAwIiwgIi0td2F0Y2hkb2ctZXhjZXB0aW9uLW9rIiwgIi0tdmVyYm9zZU9TUkV4aXRGdXp6
PTEiKQorZnVuY3Rpb24gZm9vKGEwKSB7CisgIHdoaWxlICgxKSB7fQorfQorCitmb28oMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407260</attachid>
            <date>2020-08-25 19:04:16 -0700</date>
            <delta_ts>2020-08-25 22:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215833-20200825190415.patch</filename>
            <type>text/plain</type>
            <size>83332</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
M2FiZTlhMzhjZGJkZDM4MjFkMWM4OTM4ZjE3NTUzMWY3Y2Q5OWJhLi40YTEyMDFlZjY0MTk4NDAw
MWQwM2I5NWNkMzc2Njc2M2Y0NzE4OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjIgQEAKKzIwMjAtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGVEwgc2hvdWxkIHVzZSBtX29yaWdpbiBpbnN0ZWFkIG9mIG1f
bm9kZS0+b3JpZ2luIHNpbmNlIG1fbm9kZSBjYW4gYmUgbnVsbHB0cgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgd2UgYXJlIHVzaW5nIG1fbm9k
ZS0+b3JpZ2luLCBtX25vZGUgY2FuIGJlIG51bGxwdHIgKGF0IHRoZSBlbnRyeSBvZiB0aGUgRlRM
IGZ1bmN0aW9uKS4KKyAgICAgICAgbV9vcmlnaW4gaXMgYWx3YXlzIHBvaW50aW5nIGFwcHJvcHJp
YXRlIG9yaWdpbi4gV2Ugc2hvdWxkIHVzZSBpdCBpbnN0ZWFkLgorCisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyQ2F0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhDbHozMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aFVuYXJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUmFuZG9tKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhGbG9vcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENlaWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhUcnVu
Yyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aFNx
cnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhG
Um91bmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5j
T3JEZWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlVmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUF0b21p
Y3NSZWFkTW9kaWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQXRvbWljc0lzTG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlQdXNoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5U2xpY2UpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlJbmRleE9mKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5UG9wKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1c2hXaXRoU2Nv
cGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRl
QWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlUmVzdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU9iamVjdENyZWF0ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVRo
aXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRl
UHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1iZXIpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvUHJvcGVydHlLZXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0Zyb21DaGFyQ29k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aVB1
dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUdldEdsb2JhbFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYXJhcmdzTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUZvcndhcmRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUaHJvdyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bWFwSGFzaFN0cmluZyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldE1hcEJ1Y2tldCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTZXRBZGQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWFwU2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzQ2FsbGFibGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhhc093blByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVBhcnNlSW50
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNl
T2ZDdXN0b20pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
SGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUhhc0dlbmVyaWNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RGlyZWN0UG5hbWUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJvcGVydHlFbnVt
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRv
SW5kZXhTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3UmVnZXhwKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWls
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0Q3VycmVudENh
bGxlZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEFyZ3VtZW50
c1N0YXJ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGFyZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdTbGlj
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb0xvd2Vy
Q2FzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVSZXNvbHZlU2NvcGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlR2V0RHluYW1pY1Zhcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQdXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVMb29wSGludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmdlbmVyaWNKU1ZhbHVlQ29tcGFyZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnN0cmluZ3NFcXVhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlSlNBcnJheSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3dpdGNoU3RyaW5nU2xvdyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bGF6eVNsb3dQYXRoKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRJc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbENoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YXBwZW5kT1NSRXhpdCk6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIw
LTA4LTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBicmVha3BvaW50IGNvbmRpdGlvbiBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSB0aGUgaWdub3JlIGNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggZGE5ZGM1M2ExNmYzMThmMDIzMzQxMzk5Nzk2MWVlYWRmNmQxMzU4
ZS4uNTJhODQ5NzA1YjlhZjcyZGQxZDc5ZGUzNmVlOTZhZTdjZDM4NDZlNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjE0Nyw3ICsyMTQ3
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAg
ICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAg
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25Ub09iamVj
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKGVy
cm9yTWVzc2FnZSkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9y
LCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlKSk7CkBAIC0yMTU5
LDcgKzIxNTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGls
ZVRvVGhpcygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIApAQCAtMjE5Myw3ICsyMTkzLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAK
ICNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgYW5vdGhlciBC
aWdJbnQzMiBjb2RlIGdlbmVyYXRpb246IGJpbmFyeSB1c2Uga2luZHMgYXJlIEJpZ0ludFVzZTMy
LCBidXQgcmVzdWx0IGlzIFNwZWNBbnlJbnQgYW5kIGFjY2VwdGluZyBvdmVyZmxvdy4KQEAgLTIy
MjUsOCArMjIyNSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9m
dGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX29yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CiAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKQEAgLTIyMzUsNyArMjIzNSw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVN1YigpCiAgICAgewot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwogCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGFub3Ro
ZXIgQmlnSW50MzIgY29kZSBnZW5lcmF0aW9uOiBiaW5hcnkgdXNlIGtpbmRzIGFyZSBCaWdJbnRV
c2UzMiwgYnV0IHJlc3VsdCBpcyBTcGVjQW55SW50IGFuZCBhY2NlcHRpbmcgb3ZlcmZsb3cuCkBA
IC0yMjY3LDggKzIyNjcsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdG
dW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBAIC0yMjc3LDcgKzIyNzcsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVNdWwoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKIAogI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgLy8gRklYTUU6IEludHJvZHVjZSBh
bm90aGVyIEJpZ0ludDMyIGNvZGUgZ2VuZXJhdGlvbjogYmluYXJ5IHVzZSBraW5kcyBhcmUgQmln
SW50VXNlMzIsIGJ1dCByZXN1bHQgaXMgU3BlY0FueUludCBhbmQgYWNjZXB0aW5nIG92ZXJmbG93
LgpAQCAtMjMwOSw4ICsyMzA5LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOworICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpAQCAtMjQxNyw3ICsyNDE3
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOwogCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjUxNSw3
ICsyNTE1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVT
dHJDYXQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDMoKSkgewpAQCAtMjU4Niw4ICsyNTg2LDggQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCgpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1f
ZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9vcmlnaW4uc2VtYW50
aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBAIC0yNjAzLDcgKzI2MDMsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhDbHozMigpCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJV
c2UgfHwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gS25vd25JbnQzMlVzZSkgewogICAg
ICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIHNldEludDMyKG1fb3V0LmN0bHozMihvcGVyYW5kKSk7CkBAIC0yNjkwLDcgKzI2
OTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVEaXYo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50
MzIgaGVyZQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjExMDQxCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50
VXNlKSkgewpAQCAtMjc3MSw3ICsyNzcxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAvLyBGSVhNRTog
YWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTI5MjMsNyArMjkyMyw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJpdGhBYnMoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAg
ICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTI5NTUsNyArMjk1NSw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0aFVuYXJ5KCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAg
ICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVVbmFyeShtX25vZGUtPmFyaXRoVW5hcnlUeXBl
KCksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjk2Nyw3ICsyOTY3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZVZhbHVlUG93KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBhZGQgYSBm
YXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0zMTI2LDcgKzMxMjYsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhSYW5kb20oKQogICAgIHsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
IAogICAgICAgICAvLyBJbmxpbmVkIFdlYWtSYW5kb206OmFkdmFuY2UoKS4KICAgICAgICAgLy8g
dWludDY0X3QgeCA9IG1fbG93OwpAQCAtMzE3Myw3ICszMTczLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUFyaXRoUm91bmQoKQogICAgIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgewogICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAocHJvZHVjZXNJ
bnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRp
dmVaZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKQEAgLTMyMTQsNyArMzIxNCw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0aEZsb29yKCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3Vi
bGVGbG9vcih2YWx1ZSk7CkBAIC0zMjMxLDcgKzMyMzEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhDZWlsKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3VibGVDZWlsKHZhbHVlKTsKQEAgLTMyNDgs
NyArMzI0OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVBcml0
aFRydW5jKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5k
b3VibGVUcnVuYyh2YWx1ZSk7CkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKICAgICAgICAg
ICAgIHNldERvdWJsZShtX291dC5kb3VibGVTcXJ0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI3Nyw3ICszMjc3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUFyaXRoRlJvdW5kKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsK
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5mcm91bmQobG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjkwLDcgKzMyOTAsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUluY09yRGVjKCkKICAgICB7CiAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0
LCBtX25vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0aW9uSW5jIDogb3BlcmF0aW9uRGVjLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwpAQCAtMzI5OSw4ICszMjk5LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZU5lZ2F0ZSgpCiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0
ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKICAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25Bcml0aE5lZ2F0ZTsKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQogICAgIHsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lm
IFVTRShCSUdJTlQzMikKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKSB7CkBAIC0zMzk4LDcgKzMzOTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lmIFVTRShC
SUdJTlQzMikKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgewpAQCAtMzQzMCw3ICszNDMwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAg
ICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAKICNpZiBVU0UoQklHSU5UMzIp
CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKQEAg
LTM0NjIsNyArMzQ2Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBj
b21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogI2lmIFVTRShCSUdJTlQzMikKICAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewpAQCAtMzQ5NCw3
ICszNDk0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUJpdFJTaGlmdCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKQEAgLTM1NDIsNyArMzU0Miw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAg
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIgaGVyZS4KICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CkBAIC0zODI4LDcgKzM4MjgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIHZvaWQgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZSB0eXBlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCB8fCB0eXBlID09IEFjY2Vzc1R5
cGU6OlRyeUdldEJ5SWQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBj
YXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0zODc0LDcgKzM4NzQsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZFdpdGhUaGlzKCkKICAgICB7Ci0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG1f
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKGdldEJ5SWRXaXRoVGhpcyhsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMzkxMyw3ICszOTEzLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDMoKSk7CkBAIC0zOTI0LDcgKzM5MjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAg
ICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHRo
aXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CkBAIC0zOTM1LDcgKzM5MzUsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwpAQCAt
Mzk0Nyw3ICszOTQ3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNv
bXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFR5cGVkQXJy
YXlUeXBlIHR5cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAgICAg
ICAgIHVuc2lnbmVkIG51bUV4dHJhQXJncyA9IG51bUV4dHJhQXRvbWljc0FyZ3MobV9ub2RlLT5v
cCgpKTsKICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3JhcGguY2hpbGQobV9ub2RlLCAwKTsK
QEAgLTQwOTMsNyArNDA5Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQXRvbWljc0lzTG9ja0ZyZWUoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IEludDMyVXNlKSB7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTQxMjYsNyArNDEyNiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICB2b2lkIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoKQogICAgIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CiAg
ICAgICAgIExWYWx1ZSB2YWx1ZSAgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAyKSk7CiAgICAgICAgIExWYWx1ZSBhdHRyaWJ1dGVzID0gbG93SW50MzIobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKQEAgLTQxNTksNyArNDE1OSw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgZ2V0dGVyID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBMVmFsdWUgc2V0dGVyID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwpAQCAtNDI3NSw3ICs0Mjc1LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKSB7CkBAIC00NDAxLDcgKzQ0MDEsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbnVsbHB0cjsKICAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IG51bGxwdHI7CkBAIC00NjE5LDcgKzQ2MTksNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsKCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJh
eTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsKQEAgLTUxMzMsNyAr
NTEzMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWwoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgRWRnZSBjaGlsZDEgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMCk7CiAgICAgICAgIEVkZ2UgY2hpbGQyID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpOwogICAgICAgICBFZGdlIGNoaWxkMyA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAyKTsKQEAgLTU0MzgsNyArNTQzOCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICB2b2lkIGNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgYWNj
ZXNzb3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1f
Z3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CkBAIC01NDUw
LDcgKzU0NTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlUHV0
R2V0dGVyU2V0dGVyQnlJZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBnZXR0ZXIgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgc2V0dGVyID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMygpKTsKQEAgLTU0NjMsNyArNTQ2Myw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICB2b2lkIGNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZh
bHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExW
YWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7CkBAIC01NTg5LDcgKzU1
ODksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIElDIGV2ZW4gaWYgY2hpbGQxIGlz
IFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBh
ZnRlciB0aGEgZmFzdCBwYXRoIG9mIElDLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NwotICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBi
YXNlLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTYyOSw3ICs1NjI5LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSBJQyBldmVuIGlmIGNoaWxkMSBpcyBVbnR5cGVkVXNlLiBJbiB0aGF0IGNh
c2UsIHdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYWZ0ZXIgdGhhIGZhc3QgcGF0aCBvZiBJ
Qy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDkzOTcKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5v
dFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgc3Vic2NyaXB0LCBt
X291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsKQEAgLTU2NDQs
NyArNTY0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
QXJyYXlQdXNoKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxv
d1N0b3JhZ2UobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgdW5zaWdu
ZWQgZWxlbWVudE9mZnNldCA9IDI7CkBAIC01ODkxLDcgKzU4OTEsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlQXJyYXlTbGljZSgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAg
ICAgIExWYWx1ZSBzb3VyY2VBcnJheSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDApKTsKICAgICAgICAgTFZhbHVlIHNvdXJjZVN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCBtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxKSk7CkBAIC01
OTY2LDcgKzU5NjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxl
QXJyYXlJbmRleE9mKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGxvd1N0b3JhZ2UobV9ub2RlLT5udW1DaGlsZHJlbigpID09IDMgPyBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMikgOiBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5
X3B1YmxpY0xlbmd0aCk7CkBAIC02MTEwLDcgKzYxMTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UG9wKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHN0
b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTYyMTUs
NyArNjIxNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVQdXNo
V2l0aFNjb3BlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBwYXJlbnRTY29wZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGF1dG8gb2JqZWN0RWRnZSA9IG1fbm9kZS0+
Y2hpbGQyKCk7CiAgICAgICAgIGlmIChvYmplY3RFZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2Up
IHsKQEAgLTYyMzQsNyArNjIzNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgewogICAg
ICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBT
eW1ib2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsK
LSAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fb3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
SlNWYWx1ZSBpbml0aWFsaXphdGlvblZhbHVlID0gbV9ub2RlLT5pbml0aWFsaXphdGlvblZhbHVl
Rm9yQWN0aXZhdGlvbigpOwogICAgICAgICBBU1NFUlQoaW5pdGlhbGl6YXRpb25WYWx1ZS5pc1Vu
ZGVmaW5lZCgpIHx8IGluaXRpYWxpemF0aW9uVmFsdWUgPT0ganNURFpWYWx1ZSgpKTsKICAgICAg
ICAgaWYgKHRhYmxlLT5zaW5nbGV0b24oKS5pc1N0aWxsVmFsaWQoKSkgewpAQCAtNjMxMCw3ICs2
MzEwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBb
Jl0gKCkgewotICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKCk7CkBAIC02MzgwLDkgKzYzODAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMjA3
CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9Ci0gICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKICAg
ICAgICAgCi0gICAgICAgIHVuc2lnbmVkIG1pbkNhcGFjaXR5ID0gbV9ncmFwaC5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm51bVBhcmFtZXRlcnMoKSAtIDE7
CisgICAgICAgIHVuc2lnbmVkIG1pbkNhcGFjaXR5ID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9j
a0ZvcihtX29yaWdpbi5zZW1hbnRpYyktPm51bVBhcmFtZXRlcnMoKSAtIDE7CiAgICAgICAgIAog
ICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02NDM1LDcg
KzY0MzUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5zdG9yZVB0cihn
ZXRDdXJyZW50Q2FsbGVlKCksIHJlc3VsdCwgbV9oZWFwcy5EaXJlY3RBcmd1bWVudHNfY2FsbGVl
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGguaXNLbm93bikgewotICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHN0YXJ0ID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFydCht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
cnQgPSBBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0KG1fb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGQ6Om1heChsZW5ndGgua25v
d24sIG1pbkNhcGFjaXR5KTsgKytpKSB7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0KGFkZHJlc3NGb3Ioc3RhcnQgKyBpKSks
CkBAIC02NDgyLDEzICs2NDgyLDEzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExW
YWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNy
ZWF0ZVNjb3BlZEFyZ3VtZW50cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwKICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAor
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRz
U3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSwg
c2NvcGUpOwogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtNjQ5Niwx
MSArNjQ5NiwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwKICAgICAgICAgICAgIHdlYWtQb2ludGVy
KAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAorICAgICAgICAgICAgICAg
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJn
dW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSk7CiAgICAgICAgIAogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CkBAIC02NTA4LDE0ICs2NTA4LDE0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBn
ZXRBcmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSk7CiAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0
KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQobV9ub2RlKSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExWYWx1ZSBhcnJheUxlbmd0aCA9
IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNjU3Myw3ICs2NTczLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93
blByb3BlcnR5TmFtZXMoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTm9kZVR5cGUgb3AgPSBtX25vZGUt
Pm9wKCk7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAg
ICAgICAgY2FzZSBPYmplY3RVc2U6IHsKQEAgLTY2NDAsNyArNjY0MCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNl
IE9iamVjdFVzZToKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRp
b25PYmplY3RDcmVhdGVPYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd09iamVj
dChtX25vZGUtPmNoaWxkMSgpKSkpOwpAQCAtNjc1Niw3ICs2NzU2LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbCgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBpZiAoIW1fbm9kZS0+Y2hpbGQxKCkpIHsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk5ld1N5bWJvbCwgbV92bVZhbHVlKSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC02Nzc3LDcgKzY3NzcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG1f
bm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytvcGVyYW5kSW5kZXgpCiAgICAgICAgICAgICBzcGVjdWxh
dGUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIG9wZXJhbmRJbmRleCkpOwogICAgICAgICAK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAogICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
CkBAIC02ODY0LDcgKzY4NjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBj
b21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX2dyYXBo
LmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9ub2RlKSkgewogICAgICAgICAg
ICAgQ2hlY2tlZEludDMyIHN0YXJ0TGVuZ3RoID0gMDsKICAgICAgICAgICAgIEJpdFZlY3Rvciog
Yml0VmVjdG9yID0gbV9ub2RlLT5iaXRWZWN0b3IoKTsKQEAgLTY5NjYsNyArNjk2Niw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMVmFsdWUgZXhjZWVkc01heEFsbG93ZWRM
ZW5ndGggPSBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDMyKE1JTl9B
UlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKICAgICAgICAgICAgIGJsZXNzU3Bl
Y3VsYXRpb24obV9vdXQuc3BlY3VsYXRlKGV4Y2VlZHNNYXhBbGxvd2VkTGVuZ3RoKSwgT3ZlcmZs
b3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOwogCi0gICAgICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyktPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cykpOwogICAg
ICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRD
b250aWd1b3VzSlNBcnJheShsZW5ndGgsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gYXJyYXlWYWx1ZXMuYXJyYXk7CiAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTcxMDMsNyArNzEwMyw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcygpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIAogICAg
ICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOwpAQCAt
NzEzOSw3ICs3MTM5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZVByb21pc2UoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtNzE5OSw3ICs3MTk5LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVy
YXRpb24+CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChPcGVyYXRp
b24gb3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtNzI2MCw3ICs3MjYwLDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBp
ZiAobV9ub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKIApAQCAtNzQ2OSw3ICs3NDY5LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheUJ1ZmZlcigp
CiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCiAgICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nTW9k
ZSgpKSk7CiAgICAgICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IG1fbm9kZS0+Y2FzdE9w
ZXJhbmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpOwpAQCAtNzUwMyw3ICs3NTAzLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICB7CiAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCi0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKICAg
ICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCkBAIC03NTI2LDcg
Kzc1MjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVk
QXJyYXkoKQogICAgIHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUgPSBt
X25vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKQEAg
LTc2NjUsNyArNzY2NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBp
bGVUb051bWJlcigpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIGlmICghKGFic3RyYWN0VmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkKQEAgLTc2OTMsNyArNzY5
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9OdW1l
cmljKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCkpIHsK
QEAgLTc3MzUsNyArNzczNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNv
bXBpbGVDYWxsTnVtYmVyQ29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICNpZiBVU0UoQklHSU5UMzIp
CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkg
ewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CkBAIC03NzY1LDcgKzc3NjUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQg
Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSAhPSBTdHJpbmdWYWx1ZU9mIHx8IG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnZlcnQgdGhpcyB0
byBHZXRJbnRlcm5hbEZpZWxkKDApLgpAQCAtNzg3NSw3ICs3ODc1LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZSgpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CkBAIC03OTA2LDcgKzc5MDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29t
cGlsZVRvUHJvcGVydHlLZXkoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNzkzNyw3ICs3OTM3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwog
CiAgICAgICAgIHN0cnVjdCBGbGFnc0FuZExlbmd0aCB7CiAgICAgICAgICAgICBMVmFsdWUgZmxh
Z3M7CkBAIC04MTQ4LDcgKzgxNDgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
MjA0Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkp
OwogICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSk7CiAgICAgICAgICAg
ICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKQEAgLTgyOTMsNyArODI5Myw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdGcm9tQ2hhckNvZGUoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGNoaWxkRWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpAQCAtODQ4
Miw3ICs4NDgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uLCB2YXJpYW50LmtpbmQoKSk7CiAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4udHJhbnNpdGlvbnMoKS5hZGRMYXppbHkoCi0gICAg
ICAgICAgICAgICAgICAgIGNvZGVCbG9jaygpLCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5jb2Rl
T3JpZ2luT3duZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCksIG1fb3JpZ2lu
LnNlbWFudGljLmNvZGVPcmlnaW5Pd25lcigpLAogICAgICAgICAgICAgICAgICAgICB2YXJpYW50
Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RvcmFnZSA9IHN0b3JhZ2VGb3JUcmFu
c2l0aW9uKApAQCAtODczNiw3ICs4NzM2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
IHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoKQogICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihtX291
dC5hYnNvbHV0ZShnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkpKTsKICAgICB9
CiAgICAgCkBAIC04NzkwLDcgKzg3OTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
dm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50
Q291bnQgPSBtX291dC5sb2FkMzIocGF5bG9hZEZvcihBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50
Q291bnQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSk7CisgICAgICAgIExWYWx1ZSBhcmd1bWVu
dENvdW50ID0gbV9vdXQubG9hZDMyKHBheWxvYWRGb3IoQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVu
dENvdW50KG1fb3JpZ2luLnNlbWFudGljKSkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIGluQm91
bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgb3V0T2ZCb3VuZHMg
PSBtX291dC5uZXdCbG9jaygpOwpAQCAtODc5OSw3ICs4Nzk5LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lmxlc3NUaGFuT3JFcXVhbChhcmd1bWVu
dENvdW50LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+YXJndW1lbnRJbmRleCgpKSksIHVuc3Vy
ZShvdXRPZkJvdW5kcyksIHVuc3VyZShpbkJvdW5kcykpOwogCiAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5Cb3VuZHMsIG91dE9mQm91bmRzKTsKLSAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGFyZyA9IEFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQo
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgbV9ub2RlLT5hcmd1bWVudEluZGV4KCkgLSAxOwor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJnID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNT
dGFydChtX29yaWdpbi5zZW1hbnRpYykgKyBtX25vZGUtPmFyZ3VtZW50SW5kZXgoKSAtIDE7CiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGluQm91bmRzUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LmxvYWQ2NChhZGRyZXNzRm9yKGFyZykpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCkBAIC04ODYwLDcgKzg4NjAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAog
ICAgIHZvaWQgY29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29s
ZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAtOTI2MSw3ICs5MjYxLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVNhbWVWYWx1ZSgpCiAgICAg
ewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkg
ewogICAgICAgICAgICAgTFZhbHVlIGFyZzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMVmFsdWUgYXJnMiA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsK
QEAgLTEwMzY1LDcgKzEwMzY1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwog
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAg
ICAgWz0sICZ2bV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTEwNDE1LDcgKzEwNDE1LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVWYXJhcmdzTGVuZ3RoKCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG1fbm9kZS0+bG9hZFZhcmFy
Z3NEYXRhKCk7CiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5hcmd1bWVudHNDaGlsZCgpKTsKIApAQCAtMTA0MjgsNyArMTA0MjgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlTG9hZFZhcmFyZ3MoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ub2RlLT5sb2FkVmFyYXJnc0RhdGEoKTsK
ICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRzID0gbG93SlNWYWx1ZShtX25vZGUtPmFyZ3VtZW50
c0NoaWxkKCkpOwogICAgICAgICBMVmFsdWUgbGVuZ3RoSW5jbHVkaW5nVGhpcyA9IGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTA0NjcsNyArMTA0NjcsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBpZiAobV9ub2RlLT5hcmd1bWVudHNDaGlsZCgpKQogICAgICAgICAg
ICAgaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5hcmd1bWVudHNDaGlsZCgpLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwor
ICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lKCk7CiAKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBk
YXRhLT5vZmZzZXQ7CiAgICAgICAgIExWYWx1ZSBsZW5ndGhJbmNsdWRpbmdUaGlzID0gbG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDY2NCw3ICsxMDY2NCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3dpdGNoKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIFN3aXRjaERhdGEqIGRhdGEgPSBtX25vZGUtPnN3aXRjaERhdGEoKTsKICAgICAgICAgc3dp
dGNoIChkYXRhLT5raW5kKSB7CiAgICAgICAgIGNhc2UgU3dpdGNoSW1tOiB7CkBAIC0xMDk2MCw3
ICsxMDk2MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
VGhyb3coKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGVycm9yID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvblRocm93REZHLCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBlcnJvcik7IAogICAgICAgICAvLyB2bUNhbGwoKSBk
b2VzIGFuIGV4Y2VwdGlvbiBjaGVjayBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVhY2ggdGhpcy4KQEAg
LTEwOTY5LDcgKzEwOTY5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZVRocm93U3RhdGljRXJyb3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGVycm9yTWVz
c2FnZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGVycm9y
VHlwZSA9IG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lcnJvclR5cGUoKSk7CiAgICAgICAgIHZt
Q2FsbChWb2lkLCBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSk7CkBAIC0xMTIyMSw3ICsxMTIyMSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUgbWFwSGFzaFN0cmluZyhMVmFsdWUg
c3RyaW5nLCBFZGdlJiBlZGdlKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm9uRW1w
dHlTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc2xv
d0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTEyNDUsNyArMTEyNDUsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlTWFwSGFzaCgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQm9v
bGVhblVzZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTExMzcwLDcgKzExMzcwLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUdldE1hcEJ1Y2tldCgpCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBsb29wQXJvdW5kID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTE1OTYs
NyArMTE1OTYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlU2V0
QWRkKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBzZXQgPSBsb3dTZXRPYmplY3QobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBrZXkgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzaCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQzKCkp
OwpAQCAtMTE2MDYsNyArMTE2MDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlTWFwU2V0KCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBtYXAgPSBsb3dNYXBP
YmplY3QobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIGtl
eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikp
OwpAQCAtMTE2OTQsNyArMTE2OTQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlVHlwZU9mSXNPYmplY3QoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIEVk
Z2UgY2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKGNoaWxkKTsKQEAgLTExNzUxLDcgKzExNzUxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVJc0NhbGxhYmxlKFNfSklUT3BlcmF0aW9uX0dDIHNs
b3dQYXRoT3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIEVkZ2UgY2hpbGQg
PSBtX25vZGUtPmNoaWxkMSgpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGNo
aWxkKTsKQEAgLTExNzk2LDcgKzExNzk2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
IHZvaWQgY29tcGlsZUlzQ29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHZh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgc2V0Qm9vbGVhbih2
bUNhbGwoSW50MzIsIG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIHZhbHVlKSk7CiAgICAgfQpAQCAtMTE4NDIsNyArMTE4NDIsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQogICAgIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluQnlWYWwsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICB9CiAKQEAgLTExOTEwLDcgKzExOTEwLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBudWxscHRyOwpAQCAtMTIwMTQsNyArMTIwMTQs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZVBhcnNlSW50KCkKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKTsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkp
IHsKICAgICAgICAgICAgIExWYWx1ZSByYWRpeCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OwpAQCAtMTIxNzcsNyArMTIxNzcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgY29uc3Ry
dWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5z
dGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwpAQCAtMTIyMTAsNyArMTIyMTAs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQgY29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93
SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgQXJyYXlNb2Rl
IG1vZGUgPSBtX25vZGUtPmFycmF5TW9kZSgpOwpAQCAtMTIzNDUsNyArMTIzNDUsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlSGFzR2VuZXJpY1Byb3BlcnR5KCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkhhc0dlbmVyaWNQ
cm9wZXJ0eSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHkpKTsKQEAg
LTEyMzU0LDcgKzEyMzU0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgU2xvd1BhdGhDYWxsPgogICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3Bl
cnR5SW1wbChMVmFsdWUgYmFzZSwgU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCkKICAgICB7Ci0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgTFZhbHVlIGVudW1lcmF0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQzKCkpOwog
CkBAIC0xMjQwNSw3ICsxMjQwNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RQbmFtZSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVl
IHByb3BlcnR5ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOwogICAg
ICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MikpOwpAQCAtMTI0NTgsNyArMTI0NTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
dm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKCkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQogICAgICAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGws
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSkpKTsK
ICAgICAgICAgZWxzZQpAQCAtMTI1MTksNyArMTI1MTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgIAogICAgIHZvaWQgY29tcGlsZVRvSW5kZXhTdHJpbmcoKQogICAgIHsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBpbmRleCkpOwogICAgIH0KQEAgLTEyODQyLDcgKzEyODQyLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJs
ZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwotICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3Ry
dWN0dXJlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHNs
b3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTEyOTkzLDcgKzEyOTkzLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhuZWVkVHJhcEhhbmRsaW5nLCBjb250aW51YXRpb24pOwogCiAgICAgICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgIGxhenlTbG93UGF0aCgKICAgICAgICAgICAgIFs9LCAmdm1d
IChjb25zdCBWZWN0b3I8TG9jYXRpb24+JikgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJh
dG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZt
LCBvcGVyYXRpb25IYW5kbGVUcmFwcywgSW52YWxpZEdQUlJlZywgZ2xvYmFsT2JqZWN0KTsKQEAg
LTEzMDgyLDcgKzEzMDgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZU5ld1JlZ2V4cCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBGcm96ZW5WYWx1ZSogcmVnZXhwID0g
bV9ub2RlLT5jZWxsT3BlcmFuZCgpOwogICAgICAgICBMVmFsdWUgbGFzdEluZGV4ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5p
bmhlcml0czxSZWdFeHA+KHZtKCkpKTsKQEAgLTEzMTE4LDE0ICsxMzExOCwxNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKCkKICAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksCiAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlU3RyaW5nUmVwbGFjZSgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG1fbm9k
ZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewpAQCAtMTMyMDcsNyArMTMyMDcs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgcGFja2V0ID0gZW5zdXJl
U2hhZG93Q2hpY2tlblBhY2tldCgpOwogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0g
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZENvZGVPcmlnaW4obV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkQ29kZU9yaWdp
bihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0ciht
X2NhbGxGcmFtZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsK
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGlu
dHB0cl90PihTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXIoKSkpLCBwYWNrZXQsIG1f
aGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKQEAgLTEzMjc5LDEyICsxMzI3OSwx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIEFyZ3VtZW50c0xlbmd0aCBnZXRB
cmd1bWVudHNMZW5ndGgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c0xlbmd0
aChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKSk7CisgICAgICAgIHJl
dHVybiBnZXRBcmd1bWVudHNMZW5ndGgobV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KCkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgZ2V0Q3VycmVudENhbGxlZSgpCiAgICAgewot
ICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBmcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGZy
YW1lID0gbV9vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAg
IGlmIChmcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQu
bG9hZFB0cihhZGRyZXNzRm9yKGZyYW1lLT5jYWxsZWVSZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSkpOwogICAgICAgICAgICAgcmV0dXJuIHdlYWtQb2ludGVyKGZyYW1lLT5jYWxsZWVSZWNvdmVy
eS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKQEAgLTEzMzAwLDcgKzEzMzAwLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAKICAgICBMVmFsdWUgZ2V0QXJndW1lbnRzU3RhcnQoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c1N0YXJ0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50c1N0YXJ0KG1f
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpKTsKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTEzNzU3LDcgKzEzNzU3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgQ19KSVRPcGVyYXRpb25fQl9HSnNzSnNzIHN0cmluZ0Z1bmN0
aW9uLAogICAgICAgICBTX0pJVE9wZXJhdGlvbl9HSkogZmFsbGJhY2tGdW5jdGlvbikKICAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpIHsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKQEAgLTEz
ODE1LDcgKzEzODE1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGls
ZVN0cmluZ1NsaWNlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGxlbmd0aENoZWNr
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGVtcHR5Q2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEVtcHR5Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC0xMzkwMSw3ICsxMzkwMSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICB2b2lkIGNvbXBpbGVUb0xvd2VyQ2FzZSgpCiAgICAgewotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBM
QmFzaWNCbG9jayBub3RSb3BlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgaXM4Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbG9vcFRv
cCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xMzk2NCw3ICsxMzk2NCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IHRydWU7
CiAgICAgICAgIH0KIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZt
Q2FsbChwb2ludGVyVHlwZSgpLCB2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50
MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50MzJUb1N0cmluZywgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xMzk4Miw3ICsxMzk4Miw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
Q29uc3RhbnQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgp
KSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOwpAQCAt
MTQwMDAsMTQgKzE0MDAwLDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNv
bXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9u
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFs
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X291dC5jb25zdEludFB0cih1aWQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVzb2x2
ZVNjb3BlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25SZXNvbHZlU2NvcGUsCiAg
ICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpKSk7CkBAIC0xNDAxNSw3ICsxNDAxNSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVHZXREeW5hbWljVmFyKCkK
ICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0RHluYW1pY1ZhciwKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNv
bnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7
CkBAIC0xNDAyMyw3ICsxNDAyMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lk
IGNvbXBpbGVQdXREeW5hbWljVmFyKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCldOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1
dEluZm8oKSkpKTsKQEAgLTE0MTU2LDcgKzE0MTU2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJlKCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGgg
dGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCkBAIC0xNDIxNyw3ICsxNDIxNyw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZ2V0dGVyIGRvZXMgbm90IGhh
dmUgY29kZSBzZXR0aW5nIHRvcENhbGxGcmFtZSwgQXMgaXMgdGhlIHNhbWUgdG8gSUMsIHdlIHNo
b3VsZCBzZXQgdG9wQ2FsbEZyYW1lIGluIGNhbGxlciBzaWRlLgogICAgICAgICAgICAgLy8gRklY
TUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxs
RnJhbWUpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAgdm1DYWxs
KEludDY0LCBiaXR3aXNlX2Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21HZXR0ZXI+KG1f
bm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIucmV0YWdnZWRF
eGVjdXRhYmxlQWRkcmVzczxDRnVuY3Rpb25QdHJUYWc+KCkpLApAQCAtMTQ3NDksMTEgKzE0NzQ5
LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGlmICghT3B0aW9uczo6cmV0dXJu
RWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9ncmFwaC5iYXNlbGlu
ZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFiYXNlbGluZUNvZGVCbG9jay0+bG9vcEhpbnRz
QXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4oKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG1fb3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOwogICAgICAgICBWTSogdm0gPSAm
dGhpcy0+dm0oKTsKICAgICAgICAgdWludDY0X3QqIHB0ciA9IHZtLT5nZXRMb29wSGludEV4ZWN1
dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOwpAQCAtMTQ4NjcsNyArMTQ4NjcsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludEZ1bmN0b3I+CiAgICAgdm9p
ZCBnZW5lcmljSlNWYWx1ZUNvbXBhcmUoY29uc3QgSW50RnVuY3RvciYgaW50RnVuY3RvciwgU19K
SVRPcGVyYXRpb25fR0pKIGhlbHBlckZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTQ4OTgsNyArMTQ4OTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
CiAgICAgTFZhbHVlIHN0cmluZ3NFcXVhbChMVmFsdWUgbGVmdEpTU3RyaW5nLCBMVmFsdWUgcmln
aHRKU1N0cmluZywgRWRnZSBsZWZ0SlNTdHJpbmdFZGdlID0gRWRnZSgpLCBFZGdlIHJpZ2h0SlNT
dHJpbmdFZGdlID0gRWRnZSgpKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJp
dmlhbGx5VW5lcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9j
ayBub3RFbXB0eUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBs
ZWZ0UmVhZHlDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1NDY5LDcgKzE1NDY5LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlSlNBcnJheShM
VmFsdWUgcHVibGljTGVuZ3RoLCBMVmFsdWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgc3RydWN0dXJl
LCBMVmFsdWUgaW5kZXhpbmdUeXBlLCBib29sIHNob3VsZEluaXRpYWxpemVFbGVtZW50cyA9IHRy
dWUsIGJvb2wgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVhdGVBcnJheVN0b3JhZ2UgPSB0cnVlKQog
ICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgTEJhc2ljQmxvY2sgZmFzdENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBsYXJnZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICBMQmFzaWNCbG9jayBmYWlsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xNTc1OSw3
ICsxNTc1OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obWFzcXVlcmFkZXNDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpc1RydXRoeU9iamVjdCA9IG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLAorICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkUHRyKGxvYWRTdHJ1Y3R1cmUodmFsdWUpLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFu
Y2hvcihpc1RydXRoeU9iamVjdCkpOwpAQCAtMTU4NzIsNyArMTU4NzIsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKSksCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpKSkpOwog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICB9CkBAIC0xNTkw
OSw3ICsxNTkwOSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIEZ1bmN0aW9uVHlw
ZSBzbG93UGF0aEZ1bmN0aW9uLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHN0b3JhZ2UsIExWYWx1ZSBp
bmRleCwgTFZhbHVlIHZhbHVlLAogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24pCiAg
ICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RJbkJvdW5kc0Nhc2UgPQogICAgICAgICAgICAg
ICAgIG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xNjMwOSw3ICsxNjMwOSw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIC8vIGJsb2NrcyB3ZSB3YW50IHRvIGp1bXAgdG8sIGFuZCB0aGVu
IHJlcXVlc3QgdGhlaXIgYWRkcmVzc2VzIGFmdGVyIGNvbXBpbGF0aW9uIGNvbXBsZXRlcy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM2OQog
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgYnJhbmNoT2Zmc2V0ID0gdm1DYWxsKAogICAg
ICAgICAgICAgSW50MzIsIG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNldCwK
QEAgLTE2Mzg5LDcgKzE2Mzg5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgYnVpbGRUeXBlT2YoRWRnZSBjaGlsZCwgTFZh
bHVlIHZhbHVlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBicmFuY2hpbmcgc3RydWN0dXJlOgog
ICAgICAgICAvLwpAQCAtMTY4NTAsNyArMTY4NTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBsYXp5
U2xvd1BhdGgoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgVmVjdG9yPExWYWx1ZT4mIHVz
ZXJBcmd1bWVudHMpCiAgICAgewotICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbiA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljOworICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2luLnNl
bWFudGljOwogICAgICAgICAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBtX291
dC5wYXRjaHBvaW50KEIzOjpJbnQ2NCk7CiAgICAgICAgIGZvciAoTFZhbHVlIGFyZyA6IHVzZXJB
cmd1bWVudHMpCkBAIC0xODY5OCw3ICsxODY5OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
bV9vcmlnaW4uc2VtYW50aWMpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgbG9hZENlbGxTdGF0
ZShMVmFsdWUgYmFzZSkKQEAgLTE4ODYzLDcgKzE4ODYzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpIGNv
bnN0CiAgICAgewotICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbV9vcmlnaW4uc2Vt
YW50aWM7CiAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVy
CiAgICAgICAgICAgICB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxWYXJhcmdzSW5saW5lZENh
bGxlcgogICAgICAgICAgICAgfHwgbV9ub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3NJbmxpbmVkQ2FsbGVyCkBAIC0xODg4MSw3ICsxODg4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgCiAgICAgdm9pZCBjYWxsQ2hlY2soKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkgewogI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERS
RVNTKSB8fCBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxs
RnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOwpAQCAtMTg5ODAsNyAr
MTg5ODAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIGlmICghaXNFeGNlcHRp
b25IYW5kbGVyCiAgICAgICAgICAgICAmJiBPcHRpb25zOjp1c2VPU1JFeGl0RnV6eigpCi0gICAg
ICAgICAgICAmJiBjYW5Vc2VPU1JFeGl0RnV6emluZyhtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICYmIGNhblVzZU9TUkV4
aXRGdXp6aW5nKG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMp
KQogICAgICAgICAgICAgJiYgZG9PU1JFeGl0RnV6emluZygpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbnVtYmVyT2ZGdXp6Q2hlY2tzID0gbV9vdXQuYWRkKAogICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMihtX291dC5hYnNvbHV0ZSgmZ19udW1iZXJPZk9TUkV4aXRGdXp6Q2hlY2tzKSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IDNiODZjMzNmOTljNWIzNzgwZjg1MWI5ZjZlZTcwYjNmODky
Mzc4MzQuLjEyMjZmODRiNDYxZDA1NmE1YzNkZjgyZjFlMDBmMTdhZGRhMTUxNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1h
bmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAg
ICBPcHRpb25zOjpmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXQoKSB8fCBPcHRpb25zOjpm
aXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVyKCk7CiAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enooKSAmJiAoIWZpcmVBdEVuYWJsZWQgfHwg
T3B0aW9uczo6dmVyYm9zZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigpKSkKICAgICAgICAgICAg
IHByaW50ZigiSlNDIEVYRUNVVEFCTEUgQUxMT0NBVElPTiBGVVpaOiBlbmNvdW50ZXJlZCAldSBj
aGVja3MuXG4iLCBudW1iZXJPZkV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekNoZWNrcygpKTsKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZU9TUkV4aXRGdXp6KCkpIHsKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZU9TUkV4aXRGdXp6KCkgJiYgT3B0aW9uczo6dmVyYm9zZU9TUkV4aXRGdXp6KCkpIHsK
ICAgICAgICAgICAgIHByaW50ZigiSlNDIE9TUiBFWElUIEZVWlo6IGVuY291bnRlcmVkICV1IHN0
YXRpYyBjaGVja3MuXG4iLCBudW1iZXJPZlN0YXRpY09TUkV4aXRGdXp6Q2hlY2tzKCkpOwogICAg
ICAgICAgICAgcHJpbnRmKCJKU0MgT1NSIEVYSVQgRlVaWjogZW5jb3VudGVyZWQgJXUgZHluYW1p
YyBjaGVja3MuXG4iLCBudW1iZXJPZk9TUkV4aXRGdXp6Q2hlY2tzKCkpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAyYzZiNTE4
MzE2ZmM0ZjMzMzRiNGYzNDQzYzdlNjRiNzBmNTZjMTFhLi5kYjhhNWZkNDFlNjI5NGY3YTRmYmRm
Y2IzOGJhNjczMzE5Mzg0NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTM5NSw2ICszOTUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJB
c3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIGZpcmVPU1JFeGl0
RnV6ekF0U3RhdGljLCAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBmaXJl
T1NSRXhpdEZ1enpBdCwgMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgZmly
ZU9TUkV4aXRGdXp6QXRPckFmdGVyLCAwLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2ws
IHZlcmJvc2VPU1JFeGl0RnV6eiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAg
IHYoVW5zaWduZWQsIHNlZWRPZlZNUmFuZG9tRm9yRnV6emVyLCAwLCBOb3JtYWwsICIwIG1lYW5z
IG5vdCBmdXp6aW5nIHRoaXM7IHVzZSBhIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBzZWVkIikg
XAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA4YTRmOWJlMjFjNWFhYjZkMWFhYmQwMDVkODJmZjczNDBhMmNhMGFlLi45MTMw
NTgwODNjMzQ3MTM4YmU2MTI2YWEyZDYzMzgzZDdkY2M3NzBiIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIw
LTA4LTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gRlRMIHNob3VsZCB1c2UgbV9vcmlnaW4gaW5zdGVhZCBvZiBtX25vZGUtPm9yaWdpbiBzaW5j
ZSBtX25vZGUgY2FuIGJlIG51bGxwdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTgzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3RyZXNzL2Z0bC1lbnRyeS1vc3ItZXhpdC1oYXMtbnVsbHB0ci1u
b2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMjAtMDgtMjUgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJy
b3IgZm9yIG9iamVjdCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZnRsLWVudHJ5LW9zci1leGl0LWhhcy1udWxscHRyLW5vZGUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9mdGwtZW50cnktb3NyLWV4aXQtaGFzLW51bGxwdHItbm9kZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lODc5OTU5ZjdiOTExY2ZlZmZhMzUzMDE4ODA4MzAxYjM4NmRmN2E3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLWVudHJ5LW9zci1leGl0LWhhcy1udWxs
cHRyLW5vZGUuanMKQEAgLTAsMCArMSw2IEBACisvL0AgcnVuRGVmYXVsdCgiLS1mb3JjZURlYnVn
Z2VyQnl0ZWNvZGVHZW5lcmF0aW9uPTEiLCAiLS11c2VPU1JFeGl0RnV6ej0xIiwgIi0td2F0Y2hk
b2c9NTAwIiwgIi0td2F0Y2hkb2ctZXhjZXB0aW9uLW9rIiwgIi0tdmVyYm9zZU9TUkV4aXRGdXp6
PTAiKQorZnVuY3Rpb24gZm9vKGEwKSB7CisgIHdoaWxlICgxKSB7fQorfQorCitmb28oMCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>