<?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>233028</bug_id>
          
          <creation_ts>2021-11-11 21:34:14 -0800</creation_ts>
          <short_desc>Refactor allocateCell() and tryAllocateCell() to take VM&amp; instead of Heap&amp;.</short_desc>
          <delta_ts>2021-11-12 10:17:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814345</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 21:34:14 -0800</bug_when>
    <thetext>allocateCell() and tryAllocateCell() can fetch Heap&amp; from VM&amp; themselves.  This allows us to make all the client code more terse, and also makes it easier to redirect the underlying heap to allocate from later for global GC work.  Additionally, this will help make the global GC patch less of a mega patch and easier to review later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814346</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 21:34:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/85329680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814347</commentid>
    <comment_count>2</comment_count>
      <attachid>444042</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 21:42:32 -0800</bug_when>
    <thetext>Created attachment 444042
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814350</commentid>
    <comment_count>3</comment_count>
      <attachid>444045</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 22:06:00 -0800</bug_when>
    <thetext>Created attachment 444045
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814357</commentid>
    <comment_count>4</comment_count>
      <attachid>444049</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 22:46:06 -0800</bug_when>
    <thetext>Created attachment 444049
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814369</commentid>
    <comment_count>5</comment_count>
      <attachid>444049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-12 01:01:16 -0800</bug_when>
    <thetext>Comment on attachment 444049
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814506</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-12 10:12:09 -0800</bug_when>
    <thetext>The mac-wk1 EWS failed tests is due to a known flaky crash on that test fast/dom/Geolocation/cached-position-iframe.html.  Hence, it&apos;s not related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814508</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-12 10:17:39 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r285730: &lt;http://trac.webkit.org/r285730&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444042</attachid>
            <date>2021-11-11 21:42:32 -0800</date>
            <delta_ts>2021-11-11 22:48:59 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233028.patch</filename>
            <type>text/plain</type>
            <size>344743</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3OSBA
QAorMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgYWxsb2NhdGVDZWxsKCkgYW5kIHRyeUFsbG9jYXRlQ2VsbCgpIHRvIHRha2UgVk0m
IGluc3RlYWQgb2YgSGVhcCYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMjgKKyAgICAgICAgcmRhcjovLzg1MzI5NjgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWxsb2NhdGVDZWxsKCkgYW5kIHRy
eUFsbG9jYXRlQ2VsbCgpIGNhbiBmZXRjaCBIZWFwJiBmcm9tIFZNJiB0aGVtc2VsdmVzLiAgVGhp
cworICAgICAgICBhbGxvd3MgdXMgdG8gbWFrZSBhbGwgdGhlIGNsaWVudCBjb2RlIG1vcmUgdGVy
c2UsIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgICByZWRpcmVjdCB0aGUgdW5k
ZXJseWluZyBoZWFwIHRvIGFsbG9jYXRlIGZyb20gbGF0ZXIgZm9yIGdsb2JhbCBHQyB3b3JrLgor
ICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgd2lsbCBoZWxwIG1ha2UgdGhlIGdsb2JhbCBHQyBw
YXRjaCBsZXNzIG9mIGEgbWVnYSBwYXRjaCBhbmQKKyAgICAgICAgZWFzaWVyIHRvIHJldmlldyBs
YXRlci4KKworICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIEFQ
SS9KU0FQSVZhbHVlV3JhcHBlci5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD46OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFj
a0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suaDoK
KyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlw
dENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDTWVtb3J5Rm9vdHBy
aW50OjpjcmVhdGUpOgorICAgICAgICAoSlNGaWxlRGVzY3JpcHRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXN5bmNGcm9tU3luY0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QXRvbWljc09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9CaWdJbnRP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpCb29sZWFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVh
blByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZFByb2dyYW1Db2RlQmxvY2s6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZE1vZHVsZUNvZGVCbG9jazo6ZGVj
b2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRXZhbENvZGVCbG9jazo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25Db2RlQmxvY2s6OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29s
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50
cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgor
ICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
blJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHA6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bExpc3RGb3JtYXQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bExpc3RGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJ
dGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50c1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUl0ZXJhdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0
aWFsVmFsdWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9KU0FzeW5jR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpj
cmVhdGVXaXRoTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmFsbG9jYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OnRyeUFsbG9jYXRl
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0N1c3Rv
bVNldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5j
cHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlld1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnku
Y3BwOgorICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0NsYXNzPjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlPFZpZXdDbGFzcz46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSk6CisgICAgICAgICog
cnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTSW50ZXJuYWxQcm9t
aXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJ
bnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
YXA6OmNsb25lKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmg6CisgICAgICAgICogcnVudGlt
ZS9KU01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6Y3JlYXRl
V2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNl
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZXQ6OmNsb25lKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2V0Lmg6CisgICAgICAgICogcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNTZXRJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTb3VyY2VDb2Rl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3Ry
aW5nOjpjcmVhdGVFbXB0eVN0cmluZyk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3Ry
aW5nOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25l
cik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA6CisgICAgICAgIChKU0M6OkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmg6CisgICAgICAgICogcnVudGltZS9KU1dlYWtTZXQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTV2l0aFNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXaXRo
U2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL051bGxH
ZXR0ZXJGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlUYWJsZTo6Y2xvbmUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlS
ZXZva2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1JlZmxlY3RPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU2NvcGVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzVGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlNjb3BlZEFyZ3VtZW50c1RhYmxlOjp0cnlDcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1No
YWRvd1JlYWxtT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJz
ZUFycmF5VmFsdWVNYXA6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3ltYm9sT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2w6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlN5bWJvbDo6Y3JlYXRlV2l0aERlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXIuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxJbnN0YW50LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsTm93LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxOb3c6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3Bw
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KToK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dl
YWtTZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5o
OgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pT
VG9XYXNtSUNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpKU1RvV2FzbUlDQ2FsbGVlOjpjcmVh
dGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHk6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlFeGNlcHRpb24uaDoKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5R2xvYmFsOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjp0
cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseU1vZHVsZTo6Y3JlYXRlU3R1Yik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OnRyeUNyZWF0ZSk6
CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseVRhZzo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUV4
Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlUYWdQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUpOgorCiAyMDIxLTExLTExICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVk06OndyaXRlQmFycmllcigpIGFuZCBW
TTo6bXV0YXRvckZlbmNlKCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwMCw3ICs1MDAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
Z3VtZW50cykKICAgICB7Ci0gICAgICAgIEdsb2JhbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgR2xvYmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBHbG9iYWxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4odm0pKSBHbG9iYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0NNZW1vcnlGb290cHJpbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAg
IEpTQ01lbW9yeUZvb3RwcmludCogZm9vdHByaW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDTWVtb3J5Rm9vdHByaW50Pih2bS5oZWFwKSkgSlNDTWVtb3J5Rm9vdHByaW50KHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU0NNZW1vcnlGb290cHJpbnQqIGZvb3RwcmludCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ01lbW9yeUZvb3RwcmludD4odm0pKSBKU0NNZW1vcnlG
b290cHJpbnQodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGZvb3RwcmludC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gZm9vdHByaW50OwogICAgIH0KQEAgLTE3NzMsNyArMTc3
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNGaWxlRGVzY3JpcHRvciogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRklMRSomJiBkZXNjcmlwdG9yKQogICAg
IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBhdXRvKiBmaWxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNGaWxlRGVzY3JpcHRvcj4odm0uaGVhcCkpIEpTRmlsZURlc2NyaXB0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGF1dG8qIGZpbGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0ZpbGVEZXNjcmlwdG9yPih2bSkpIEpTRmlsZURlc2NyaXB0b3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIGZpbGUtPmZpbmlzaENyZWF0aW9uKHZtLCBkZXNjcmlwdG9yKTsK
ICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
UmVnRXhwLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEdsb2JhbE9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVj
dD4odm0uaGVhcCkpIEdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOworICAg
ICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4odm0pKSBHbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYXJndW1l
bnRzKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQVBJ
R2xvYmFsT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJ
R2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNBUElHbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJ
R2xvYmFsT2JqZWN0Pih2bSkpIEpTQVBJR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJVmFsdWVXcmFwcGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVZhbHVlV3Jh
cHBlci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QVBJVmFsdWVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU0FQSVZhbHVlV3JhcHBlciogY3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKiB3cmFwcGVyID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNBUElWYWx1ZVdyYXBwZXI+KHZtLmhlYXApKSBKU0FQSVZhbHVlV3JhcHBl
cih2bSk7CisgICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKiB3cmFwcGVyID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBUElWYWx1ZVdyYXBwZXI+KHZtKSkgSlNBUElWYWx1ZVdyYXBwZXIo
dm0pOwogICAgICAgICB3cmFwcGVyLT5maW5pc2hDcmVhdGlvbih2bSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwotICAgICAgICBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2bS5oZWFw
KSkgSlNDYWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1Jl
ZiwgY2FsbGJhY2spOworICAgICAgICBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2bSkp
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYs
IGNhbGxiYWNrKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdCwgY2xhc3NSZWYpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBKU0NhbGxiYWNrRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKAogSlNDYWxsYmFja0Z1bmN0
aW9uKiBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgSlNDYWxsYmFja0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlv
bj4odm0uaGVhcCkpIEpTQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsYmFjayk7
CisgICAgSlNDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4odm0pKSBKU0NhbGxiYWNrRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgY2FsbGJhY2spOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgbmFt
ZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsNyArMTAyLDcgQEAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgSlNDYWxsYmFj
a09iagogdGVtcGxhdGU8PgogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoVk0mIHZtLCBKU0NsYXNzUmVmIGNs
YXNzUmVmLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4odm0uaGVhcCkpIEpTQ2FsbGJhY2tP
YmplY3Qodm0sIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+KiBjYWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Pih2bSkpIEpTQ2FsbGJhY2tPYmplY3Qo
dm0sIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwogICAgIGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIGNhbGxiYWNrT2JqZWN0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmpl
Y3QsICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpIHx8IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0
KCkgPT0gZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tP
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0Pih2bS5o
ZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYs
IGRhdGEpOworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiBjYWxsYmFja09iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KHZtKSkgSlNDYWxsYmFja09i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYsIGRhdGEpOwogICAgICAgICBj
YWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrT2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU1OSw3ICs1NTksNyBAQCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6T2JqQ0Nh
bGxiYWNrRnVuY3RpCiBPYmpDQ2FsbGJhY2tGdW5jdGlvbiogT2JqQ0NhbGxiYWNrRnVuY3Rpb246
OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxPYmpDQ2FsbGJhY2tGdW5jdGlvbklt
cGw+IGltcGwpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9i
amNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ0NhbGxiYWNrRnVuY3Rp
b24+KHZtLmhlYXApKSBPYmpDQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Nv
bnN0cnVjdG9yLCBXVEZNb3ZlKGltcGwpKTsKKyAgICBPYmpDQ2FsbGJhY2tGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
dm0pKSBPYmpDQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBvYmpDQ2FsbGJhY2tGdW5j
dGlvbkNhbGxBc0Z1bmN0aW9uLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0NvbnN0cnVjdG9y
LCBXVEZNb3ZlKGltcGwpKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIDAsIG5h
bWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJv
biBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRl
KFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKICAgICB7
Ci0gICAgICAgIEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIEV2YWxDb2RlQmxvY2sqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0pKQog
ICAgICAgICAgICAgRXZhbENvZGVCbG9jayh2bSwgdm0uZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5n
ZXQoKSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hD
cmVhdGlvbih2bSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxv
Y2sqIGNyZWF0ZShWTSYgdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAg
IHsKLSAgICAgICAgRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS5oZWFwKSkKKyAgICAgICAgRXZhbENvZGVCbG9jayog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bSkp
CiAgICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS5ldmFsQ29kZUJsb2NrU3RydWN0dXJl
LmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSk7CiAgICAg
ICAgIGlmICghaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBTdHJ1Y3R1cmUqIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OmNyCiAKIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmNyZWF0ZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmhlYXApKSBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlKHZtLCBjb2RlQmxvY2spOworICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+KHZtKSkgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSh2bSwgY29kZUJsb2NrKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmlj
aEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCiAgICAgewotICAgICAgICBG
dW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkNvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2
bSkpCiAgICAgICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0uZnVuY3Rpb25Db2RlQmxv
Y2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2
bS5oZWFwKSkKKyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKHZtLCB2bS5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwg
b3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAo
IWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6
d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCiAg
ICAgewotICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQorICAg
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLm1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUu
Z2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4odm0pKQogICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0ubW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVy
b24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNy
ZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIp
CiAgICAgewotICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQorICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dy
YW1Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLnBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwog
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3Ro
ZXIpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBQcm9ncmFtRXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVC
bG9jaz4odm0uaGVhcCkpCisgICAgICAgIFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVCbG9jaz4odm0pKQogICAgICAgICAg
ICAgUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0ucHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQo
KSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBp
ZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRXZhbENv
ZGVCbG9jay5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0
ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5r
ZWRFdmFsQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5rZWRFdmFsQ29kZUJsb2NrKHZtLCB2bS51
bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9u
TW9kZSk7CisgICAgICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtKSkgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCks
IGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBjcmVhdGUoVk0mIHZtLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUlu
Zm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4odm0u
aGVhcCkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLnVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGNvZGVUeXBlLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1v
ZGUpOworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KHZtKSkgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0
cnVjdHVyZS5nZXQoKSwgY29kZVR5cGUsIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0g
ZmFsc2UpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0uaGVhcCkpCisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Pih2bSkpCiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5s
aW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3Ip
OwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgICAgIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtKSkgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewot
ICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgICAgIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtKSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKHZtLCB2
bS51bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5l
cmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIERlYnVnZ2VyU2NvcGU6OnNf
aW5mbyA9IAogRGVidWdnZXJTY29wZSogRGVidWdnZXJTY29wZTo6Y3JlYXRlKFZNJiB2bSwgSlNT
Y29wZSogc2NvcGUpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzY29wZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+ZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpOwotICAgIERlYnVnZ2VyU2NvcGUq
IGRlYnVnZ2VyU2NvcGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEZWJ1Z2dlclNjb3Bl
Pih2bS5oZWFwKSkgRGVidWdnZXJTY29wZSh2bSwgc3RydWN0dXJlLCBzY29wZSk7CisgICAgRGVi
dWdnZXJTY29wZSogZGVidWdnZXJTY29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERl
YnVnZ2VyU2NvcGU+KHZtKSkgRGVidWdnZXJTY29wZSh2bSwgc3RydWN0dXJlLCBzY29wZSk7CiAg
ICAgZGVidWdnZXJTY29wZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBkZWJ1Z2dl
clNjb3BlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNJbmplY3Rl
ZFNjcmlwdEhvc3QqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNJbmpl
Y3RlZFNjcmlwdEhvc3QqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU0luamVjdGVkU2NyaXB0SG9zdD4odm0uaGVhcCkpIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU0luamVjdGVkU2NyaXB0SG9z
dCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0Pih2bSkpIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZT4odm0pKSBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTSmF2
YVNjcmlwdENhbGxGcmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWY8SmF2YVNjcmlwdENhbGxGcmFtZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPih2bS5oZWFwKSkgSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U0phdmFTY3JpcHRDYWxsRnJhbWU+KHZtKSkgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGU+KHZtLmhl
YXApKSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZT4odm0pKSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5
cGUpCiAgICAgewotICAgICAgICBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I+KHZtKSkgQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIEFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRl
RXJyb3JQcm90b3R5cGU+KHZtKSkgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXJyYXlDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVz
U3ltYm9sKQogICAgIHsKLSAgICAgICAgQXJyYXlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQXJy
YXlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXJyYXlDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9y
Pih2bSkpIEFycmF5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBhcnJheVByb3RvdHlwZSwgc3Bl
Y2llc1N5bWJvbCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlJdGVyYXRvclByb3RvdHlwZT4odm0u
aGVhcCkpIEFycmF5SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEFycmF5SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgQXJyYXlJdGVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAg
LTYxLDcgKzYxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPQog
CiBBcnJheVByb3RvdHlwZSogQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFycmF5
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheVBy
b3RvdHlwZT4odm0uaGVhcCkpIEFycmF5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFy
cmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJh
eVByb3RvdHlwZT4odm0pKSBBcnJheVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90
b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBwcm90
b3R5cGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWls
LmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1Niw3IEBAIHZv
aWQgQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW4KIAogQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBBc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBwcm90b3R5cGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29t
Pi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzQwLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUpCiAgICAgewotICAgICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yPih2bSkpIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5
bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXN5bmNGdW5j
dGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5
bmNGdW5jdGlvblByb3RvdHlwZT4odm0pKSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtv
diA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0pKSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxn
c2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0
LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0u
aGVhcCkpIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZt
KSkgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5l
cmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVr
c2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5
bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBBc3luY0dlbmVyYXRvclByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBBc3luY0dlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlPih2bSkpIEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNo
a292QGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBB
c3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBBdG9taWNzT2JqZWN0OjpB
dG9taWNzT2JqZWN0KFZNJiB2bSwgU3RyCiAKIEF0b21pY3NPYmplY3QqIEF0b21pY3NPYmplY3Q6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewotICAgIEF0b21pY3NPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEF0b21pY3NPYmplY3Q+KHZtLmhlYXApKSBBdG9taWNzT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIEF0b21pY3NPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEF0b21pY3NPYmplY3Q+KHZtKSkgQXRvbWljc09iamVjdCh2bSwgc3RydWN0dXJl
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEJpZ0ludENvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmlnSW50UHJvdG90eXBlKiBiaWdJ
bnRQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBCaWdJbnRDb25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRDb25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEJpZ0ludENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBCaWdJbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxCaWdJbnRDb25zdHJ1Y3Rvcj4odm0pKSBCaWdJbnRDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnRQ
cm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gQmln
SW50T2JqZWN0OjpzX2luZm8gPSB7CiBCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7
CiAgICAgQVNTRVJUKGJpZ0ludC5pc0JpZ0ludCgpKTsKLSAgICBCaWdJbnRPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJp
Z0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7Cisg
ICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJ
bnRPYmplY3Q+KHZtKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVj
dFN0cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgQmlnSW50UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRQcm90b3R5cGU+KHZtLmhlYXApKSBCaWdJbnRQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEJpZ0ludFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50UHJvdG90eXBlPih2bSkpIEJp
Z0ludFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBl
LCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEJvb2xlYW5Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQm9v
bGVhbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEJvb2xlYW5Db25zdHJ1Y3Rvcj4odm0pKSBCb29sZWFuQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYm9vbGVhblByb3Rv
dHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBCb29sZWFuT2JqZWN0KiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEJvb2xl
YW5PYmplY3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuT2Jq
ZWN0Pih2bS5oZWFwKSkgQm9vbGVhbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQm9v
bGVhbk9iamVjdCogYm9vbGVhbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJvb2xlYW5P
YmplY3Q+KHZtKSkgQm9vbGVhbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgYm9vbGVh
bi0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gYm9vbGVhbjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQm9v
bGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9v
bGVhblByb3RvdHlwZT4odm0uaGVhcCkpIEJvb2xlYW5Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEJvb2xlYW5Qcm90b3R5cGU+KHZtKSkgQm9vbGVhblByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVj
dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgQnJhbmRlZFN0cnVjdHVy
ZTo6QnJhbmRlZFN0cnVjdHVyZShWTSYgdgogU3RydWN0dXJlKiBCcmFuZGVkU3RydWN0dXJlOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJh
bmRVaWQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJl
ZCkKIHsKICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBCcmFuZGVkU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVk
U3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5k
VWlkLCBkZWZlcnJlZCk7CisgICAgQnJhbmRlZFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0pKSBCcmFuZGVkU3Ry
dWN0dXJlKHZtLCBwcmV2aW91cywgYnJhbmRVaWQsIGRlZmVycmVkKTsKICAgICBuZXdTdHJ1Y3R1
cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2aW91cyk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+dHlwZSgpID09IFN0cnVjdHVyZVR5cGUpOwogICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNyArMTk5MCw3IEBAIHB1YmxpYzoKIAog
ICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CiAgICAgewotICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZGVj
b2Rlci52bSgpLmhlYXApKSBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMp
OworICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgp
KSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsKICAgICAgICAgY29k
ZUJsb2NrLT5maW5pc2hDcmVhdGlvbihkZWNvZGVyLnZtKCkpOwogICAgICAgICBCYXNlOjpkZWNv
ZGUoZGVjb2RlciwgKmNvZGVCbG9jayk7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zLmRlY29k
ZShkZWNvZGVyLCBjb2RlQmxvY2stPm1fdmFyRGVjbGFyYXRpb25zKTsKQEAgLTIwMTUsNyArMjAx
NSw3IEBAIHB1YmxpYzoKIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZGVj
b2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgpLmhlYXApKSBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMpOworICAgICAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgpKSkg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsKICAgICAgICAg
Y29kZUJsb2NrLT5maW5pc2hDcmVhdGlvbihkZWNvZGVyLnZtKCkpOwogICAgICAgICBCYXNlOjpk
ZWNvZGUoZGVjb2RlciwgKmNvZGVCbG9jayk7CiAgICAgICAgIGNvZGVCbG9jay0+bV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCA9IG1fbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQ7CkBAIC0yMDM5LDcgKzIw
MzksNyBAQCBwdWJsaWM6CiAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5saW5rZWRFdmFsQ29kZUJsb2NrKGRlY29kZXIs
ICp0aGlzKTsKKyAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KGRlY29kZXIudm0o
KSkpIFVubGlua2VkRXZhbENvZGVCbG9jayhkZWNvZGVyLCAqdGhpcyk7CiAgICAgICAgIGNvZGVC
bG9jay0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICAgICAgQmFzZTo6ZGVjb2Rl
KGRlY29kZXIsICpjb2RlQmxvY2spOwogICAgICAgICBtX3ZhcmlhYmxlcy5kZWNvZGUoZGVjb2Rl
ciwgY29kZUJsb2NrLT5tX3ZhcmlhYmxlcyk7CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCBwdWJsaWM6
CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayhkZWNvZGVy
LCAqdGhpcyk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KGRl
Y29kZXIudm0oKSkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMpOwog
ICAgICAgICBjb2RlQmxvY2stPmZpbmlzaENyZWF0aW9uKGRlY29kZXIudm0oKSk7CiAgICAgICAg
IEJhc2U6OmRlY29kZShkZWNvZGVyLCAqY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNvZGVC
bG9jazsKQEAgLTIyNDMsNyArMjI0Myw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGEKIAogQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QK
IHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihkZWNvZGVyLnZt
KCkuaGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGRlY29kZXIsICp0aGlzKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihkZWNvZGVyLnZtKCkpKSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShkZWNvZGVyLCAqdGhpcyk7CiAgICAgZXhlY3V0YWJs
ZS0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgfQogICAgIAog
ICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8Q2xvbmVkQXJndW1lbnRzPih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8Q2xvbmVkQXJndW1lbnRzPih2bSkpCiAgICAgICAgIENsb25lZEFyZ3Vt
ZW50cyh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIENvbnNvbGVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENv
bnNvbGVPYmplY3Q+KHZtLmhlYXApKSBDb25zb2xlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBDb25zb2xlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxD
b25zb2xlT2JqZWN0Pih2bSkpIENvbnNvbGVPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ3VzdG9tR2V0dGVyU2V0
dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0
ZXIgY3VzdG9tU2V0dGVyKQogICAgIHsKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0
b21HZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXJT
ZXR0ZXI+KHZtLmhlYXApKSBDdXN0b21HZXR0ZXJTZXR0ZXIodm0sIHZtLmN1c3RvbUdldHRlclNl
dHRlclN0cnVjdHVyZS5nZXQoKSwgY3VzdG9tR2V0dGVyLCBjdXN0b21TZXR0ZXIpOworICAgICAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEN1c3RvbUdldHRlclNldHRlcj4odm0pKSBDdXN0b21HZXR0ZXJTZXR0ZXIo
dm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSwgY3VzdG9tR2V0dGVyLCBj
dXN0b21TZXR0ZXIpOwogICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIq
IGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBj
dXN0b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQogICAgIHsK
LSAgICAgICAgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtLmhl
YXApKSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIodm0sIGN1c3RvbUdldHRlciwgY3VzdG9tU2V0
dGVyLCBkb21BdHRyaWJ1dGUpOworICAgICAgICBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGN1
c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcj4odm0pKSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIodm0sIGN1c3RvbUdl
dHRlciwgY3VzdG9tU2V0dGVyLCBkb21BdHRyaWJ1dGUpOwogICAgICAgICBjdXN0b21HZXR0ZXJT
ZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNl
dHRlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDcgKzM0LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIERhdGVDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUsIEdldHRlclNl
dHRlciopCiAgICAgewotICAgICAgICBEYXRlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRGF0ZUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBEYXRlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPih2bSkp
IERhdGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBkYXRlUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsMTQgKzQyLDE0IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBkb3VibGUgZGF0ZSkKICAgICB7Ci0gICAgICAgIERhdGVJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KHZtLmhlYXApKSBE
YXRlSW5zdGFuY2Uodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIERhdGVJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KHZtKSkgRGF0ZUlu
c3RhbmNlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGRhdGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCiAgICAgc3RhdGlj
IERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPih2bS5oZWFwKSkgRGF0ZUluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPih2bSkpIERhdGVJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBE
YXRlUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRl
UHJvdG90eXBlPih2bS5oZWFwKSkgRGF0ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgRGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RGF0ZVByb3RvdHlwZT4odm0pKSBEYXRlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBy
ZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBEaXJlY3RBcmd1bWVudHMqIERpcmVjdEFyZ3VtZW50czo6
Y3JlYXRlCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBjYXBhY2l0eSkKIHsKICAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEFyZ3VtZW50cz4odm0uaGVh
cCwgYWxsb2NhdGlvblNpemUoY2FwYWNpdHkpKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RGlyZWN0QXJndW1lbnRzPih2bSwgYWxsb2NhdGlvblNpemUoY2FwYWNpdHkpKSkK
ICAgICAgICAgRGlyZWN0QXJndW1lbnRzKHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgY2FwYWNpdHkp
OwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyAr
NDUsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFiCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVj
dEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0pKSBEaXJlY3RF
dmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBl
KiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAgICAgIEVycm9yQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGVycm9yUHJv
dG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXJyb3JJbnN0
YW5jZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNWYWx1ZSBjYXVzZSwgU291
cmNlQXBwZW5kZXIgYXBwZW5kZXIgPSBudWxscHRyLCBSdW50aW1lVHlwZSB0eXBlID0gVHlwZU5v
dGhpbmcsIEVycm9yVHlwZSBlcnJvclR5cGUgPSBFcnJvclR5cGU6OkVycm9yLCBib29sIHVzZUN1
cnJlbnRGcmFtZSA9IHRydWUpCiAgICAgewotICAgICAgICBFcnJvckluc3RhbmNlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KHZtLmhlYXApKSBF
cnJvckluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUsIGVycm9yVHlwZSk7CisgICAgICAgIEVycm9ySW5z
dGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5j
ZT4odm0pKSBFcnJvckluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUsIGVycm9yVHlwZSk7CiAgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBjYXVz
ZSwgYXBwZW5kZXIsIHR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90
eXBlPih2bS5oZWFwKSkgRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEVy
cm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJv
clByb3RvdHlwZT4odm0pKSBFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgIkVycm9yIl9zKTsKICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEV4Y2VwdGlvbjo6c19pbmZvID0geyAiRQogCiBFeGNlcHRpb24qIEV4
Y2VwdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB0aHJvd25WYWx1ZSwgU3RhY2tDYXB0dXJl
QWN0aW9uIGFjdGlvbikKIHsKLSAgICBFeGNlcHRpb24qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEV4Y2VwdGlvbj4odm0uaGVhcCkpIEV4Y2VwdGlvbih2bSk7CisgICAgRXhj
ZXB0aW9uKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFeGNlcHRpb24+KHZt
KSkgRXhjZXB0aW9uKHZtKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCB0aHJvd25W
YWx1ZSwgYWN0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAg
IHsKLSAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yPih2bSkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGU+KHZtKSkgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEZ1bmN0aW9uQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0p
KSBGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIGZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHVubGlua2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pCiAgICAgewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxl
LCBpbnRyaW5zaWMsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0
aW9uRXhlY3V0YWJsZT4odm0pKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5r
ZWRFeGVjdXRhYmxlLCBpbnRyaW5zaWMsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUpOwog
ICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBGdW5jdGlvblByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPih2bSkpIEZ1bmN0aW9u
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0
aW9uKHZtLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNv
bnN0IENsYXNzSW5mbyBGdW5jdGlvblJhcmVEYXRhOjpzX2luZm8KIAogRnVuY3Rpb25SYXJlRGF0
YSogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUpCiB7Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxGdW5jdGlvblJhcmVEYXRhPih2bS5oZWFwKSkgRnVuY3Rpb25SYXJlRGF0
YSh2bSwgZXhlY3V0YWJsZSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblJhcmVEYXRhPih2bSkpIEZ1bmN0aW9uUmFy
ZURhdGEodm0sIGV4ZWN1dGFibGUpOwogICAgIHJhcmVEYXRhLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIHJhcmVEYXRhOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDQsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0pKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtKSkgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0pKSBHZW5lcmF0b3JQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgR2V0dGVyU2V0
dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyKQogICAgIHsKLSAgICAgICAgR2V0dGVyU2V0dGVy
KiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+
KHZtLmhlYXApKSBHZXR0ZXJTZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIp
OworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEdldHRlclNldHRlcj4odm0pKSBHZXR0ZXJTZXR0ZXIodm0sIGdsb2JhbE9iamVj
dCwgZ2V0dGVyLCBzZXR0ZXIpOwogICAgICAgICBnZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlclNldHRlcjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEhhc2hNYXBCdWNr
ZXQqIGNyZWF0ZShWTSYgdm0pCiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0KiBidWNrZXQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxIYXNoTWFwQnVja2V0PERhdGE+Pih2bS5oZWFw
KSkgSGFzaE1hcEJ1Y2tldCh2bSwgc2VsZWN0U3RydWN0dXJlKHZtKSk7CisgICAgICAgIEhhc2hN
YXBCdWNrZXQqIGJ1Y2tldCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEhhc2hNYXBCdWNr
ZXQ8RGF0YT4+KHZtKSkgSGFzaE1hcEJ1Y2tldCh2bSwgc2VsZWN0U3RydWN0dXJlKHZtKSk7CiAg
ICAgICAgIGJ1Y2tldC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIWJ1Y2tl
dC0+bmV4dCgpKTsKICAgICAgICAgQVNTRVJUKCFidWNrZXQtPnByZXYoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcs
NyBAQCBpbmxpbmUgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlPih2bSkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBl
KTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDcgKzE3MSw3IEBAIEludGVybmFsRnVuY3Rpb24qIEludGVybmFsRnVuY3Rpb246OmNyZWEKIHsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIFR5cGVJbmZvKEludGVybmFs
RnVuY3Rpb25UeXBlLCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFncyB8IE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpLCBJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpOwogICAgIGdsb2JhbE9i
amVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxP
YmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdCIpOwotICAgIEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50ZXJu
YWxGdW5jdGlvbj4odm0uaGVhcCkpIEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgbmF0
aXZlRnVuY3Rpb24pOworICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50ZXJuYWxGdW5jdGlvbj4odm0pKSBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUsIG5hdGl2ZUZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGxlbmd0aCwgbmFtZSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCiBJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmb3JtYXQ7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykgMjAx
NSBTdWtvbHNhayBTYWtzaHV3b25nIChzdWtvbHNha0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yOgogCiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogSW50
bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlKQogewotICAgIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxDb2xsYXRvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yQ29uc3RydWN0
b3I+KHZtKSkgSW50bENvbGxhdG9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBjb2xsYXRvclByb3RvdHlwZSk7CiAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxDb2xsYXRvclByb3RvdHlwZTo6cwogCiBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIElu
dGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvclByb3RvdHlwZT4odm0uaGVh
cCkpIEludGxDb2xsYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xs
YXRvclByb3RvdHlwZT4odm0pKSBJbnRsQ29sbGF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBJbnRsRGF0
ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0
ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtKSkg
SW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBmb3JtYXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cgogCiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKQogewotICAgIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtKSkgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdFByb3RvdAogCiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGU+KHZtKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw3ICs0MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVzOjpz
X2luZm8KIAogSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxEaXNwbGF5
TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0pKSBJbnRsRGlzcGxheU5hbWVzKHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBv
YmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8g
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjCiAKIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvciog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBl
KQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yPih2bSkpIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cAogCiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2bSkpIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgVUxpc3RGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigp
KFUKIAogSW50bExpc3RGb3JtYXQqIEludGxMaXN0Rm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsTGlzdEZvcm1hdD4odm0uaGVhcCkpIEludGxMaXN0Rm9ybWF0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxMaXN0Rm9ybWF0Pih2bSkpIEludGxMaXN0Rm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlz
dEZvcm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3RvCiAKIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3IqIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTGlzdEZvcm1hdFBy
b3RvdHlwZSogbGlzdEZvcm1hdFByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3I+KHZt
LmhlYXApKSBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvcj4odm0pKSBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbGlzdEZvcm1hdFByb3Rv
dHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDcgKzUzLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlOgogCiBJbnRsTGlzdEZvcm1hdFBy
b3RvdHlwZSogSW50bExpc3RGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEludGxMaXN0Rm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bExpc3RGb3JtYXRQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bExpc3RGb3JtYXRQcm90b3R5cGU+KHZtKSkgSW50bExpc3RGb3Jt
YXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBJbnRs
TG9jYWxlKiBJbnRsTG9jYWxlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9j
YWxlPih2bS5oZWFwKSkgSW50bExvY2FsZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlPih2bSkpIEludGxMb2Nh
bGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVD
b25zdHJ1Y3Rvcjo6cwogCiBJbnRsTG9jYWxlQ29uc3RydWN0b3IqIEludGxMb2NhbGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxMb2NhbGVQcm90
b3R5cGUqIGxvY2FsZVByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMb2NhbGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxMb2NhbGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMb2NhbGVDb25zdHJ1Y3Rvcj4odm0p
KSBJbnRsTG9jYWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBsb2NhbGVQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTg3LDcgKzg4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaQog
CiBJbnRsTG9jYWxlUHJvdG90eXBlKiBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bExvY2Fs
ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlUHJvdG90eXBlPih2bSkpIEludGxMb2NhbGVQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKIAog
SW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1i
ZXJGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0pKSBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBmb3JtYXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQs
NyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdENvbnN0cnVjCiAKIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlKQogewotICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcj4odm0pKSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5
cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MSw3ICs2MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXAKIAog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkp
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0pKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5
QHZhbndhZ29uZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChDKSAyMDE1IFN1a29sc2FrIFNha3No
dXdvbmcgKHN1a29sc2FrQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjI5LDcgKzIyOSw3IEBAIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUK
IAogSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkp
IEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0pKSBJbnRsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVs
ZXRlcjx1CiAKIEludGxQbHVyYWxSdWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBJbnRsUGx1cmFsUnVsZXMqIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlcz4odm0uaGVhcCkpIElu
dGxQbHVyYWxSdWxlcyh2bSwgc3RydWN0dXJlKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIGZvcm1h
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlcz4odm0pKSBJbnRs
UGx1cmFsUnVsZXModm0sIHN0cnVjdHVyZSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQs
NyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0CiAKIEludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogcGx1
cmFsUnVsZXNQcm90b3R5cGUpCiB7Ci0gICAgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcj4odm0pKSBJ
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsdXJhbFJ1bGVzUHJvdG90eXBlKTsKICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZQogCiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUq
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU+KHZtKSkgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZvcm1hdEludGVybmFsCiAK
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTMsNyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvCiAKIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yPih2bSkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNyArNTQsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByCiAKIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGU+KHZtKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MCw3ICszOSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9yOjpzX2kKIAog
SW50bFNlZ21lbnRJdGVyYXRvciogSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJy
ZWFrSXRlcmF0b3JEZWxldGVyPiYmIHNlZ21lbnRlciwgQm94PFZlY3RvcjxVQ2hhcj4+IGJ1ZmZl
ciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bFNlZ21lbnRJdGVyYXRvcj4odm0uaGVhcCkpIEludGxTZWdtZW50SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKGJ1ZmZlciksIGdyYW51bGFyaXR5KTsK
KyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVu
dEl0ZXJhdG9yPih2bSkpIEludGxTZWdtZW50SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKGJ1ZmZlciksIGdyYW51bGFyaXR5KTsKICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtLCBzdHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDksNyArNDksNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvCiAKIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIEludGxTZWdtZW50
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxTZWdtZW50ZXI6OnNfaW5m
byA9IAogCiBJbnRsU2VnbWVudGVyKiBJbnRsU2VnbWVudGVyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsU2VnbWVudGVyPih2bSkpIEludGxTZWdtZW50ZXIodm0sIHN0cnVjdHVyZSk7CiAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IKIAog
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBz
ZWdtZW50ZXJQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I+
KHZtKSkgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc2VnbWVudGVyUHJvdG90eXBlKTsKICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNyArNTEsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNl
Z21lbnRlclByb3RvdHlwZTo6CiAKIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIEludGxTZWdtZW50
ZXJQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJQ
cm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudGVyUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdt
ZW50ZXJQcm90b3R5cGU+KHZtKSkgSW50bFNlZ21lbnRlclByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsU2VnbWVudHM6OnNfaW5mbyA9IHsKIAogSW50bFNlZ21lbnRzKiBJbnRsU2VnbWVudHM6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0
b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNlZ21lbnRlcjo6R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkgSW50bFNlZ21lbnRzKHZtLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0
eSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNl
Z21lbnRzPih2bSkpIEludGxTZWdtZW50cyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRl
ciksIFdURk1vdmUoYnVmZmVyKSwgZ3JhbnVsYXJpdHkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIHN0cmluZyk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudHNQcm90b3R5cGU6OnMKIAogSW50bFNlZ21lbnRzUHJv
dG90eXBlKiBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50c1Byb3RvdHlwZT4o
dm0uaGVhcCkpIEludGxTZWdtZW50c1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudHNQcm90b3R5
cGU+KHZtKSkgSW50bFNlZ21lbnRzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEl0ZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgSXRl
cmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0yODYsNyArMjg2LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0
ZShWTSYgdm0sIAogCiBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZs
eShWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBKU0FycmF5KiBhcnJheSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLmhlYXAsIGRlZmVycmFsQ29u
dGV4dCkpIEpTQXJyYXkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBKU0FycmF5KiBh
cnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLCBkZWZlcnJhbENv
bnRleHQpKSBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAgICAgYXJyYXktPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01Miw3ICs1Miw3IEBAIEpTQXJyYXlCdWZmZXIqIEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZSgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXlCdWZmZXI+KHZtLmhlYXAp
KQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5QnVmZmVyPih2bSkp
CiAgICAgICAgIEpTQXJyYXlCdWZmZXIodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBwcm90b3R5cGUsIEdl
dHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAgICB7CiAgICAgICAgIEpTR2VuZXJpY0FycmF5
QnVmZmVyQ29uc3RydWN0b3IqIHJlc3VsdCA9Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNH
ZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0
b3I+KHZtKSkgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
ICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlLCBzcGVjaWVzU3lt
Ym9sKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdAogSlNBcnJheUJ1ZmZl
clByb3RvdHlwZSogSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCiB7CiAgICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSog
cHJvdG90eXBlID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJheUJ1
ZmZlclByb3RvdHlwZT4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+KHZtKSkKICAgICAgICAgSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIHNoYXJpbmdNb2RlKTsKICAgICByZXR1cm4gcHJvdG90eXBlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0
IENsYXNzSW5mbyBKU0FycmF5SXRlcmF0b3I6OnNfaW5mbyAKIEpTQXJyYXlJdGVyYXRvciogSlNB
cnJheUl0ZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpCiB7CiAgICAgQVNTRVJUKGtpbmQuYXNV
SW50MzIoKSA8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uS2luZDo6RW50cmllcykp
OwotICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0FycmF5SXRlcmF0b3I+KHZtLmhlYXApKSBKU0FycmF5SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQXJyYXlJdGVyYXRvcj4odm0pKSBKU0FycmF5SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSk7CiAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBpdGVyYXRvci0+
aW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLnNldCh2bSwgaXRlcmF0b3IsIGl0
ZXJhdGVkT2JqZWN0KTsKICAgICBpdGVyYXRvci0+aW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCku
c2V0KHZtLCBpdGVyYXRvciwga2luZCk7CkBAIC00NSw3ICs0NSw3IEBAIEpTQXJyYXlJdGVyYXRv
ciogSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUKIAogSlNBcnJheUl0ZXJhdG9yKiBKU0FycmF5SXRl
cmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7Ci0gICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQXJyYXlJdGVyYXRvcj4odm0uaGVhcCkpIEpTQXJyYXlJdGVyYXRvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBcnJheUl0ZXJhdG9yPih2bSkpIEpTQXJyYXlJdGVyYXRvcih2bSwg
c3RydWN0dXJlKTsKICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBc3luY0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNh
aXRwQGlnYWxpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyAr
NDIsNyBAQCBKU0FzeW5jRnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0sCiAKIEpTQXN5
bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7Ci0gICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBKU0FzeW5jRnVuY3Rpb24q
IGFzeW5jRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jRnVuY3Rp
b24+KHZtKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJl
KTsKICAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0
KCkpOwogICAgIGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
YXN5bmNGdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBc3luY0dlbmVyYXRvcjo6c19pbmZv
CiAKIEpTQXN5bmNHZW5lcmF0b3IqIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTQXN5bmNHZW5lcmF0b3IqIGdlbmVyYXRvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5lcmF0b3I+KHZtLmhlYXApKSBK
U0FzeW5jR2VuZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTQXN5bmNHZW5lcmF0b3IqIGdl
bmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5lcmF0b3I+KHZt
KSkgSlNBc3luY0dlbmVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICBnZW5lcmF0b3ItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hrb3YgPGdz
a2FjaGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NyArNDIsNyBAQCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkpTQXN5bmNHZW5lcmF0CiAKIEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbiogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJ
bXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
KiBhc3luY0dlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CisgICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
KiBhc3luY0dlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbj4odm0pKSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChhc3luY0dlbmVyYXRvci0+c3RydWN0
dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGFzeW5jR2VuZXJhdG9yLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIGFzeW5jR2VuZXJhdG9yOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNyArMTI1LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBKU0JpZ0lu
dCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAp
KSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCByZWludGVycHJldF9jYXN0
PERpZ2l0Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRT
dHJ1Y3R1cmUuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihkYXRhKSwgbGVuZ3RoKTsK
ICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAg
SlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZQogICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRCb3VuZEZ1bmN0aW9uKGlzSlNGdW5jdGlvbiwgY2Fu
Q29uc3RydWN0KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0JvdW5kRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3VuZEFyZ3MsIG5hbWVNYXlCZU51bGwsIGxl
bmd0aCk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0pKSBKU0JvdW5kRnVuY3Rpb24odm0sIGV4ZWN1
dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlz
LCBib3VuZEFyZ3MsIG5hbWVNYXlCZU51bGwsIGxlbmd0aCk7CiAKICAgICBmdW5jdGlvbi0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQogICAgIHsKLSAg
ICAgICAgSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2Fs
bGVlPih2bS5oZWFwKSkgSlNDYWxsZWUodm0sIHNjb3BlLCBnbG9iYWxPYmplY3QtPmNhbGxlZVN0
cnVjdHVyZSgpKTsKKyAgICAgICAgSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQ2FsbGVlPih2bSkpIEpTQ2FsbGVlKHZtLCBzY29wZSwgZ2xvYmFsT2JqZWN0
LT5jYWxsZWVTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gY2FsbGVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBA
IGVudW0gY2xhc3MgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZSAKICAgICBEb2VzTm90SGF2
ZUFyZwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAm
LCBzaXplX3QgPSBzaXplb2YoVCkpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogdHJ5QWxs
b2NhdGVDZWxsKEhlYXAmLCBzaXplX3QgPSBzaXplb2YoVCkpOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCA9
IHNpemVvZihUKSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiB0cnlBbGxvY2F0ZUNlbGwo
SGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChWTSYsIHNpemVfdCA9IHNpemVvZihUKSk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoVk0mLCBzaXplX3Qg
PSBzaXplb2YoVCkpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKFZN
JiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QgPSBzaXplb2YoVCkpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxsKFZNJiwgR0NEZWZlcnJhbENvbnRleHQqLCBz
aXplX3QgPSBzaXplb2YoVCkpOwogCiAjZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMjcgKzE4OSwyNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUp
Cit2b2lkKiBhbGxvY2F0ZUNlbGwoVk0mIHZtLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+
KHZtLmhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBzaXplX3Qgc2l6ZSkKK3ZvaWQqIHRyeUFsbG9jYXRlQ2VsbChWTSYgdm0sIHNpemVfdCBz
aXplKQogewotICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxIZWxwZXI8VD4oaGVhcCwgc2l6ZSwg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KHZtLmhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12
b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFs
Q29udGV4dCwgc2l6ZV90IHNpemUpCit2b2lkKiBhbGxvY2F0ZUNlbGwoVk0mIHZtLCBHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOworICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxI
ZWxwZXI8VD4odm0uaGVhcCwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OkFzc2VydCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiB0cnlBbGxv
Y2F0ZUNlbGwoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwg
c2l6ZV90IHNpemUpCit2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoVk0mIHZtLCBHQ0RlZmVycmFsQ29u
dGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gdHJ5QWxs
b2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVs
cGVyPFQ+KHZtLmhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21H
ZXR0ZXJGdQogICAgIEFTU0VSVChnZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0
dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+
KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7Cisg
ICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2bSkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGdldHRlciwgZG9tQXR0cmlidXRlKTsKIAogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGlu
aXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2Nh
dGlvbi4KICAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3Rv
bVNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiog
SlNDdXN0b21TZXR0ZXJGdQogICAgIEFTU0VSVChzZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tU2V0dGVyRnVuY3Rpb25D
YWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxl
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzZXR0ZXIpOworICAgIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4odm0pKSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzZXR0
ZXIpOwogCiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVz
ZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGF1dG8gbmFt
ZSA9IG1ha2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoCiAgICAgICAgIHN0cnVjdHVyZSwgYnVmZmVyLmNvcHlSZWYoKSwgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICBKU0RhdGFWaWV3KiByZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0RhdGFWaWV3Pih2bS5oZWFwKSkgSlNEYXRhVmlldyh2bSwgY29u
dGV4dCwgYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNEYXRhVmlldz4odm0pKSBKU0RhdGFWaWV3KHZtLCBjb250ZXh0LCBidWZmZXIuZ2V0KCkpOwog
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3
ICsxMDYsNyBAQCBKU0RhdGFWaWV3UHJvdG90eXBlOjpKU0RhdGFWaWV3UHJvdG90eXBlCiBKU0Rh
dGFWaWV3UHJvdG90eXBlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlKiBwcm90b3R5cGUg
PQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0RhdGFWaWV3UHJvdG90eXBl
Pih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmll
d1Byb3RvdHlwZT4odm0pKQogICAgICAgICBKU0RhdGFWaWV3UHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwcm90
b3R5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdAogCiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogewotICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Pih2bSkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CiAg
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
LCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEoKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1
bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBzaWdu
YXR1cmUsIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5o
b3N0RnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bSkpIEpT
RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAv
LyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5j
dGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtKSkgSlNGdW5jdGlvbih2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3Ry
dWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gZnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yOjpzX2lu
Zm8gPSB7IAogCiBKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0pKSBKU0dlbmVyYXRvcih2bSwgc3RydWN0dXJl
KTsKICAgICBnZW5lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZ2VuZXJh
dG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDIsNyBAQCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9u
CiAKIEpTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0
b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rp
b24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
c3RydWN0dXJlKTsKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtKSkgSlNH
ZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CiAgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yRnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC02MCw3ICs2MCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8
Vmlld0MKICAgICBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvciogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpCisgICAg
ICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3I+KHZtKSkKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgbmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0pKQogICAgICAgICBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7CiAgICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTcxLDcgKzcxLDcgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZQogICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldz4odm0pKQogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29u
dGV4dCk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTkwLDcgKzkwLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtKSkKICAgICAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTYsNyArMTE2LDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZQogICAgIENvbnN0cnVjdGlvbkNvbnRleHQg
Y29udGV4dCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0
aCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBy
ZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bSkpCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KHZtLCBjb250ZXh0KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmUKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0s
IHN0cnVjdHVyZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNl
dCgpLCBpbXBsLT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bSkpCiAgICAgICAg
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNyArNTMsNyBAQCBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZTxWaWV3Q2xhCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZSogcHJvdG90eXBlID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+KHZtLmhlYXApKQor
ICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZT4odm0pKQogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBwcm90b3R5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiByZXN1bHQgPQotICAgICAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQ+KHZtLmhlYXApKSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBw
YXJlbnRTY29wZSk7CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudD4odm0pKSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCh2
bSwgc3RydWN0dXJlLCBwYXJlbnRTY29wZSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXN1bHQtPnN5bWJvbFRhYmxlKCktPnNldFNjb3BlVHlwZShTeW1i
b2xUYWJsZTo6U2NvcGVUeXBlOjpHbG9iYWxMZXhpY2FsU2NvcGUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjA0LDE0ICsy
NjA0LDE0IEBAIFdhdGNocG9pbnRTZXQmIEpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWYKIAogSlNH
bG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtLmhlYXApKSBKU0dsb2JhbE9iamVj
dCh2bSwgc3RydWN0dXJlKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAogSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQogewot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSwgbWV0aG9kVGFibGUpOwogICAgIGdsb2JhbE9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1t
dXRhYmxlQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgLy8gQmVjYXVzZSBvZiB0
aGUgYWJvdmUgbWF4aW11bUxlbmd0aCByZXF1aXJlbWVudCwgYWxsb2NhdGlvblNpemUgY2FuIG5l
dmVyIG92ZXJmbG93LgotICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNJ
bW11dGFibGVCdXR0ZXJmbHk+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpOworICAg
ICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNJbW11dGFibGVCdXR0ZXJmbHk+
KHZtLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgSlNJbW11dGFibGVCdXR0ZXJm
bHkodm0sIHN0cnVjdHVyZSwgbGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5h
bFByb21pc2U6OnNfaW5mCiAKIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNJbnRlcm5hbFBy
b21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ludGVybmFsUHJv
bWlzZT4odm0uaGVhcCkpIEpTSW50ZXJuYWxQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpT
SW50ZXJuYWxQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJ
bnRlcm5hbFByb21pc2U+KHZtKSkgSlNJbnRlcm5hbFByb21pc2Uodm0sIHN0cnVjdHVyZSk7CiAg
ICAgcHJvbWlzZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwcm9taXNlOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3RvciogSlNJbnRlcm5hbAogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IHByb21pc2VDb25zdHJ1Y3RvckludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yQ29kZUdl
bmVyYXRvcih2bSk7Ci0gICAgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvcj4odm0pKSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBwcm9taXNlUHJvdG90eXBlLCBzcGVjaWVzU3ltYm9sKTsKICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsUHJvbWlzZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5CiAKIEpTSW50ZXJuYWxQcm9taXNl
UHJvdG90eXBlKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlPih2bSkpIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEpTTGV4aWNhbEVudmly
b25tZW50KiByZXN1bHQgPSAKICAgICAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICAgICAgTm90
TnVsbCwKLSAgICAgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNMZXhpY2FsRW52aXJvbm1lbnQ+
KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTGV4aWNhbEVudmlyb25tZW50Pih2bSwgYWxsb2NhdGlvblNpemUoc3lt
Ym9sVGFibGUpKSkKICAgICAgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KHZtLCBzdHJ1Y3R1
cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENy
ZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM0LDcgKzM0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTTWFwOjpzX2luZm8gPSB7ICJN
YXAiLAogCiBKU01hcCogSlNNYXA6OmNsb25lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNNYXAqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNYXA+KHZtLmhlYXApKSBKU01hcCh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU01hcD4odm0pKSBKU01hcCh2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgdGhpcyk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU01hcCogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU01hcD4odm0uaGVhcCkpIEpTTWFwKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01hcD4odm0pKSBK
U01hcCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdCwgdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSAKIAogSlNNYXBJdGVyYXRvciogSlNNYXBJdGVyYXRv
cjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNNYXBJdGVyYXRvcj4odm0pKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAg
ICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTTWFwSXRlcmF0b3I+KHZtKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCwga2luZCk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgSlNNb2R1bGVFbnZp
cm9ubWVudCogSlNNb2R1bGVFbnZpcm9ubWVudAogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJl
c3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9j
YXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCiAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0s
IHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CiAgICAgcmVzdWx0LT5maW5p
c2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU01vZHVsZUxvYWRlciogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU01v
ZHVsZUxvYWRlciogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVM
b2FkZXI+KHZtLmhlYXApKSBKU01vZHVsZUxvYWRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNNb2R1bGVMb2FkZXIqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9k
dWxlTG9hZGVyPih2bSkpIEpTTW9kdWxlTG9hZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0pOwogICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQs
IFZlY3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb24+PiYmIHJlc29sdXRpb25zKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Pih2bS5oZWFw
KSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdD4odm0pKSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCh2bSwg
c3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qs
IG1vZHVsZVJlY29yZCwgV1RGTW92ZShyZXNvbHV0aW9ucykpOwogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBTdHJ1Y3R1cmUqIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1CiAKIEpTTW9k
dWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxWYXJpYWJsZXMpCiB7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJl
Y29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFi
bGVzLCBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0pKSBKU01vZHVsZVJl
Y29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFi
bGVzLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LCB2bSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0
aXZlU3RkRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIEpTTmF0
aXZlU3RkRnVuY3Rpb24qIEpTTmF0aXZlU3RkRnVuY3Rpb24KIHsKICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1blN0ZEZ1bmN0aW9uLCBpbnRy
aW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsK
LSAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgV1RGTW92ZShuYXRpdmVT
dGRGdW5jdGlvbikpOworICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNOYXRpdmVTdGRGdW5jdGlvbj4odm0pKSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgV1RGTW92
ZShuYXRpdmVTdGRGdW5jdGlvbikpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwg
ZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU09O
T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIEpTT05PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTT05P
YmplY3Q+KHZtLmhlYXApKSBKU09OT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU09O
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU09OT2JqZWN0Pih2
bSkpIEpTT05PYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI5MCwxMCArMTI5MCw3IEBAIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0Ojpj
cmUKIHsKICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCiAgICAgICAgIE5v
dE51bGwsCi0gICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0PigKLSAgICAgICAgICAg
IHZtLmhlYXAsCi0gICAgICAgICAgICBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpCi0gICAgICAgICkKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+
KHZtLCBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpKQogICAgICkg
SlNGaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIGZpbmFsT2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZpbmFsT2JqZWN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2U6OnNf
aW5mbyA9IHsgIlAKIAogSlNQcm9taXNlKiBKU1Byb21pc2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2U+KHZtKSkgSlNQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb21pc2Ut
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw3ICs1OCw3
IEBAIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBKU1Byb21pc2VDb25zdHJ1Y3QKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBwcm9taXNlQ29uc3RydWN0b3JQcm9t
aXNlQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsKLSAgICBKU1Byb21pc2VDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VDb25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEpTUHJvbWlzZUNvbnN0cnVjdG9yKHZtLCBleGVjdXRhYmxlLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+
KHZtKSkgSlNQcm9taXNlQ29uc3RydWN0b3Iodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb21pc2VQ
cm90b3R5cGUsIHNwZWNpZXNTeW1ib2wpOwogICAgIGNvbnN0cnVjdG9yLT5hZGRPd25JbnRlcm5h
bFNsb3RzKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDcgKzUwLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVByb3RvdHlwZTo6c19pbgogCiBKU1Byb21pc2VQ
cm90b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNQcm9taXNl
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Byb21pc2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Cisg
ICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2VQcm90b3R5cGU+KHZtKSkgSlNQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
b2JqZWN0LT5hZGRPd25JbnRlcm5hbFNsb3RzKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBvYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKiBKU1Byb3BlcnR5TmFtZQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0u
Y2xlYXIoKTsKICAgICB9Ci0gICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPih2
bS5oZWFwKSkgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRM
ZW5ndGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXNCdWZmZXIsIHBy
b3BlcnR5TmFtZXNTaXplKTsKKyAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+
KHZtKSkgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRMZW5n
dGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXNCdWZmZXIsIHByb3Bl
cnR5TmFtZXNTaXplKTsKICAgICBlbnVtZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvcGVy
dHlOYW1lcy5yZWxlYXNlRGF0YSgpKTsKICAgICByZXR1cm4gZW51bWVyYXRvcjsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsMTQgKzQzLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIEpTUHJveHkqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQ
cm94eT4odm0uaGVhcCkpIEpTUHJveHkodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTUHJveHkq
IHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm94eT4odm0pKSBKU1Byb3h5
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIHRhcmdl
dCk7CiAgICAgICAgIHJldHVybiBwcm94eTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1By
b3h5KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtLmhlYXAp
KSBKU1Byb3h5KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Byb3h5KiBwcm94eSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtKSkgSlNQcm94eSh2bSwgc3RydWN0dXJl
KTsKICAgICAgICAgcHJveHktPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHBy
b3h5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBK
U1NjcmlwdEZldGNoUGFyYW1ldGVycyogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZjxTY3JpcHRGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAg
ICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzPih2bS5oZWFwKSkgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnModm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPih2bSkpIEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGFyYW1ldGVycykpOwog
ICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZl
dGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
cmlwdEZldGNoZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNTY3JpcHRGZXRjaGVyKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0
RmV0Y2hlcikKICAgICB7Ci0gICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTU2NyaXB0RmV0Y2hlcj4odm0uaGVhcCkpIEpTU2NyaXB0RmV0Y2hlcih2bSwg
c3RydWN0dXJlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKTsKKyAgICAgICAgYXV0byogcmVzdWx0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTY3JpcHRGZXRjaGVyPih2bSkpIEpTU2Ny
aXB0RmV0Y2hlcih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKTsKICAgICAg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTU2V0Ojpz
X2luZm8gPSB7ICJTZXQiLAogCiBKU1NldCogSlNTZXQ6OmNsb25lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNTZXQq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXQ+KHZtLmhlYXApKSBK
U1NldCh2bSwgc3RydWN0dXJlKTsKKyAgICBKU1NldCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1NldD4odm0pKSBKU1NldCh2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgdGhpcyk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEpTU2V0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIEpTU2V0KiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0Pih2bS5oZWFwKSkgSlNT
ZXQodm0sIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgIEpTU2V0KiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0Pih2bSkpIEpTU2V0KHZtLCBzdHJ1Y3R1cmUsIHNp
emUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTU2V0SXRlcmF0b3I6
OnNfaW5mbyA9IAogCiBKU1NldEl0ZXJhdG9yKiBKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5p
dGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTU2V0SXRl
cmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRv
cj4odm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSlNTZXRJdGVy
YXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0ZXJhdG9y
Pih2bSkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgaXRlcmF0b3ItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTU2V0SXRl
cmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1NldCogaXRlcmF0
ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIEpTU2V0SXRlcmF0
b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRvcj4o
dm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU2V0SXRl
cmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRv
cj4odm0pKSBKU1NldEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU291cmNlQ29kZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNTb3VyY2VDb2RlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU291cmNlQ29kZSYmIHNvdXJjZUNvZGUpCiAgICAgewotICAgICAg
ICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NvdXJjZUNvZGU+
KHZtLmhlYXApKSBKU1NvdXJjZUNvZGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzb3VyY2VDb2Rl
KSk7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
U291cmNlQ29kZT4odm0pKSBKU1NvdXJjZUNvZGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzb3Vy
Y2VDb2RlKSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBT
dHJ1Y3R1cmUqIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mCiAKIEpTU3RyaW5nKiBKU1N0
cmluZzo6Y3JlYXRlRW1wdHlTdHJpbmcoVk0mIHZtKQogewotICAgIEpTU3RyaW5nKiBuZXdTdHJp
bmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0uaGVhcCkpIEpTU3Ry
aW5nKHZtLCAqU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bSkpIEpTU3RyaW5nKHZtLCAq
U3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0KQEAgLTQwMCw3ICs0MDAsNyBAQCBkb3VibGUgSlNT
dHJpbmc6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0
cmluZ09iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4odm0uaGVhcCkpIFN0cmluZ09iamVjdCh2
bSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KHZt
KSkgU3RyaW5nT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgp
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJpbmcpOwogICAgIHJldHVybiBv
YmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCwxNCArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKICAgICAgICAgQVNTRVJUKGxl
bmd0aCA+IDApOwogICAgICAgICBzaXplX3QgY29zdCA9IHZhbHVlLT5jb3N0KCk7Ci0gICAgICAg
IEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIEpTU3Ry
aW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0p
KSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlz
aENyZWF0aW9uKHZtLCBsZW5ndGgsIGNvc3QpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwog
ICAgIH0KICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBS
ZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJpbmcodm0sIFdURk1v
dmUodmFsdWUpKTsKKyAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bSkpIEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7
CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBvcGVyYXRpb25zIGluIEpTIGZhaWwgdG8gaGFuZGxlIHRoaXMgc3RyaW5nIGNvcnJlY3Rs
eS4KICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGVOdWxsRm9yVGVzdGluZyhWTSYgdm0p
CiAgICAgewotICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSk7Cisg
ICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNSb3BlU3RyaW5nPih2bSkpIEpTUm9wZVN0cmluZyh2bSk7CiAgICAgICAgIG5ld1N0cmlu
Zy0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIW5ld1N0cmluZy0+bGVuZ3Ro
KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkBAIC01NjgsNyArNTY4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGUo
Vk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICB7Ci0gICAgICAgIEpTUm9w
ZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3Ry
aW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIpOworICAgICAgICBKU1JvcGVT
dHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmlu
Zz4odm0pKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMik7CiAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CiAg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBw
cml2YXRlOgogICAgIH0KICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQogICAgIHsKLSAgICAgICAg
SlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jv
cGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMiwgczMpOworICAgICAg
ICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
Um9wZVN0cmluZz4odm0pKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMiwgczMpOwogICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+
bGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkBAIC01ODUs
NyArNTg1LDcgQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTUm9wZVN0
cmluZyogY3JlYXRlU3Vic3RyaW5nT2ZSZXNvbHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwLCBkZWZlcnJhbENv
bnRleHQpKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAg
SlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jv
cGVTdHJpbmc+KHZtLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9m
ZnNldCwgbGVuZ3RoKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmlu
Z09mUmVzb2x2ZWQodm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CiAg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNT
dHJpbmdJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3Ry
aW5nKiBpdGVyYXRlZFN0cmluZykKICAgICB7Ci0gICAgICAgIEpTU3RyaW5nSXRlcmF0b3IqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmdJdGVyYXRvcj4odm0u
aGVhcCkpIEpTU3RyaW5nSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU3RyaW5n
SXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmdJ
dGVyYXRvcj4odm0pKSBKU1N0cmluZ0l0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkU3RyaW5nKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6SlNUZW1wbGF0ZU9iCiAKIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlKFZNJiB2bSwgUmVm
PFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiBkZXNjcmlwdG9yLCBpbnQgZW5kT2Zmc2V0KQog
ewotICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0uaGVhcCkpIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCBXVEZNb3ZlKGRlc2NyaXB0b3IpLCBlbmRPZmZzZXQp
OworICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0pKSBKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcih2bSwgV1RGTW92ZShkZXNjcmlwdG9yKSwgZW5kT2Zmc2V0KTsKICAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIHByb3Rv
dHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogICAgIHsKLSAgICAgICAgSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yPih2bSkpIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIHNwZWNpZXNTeW1ib2wpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDkyLDcgKzQ5Miw3IEBAIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUqIEpTVHlwZWRBcnJheVYKICAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUqIHByb3RvdHlwZSA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGU+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlPih2bSkpCiAgICAgICAgIEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gcHJvdG90eXBlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1dlYWtN
YXAqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
SlNXZWFrTWFwKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha01h
cD4odm0uaGVhcCkpIEpTV2Vha01hcCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNXZWFrTWFw
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha01hcD4odm0pKSBK
U1dlYWtNYXAodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtPYmplY3RSZWYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtPYmplY3RSZWYuaAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
V2Vha09iamVjdFJlZiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiB0YXJnZXQpCiAgICAgewotICAgICAgICBKU1dlYWtPYmplY3RSZWYqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFrT2JqZWN0UmVmPih2bS5oZWFwKSkgSlNX
ZWFrT2JqZWN0UmVmKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1dlYWtPYmplY3RSZWYqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFrT2JqZWN0UmVmPih2bSkp
IEpTV2Vha09iamVjdFJlZih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHZtLCB0YXJnZXQpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmgJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha1NldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNXZWFr
U2V0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEpTV2Vha1NldCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtT
ZXQ+KHZtLmhlYXApKSBKU1dlYWtTZXQodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTV2Vha1Nl
dCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtTZXQ+KHZtKSkg
SlNXZWFrU2V0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXaXRoU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXaXRoU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIEpTV2l0aFNjb3BlKiBKU1dpdGhTY29wZTo6Y3Jl
YXRlKAogICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSog
bmV4dCwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+d2l0aFNjb3BlU3RydWN0dXJlKCk7Ci0gICAgSlNXaXRoU2NvcGUqIHdpdGhT
Y29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2l0aFNjb3BlPih2bS5oZWFwKSkg
SlNXaXRoU2NvcGUodm0sIHN0cnVjdHVyZSwgb2JqZWN0LCBuZXh0KTsKKyAgICBKU1dpdGhTY29w
ZSogd2l0aFNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXaXRoU2NvcGU+KHZt
KSkgSlNXaXRoU2NvcGUodm0sIHN0cnVjdHVyZSwgb2JqZWN0LCBuZXh0KTsKICAgICB3aXRoU2Nv
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gd2l0aFNjb3BlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IE1hcENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWFw
UHJvdG90eXBlKiBtYXBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAg
ICB7Ci0gICAgICAgIE1hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE1hcENvbnN0cnVjdG9yPih2bS5oZWFwKSkgTWFwQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIE1hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcENvbnN0cnVjdG9yPih2bSkpIE1hcENvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IG1hcFByb3RvdHlwZSwgc3BlY2llc1N5bWJvbCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBNYXBJdGVyYXRvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwSXRlcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBNYXBJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTWFw
SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1hcEl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIE1hcEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE1hcFByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcFByb3RvdHlwZT4odm0uaGVhcCkpIE1hcFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+KHZtKSkgTWFwUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgTWF0aE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TWF0aE9iamVjdD4odm0uaGVhcCkpIE1hdGhPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIE1hdGhPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1hdGhPYmplY3Q+KHZtKSkgTWF0aE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIE1vZHVsZVByb2dyYW1FeAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bS5oZWFwKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU+KHZtKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UpOwog
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
IGZpbmFsIDogcHViCiBwdWJsaWM6CiAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOYXRpdmVFcnJvclByb3RvdHlw
ZSogcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPih2bSkpIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgcHJvdG90eXBlLCBlcnJvclR5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgewotICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBOYXRp
dmVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9y
UHJvdG90eXBlPih2bSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpz
X2luZm8KIE5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0s
IFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5rLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGU7Ci0gICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOworICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxOYXRpdmVFeGVjdXRhYmxlPih2bSkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIFdURk1vdmUo
Y2FsbFRodW5rKSwgV1RGTW92ZShjb25zdHJ1Y3RUaHVuayksIG5hbWUpOwogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbEdldHRlckZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBOdWxsR2V0dGVyRnVuY3Rpb24qIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgLy8gU2luY2Ug
TnVsbEdldHRlckZ1bmN0aW9uIGlzIHBlciBKU0dsb2JhbE9iamVjdCwgd2UgdXNlIHB1dC13aXRo
b3V0LXRyYW5zaXRpb24gaW4gSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24uCi0gICAg
ICAgIE51bGxHZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDwgTnVsbEdldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgIE51bGxHZXR0ZXJGdW5jdGlvbih2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPCBOdWxsR2V0dGVyRnVuY3Rpb24+KHZtKSkgIE51bGxH
ZXR0ZXJGdW5jdGlvbih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCBTdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlv
bi5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBOdWxsU2V0dGVyRnVuY3Rpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICB7Ci0gICAgICAgIE51bGxTZXR0
ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdWxsU2V0
dGVyRnVuY3Rpb24+KHZtLmhlYXApKSAgTnVsbFNldHRlckZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUs
IGVjbWFNb2RlKTsKKyAgICAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bGxTZXR0ZXJGdW5jdGlvbj4odm0pKSAgTnVsbFNldHRl
ckZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGVjbWFNb2RlKTsKICAgICAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKHZtLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDcgKzM1LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIE51bWJlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUsIEdl
dHRlclNldHRlciopCiAgICAgewotICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIE51bWJlckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJD
b25zdHJ1Y3Rvcj4odm0pKSBOdW1iZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUpOwogICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIE51bWJlck9iamVjdCogbnVtYmVy
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0Pih2bS5oZWFwKSkgTnVt
YmVyT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJPYmplY3QqIG51bWJlciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlck9iamVjdD4odm0pKSBOdW1iZXJPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG51bWJlci0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgICByZXR1cm4gbnVtYmVyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIE51bWJlclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPih2bS5oZWFwKSkgTnVtYmVy
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlclByb3RvdHlwZT4odm0pKSBO
dW1iZXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFBy
b3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtKSkgT2JqZWN0Q29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBvYmplY3RQcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKIAogT2JqZWN0UHJvdG90
eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIE9iamVjdFByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0UHJvdG90eXBlPih2
bS5oZWFwKSkgT2JqZWN0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIE9iamVjdFByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0UHJvdG90
eXBlPih2bSkpIE9iamVjdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBwcm90b3R5cGU7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICB7CiAg
ICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4
ZWN1dGFibGU+KHZtLmhlYXApKSBQcm9ncmFtRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJj
ZSk7CisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1dGFibGU+KHZtKSkgUHJvZ3JhbUV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UpOwogICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjEgKzM2LDIxIEBAIGNvbnN0IENsYXNzSW5mbyBQcm9w
ZXJ0eVRhYmxlOjpzX2luZm8gPSAKIAogUHJvcGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y3Jl
YXRlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KQogewotICAgIFByb3BlcnR5VGFi
bGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvcGVydHlUYWJsZT4odm0u
aGVhcCkpIFByb3BlcnR5VGFibGUodm0sIGluaXRpYWxDYXBhY2l0eSk7CisgICAgUHJvcGVydHlU
YWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPih2
bSkpIFByb3BlcnR5VGFibGUodm0sIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgdGFibGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CiAKIFByb3BlcnR5VGFibGUqIFBy
b3BlcnR5VGFibGU6OmNsb25lKFZNJiB2bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiB7
Ci0gICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm9wZXJ0eVRhYmxlPih2bS5oZWFwKSkgUHJvcGVydHlUYWJsZSh2bSwgb3RoZXIpOworICAgIFBy
b3BlcnR5VGFibGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvcGVydHlU
YWJsZT4odm0pKSBQcm9wZXJ0eVRhYmxlKHZtLCBvdGhlcik7CiAgICAgdGFibGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CiAKIFByb3BlcnR5VGFibGUqIFByb3Bl
cnR5VGFibGU6OmNsb25lKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQ
cm9wZXJ0eVRhYmxlJiBvdGhlcikKIHsKLSAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZtLmhlYXApKSBQcm9wZXJ0eVRh
YmxlKHZtLCBpbml0aWFsQ2FwYWNpdHksIG90aGVyKTsKKyAgICBQcm9wZXJ0eVRhYmxlKiB0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZtKSkgUHJvcGVy
dHlUYWJsZSh2bSwgaW5pdGlhbENhcGFjaXR5LCBvdGhlcik7CiAgICAgdGFibGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gUHJveHlDb25z
dHJ1Y3Rvcjo6c19pbmZvCiAKIFByb3h5Q29uc3RydWN0b3IqIFByb3h5Q29uc3RydWN0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFByb3h5Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgUHJv
eHlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm94eUNvbnN0cnVjdG9yPih2bSkpIFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVj
dCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBQcm94eU9iamVjdDo6
c3RydWN0dXJlRm9yVGFyZ2V0KGdsb2JhbE9iamVjdCwgdGFyZ2V0KTsKLSAgICAgICAgUHJveHlP
YmplY3QqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlPYmplY3Q+KHZt
LmhlYXApKSBQcm94eU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJveHlPYmplY3Qq
IHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlPYmplY3Q+KHZtKSkgUHJv
eHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gcHJveHk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2
b2tlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlSZXZva2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0
IENsYXNzSW5mbyBQcm94eVJldm9rZTo6c19pbmZvID0geyAKIAogUHJveHlSZXZva2UqIFByb3h5
UmV2b2tlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJveHlPYmplY3Qq
IHByb3h5KQogewotICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxQcm94eVJldm9rZT4odm0uaGVhcCkpIFByb3h5UmV2b2tlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm94eVJldm9rZT4odm0pKSBQcm94eVJldm9rZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXZva2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7CiAgICAgcmV0dXJuIHJldm9rZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZmxlY3RPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgUmVmbGVjdE9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVmbGVjdE9iamVjdD4odm0u
aGVhcCkpIFJlZmxlY3RPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZmxlY3RPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZmxlY3RPYmplY3Q+KHZt
KSkgUmVmbGVjdE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzaXplX3QgUmVnRXhwOjplc3RpbWF0ZWRT
aXplKEpTQ2VsbCogY2VsCiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGVXaXRob3V0Q2FjaGluZyhW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgT3B0aW9uU2V0PFlhcnI6OkZsYWdz
PiBmbGFncykKIHsKLSAgICBSZWdFeHAqIHJlZ0V4cCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFJlZ0V4cD4odm0uaGVhcCkpIFJlZ0V4cCh2bSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwor
ICAgIFJlZ0V4cCogcmVnRXhwID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwPih2
bSkpIFJlZ0V4cCh2bSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogICAgIHJlZ0V4cC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJldHVybiByZWdFeHA7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ0V4
cENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhw
UHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llcykKICAgICB7
Ci0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPih2bS5oZWFwKSkgUmVnRXhwQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPih2bSkpIFJl
Z0V4cENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZSwgc3BlY2llcyk7CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ0V4cE9iamVjdCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwLCBib29sIGFyZUxlZ2FjeUZlYXR1
cmVzRW5hYmxlZCA9IHRydWUpCiAgICAgewotICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4odm0uaGVhcCkpIFJlZ0V4
cE9iamVjdCh2bSwgc3RydWN0dXJlLCByZWdFeHAsIGFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCk7
CisgICAgICAgIFJlZ0V4cE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwT2JqZWN0Pih2bSkpIFJlZ0V4cE9iamVjdCh2bSwgc3RydWN0dXJlLCByZWdFeHAs
IGFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVnRXhwUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPih2bS5oZWFw
KSkgUmVnRXhwUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cFByb3RvdHlw
ZT4odm0pKSBSZWdFeHBQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxOSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPi4K
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBSZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgYXV0byBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZT4odm0pKSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVu
dHM6OmNyZWF0ZQogCiAgICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKAogICAgICAg
ICBOb3ROdWxsLAotICAgICAgICBhbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzPih2bS5oZWFw
KSkKKyAgICAgICAgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50cz4odm0pKQogICAgICAgICBT
Y29wZWRBcmd1bWVudHModm0sIHN0cnVjdHVyZSwgc3RvcmFnZSwgdG90YWxMZW5ndGgpOwogICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxlZSwgdGFibGUsIHNjb3BlKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTMsMTQgKzUzLDE0IEBAIHZvaWQgU2NvcGVkQXJndW1lbnRzVGFibGU6
OmRlc3Ryb3koSlNDZWwKIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1bWVudHNUYWJs
ZTo6Y3JlYXRlKFZNJiB2bSkKIHsKICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogcmVzdWx0ID0K
LSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+
KHZtLmhlYXApKSBTY29wZWRBcmd1bWVudHNUYWJsZSh2bSk7CisgICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50c1RhYmxlPih2bSkpIFNjb3BlZEFyZ3VtZW50
c1RhYmxlKHZtKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBTY29wZWRBcmd1bWVudHNUYWJsZSogU2NvcGVkQXJndW1lbnRzVGFibGU6
OnRyeUNyZWF0ZShWTSYgdm0sIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICB2b2lkKiBidWZmZXIg
PSB0cnlBbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+KHZtLmhlYXApOworICAgIHZv
aWQqIGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxTY29wZWRBcmd1bWVudHNUYWJsZT4odm0pOwog
ICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
U2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYnVmZmVyKSBTY29w
ZWRBcmd1bWVudHNUYWJsZSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2V0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSwgR2V0
dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogICAgIHsKLSAgICAgICAgU2V0Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0Q29uc3RydWN0b3I+
KHZtLmhlYXApKSBTZXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU2V0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0Q29u
c3RydWN0b3I+KHZtKSkgU2V0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc2V0UHJvdG90eXBlLCBzcGVjaWVzU3ltYm9s
KTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IFNldEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTZXRJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIFNldEl0ZXJhdG9yUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTZXRJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkg
U2V0SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IFNldFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0
UHJvdG90eXBlPih2bS5oZWFwKSkgU2V0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNl
dFByb3RvdHlwZT4odm0pKSBTZXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFk
b3dSZWFsbVByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAgICAgIFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4o
dm0pKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1JlYWxtUHJvdG90eXBlKTsKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDcgKzU5
LDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKFNoYWRvd1JlYWxtT2JqZWN0KQogCiBTaGFkb3dS
ZWFsbU9iamVjdCogU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCiB7
Ci0gICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bS5oZWFwKSkgU2hhZG93UmVhbG1PYmplY3Qodm0sIHN0
cnVjdHVyZSk7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bSkpIFNoYWRvd1JlYWxtT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3Rv
bU1ldGhvZFRhYmxlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIG1ldGhvZFRhYmxlKTsKICAgICBvYmplY3QtPm1fZ2xvYmFsT2JqZWN0LnNldCh2bSwg
b2JqZWN0LCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgU2hhZG93UmVhbG1Qcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxt
UHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbVByb3RvdHlwZT4odm0pKSBTaGFkb3dSZWFsbVByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6ZmluaXNoQ3JlYXRpb24KIAogU3BhcnNlQXJyYXlWYWx1ZU1hcCog
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlKFZNJiB2bSkKIHsKLSAgICBTcGFyc2VBcnJheVZh
bHVlTWFwKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTcGFyc2VBcnJheVZh
bHVlTWFwPih2bS5oZWFwKSkgU3BhcnNlQXJyYXlWYWx1ZU1hcCh2bSk7CisgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcCogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3BhcnNlQXJy
YXlWYWx1ZU1hcD4odm0pKSBTcGFyc2VBcnJheVZhbHVlTWFwKHZtKTsKICAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlKQogICAgIHsKLSAgICAgICAgU3RyaWN0
RXZhbEFjdGl2YXRpb24qIHNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0
RXZhbEFjdGl2YXRpb24+KHZtLmhlYXApKSBTdHJpY3RFdmFsQWN0aXZhdGlvbih2bSwgc3RydWN0
dXJlLCBjdXJyZW50U2NvcGUpOworICAgICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbiogc2NvcGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4odm0pKSBT
dHJpY3RFdmFsQWN0aXZhdGlvbih2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUpOwogICAgICAg
ICBzY29wZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gc2NvcGU7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNCw3ICszNCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlLCBHZXR0ZXJT
ZXR0ZXIqKQogICAgIHsKLSAgICAgICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KHZtLmhlYXApKSBT
dHJpbmdDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3RyaW5nQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3Ry
dWN0b3I+KHZtKSkgU3RyaW5nQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nUHJvdG90eXBlKTsKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZT4odm0pKSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDEzICszOSwx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNF
bXB0eVN0cmluZyh2bSk7Ci0gICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3RyaW5nT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4odm0pKSBTdHJpbmdPYmplY3Qodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CiAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAgIHsK
LSAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJpbmdPYmplY3Q+KHZtLmhlYXApKSBTdHJpbmdPYmplY3Qodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U3RyaW5nT2JqZWN0Pih2bSkpIFN0cmluZ09iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIG9iamVj
dDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAKIFN0
cmluZ1Byb3RvdHlwZSogU3RyaW5nUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBTdHJpbmdQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4odm0uaGVhcCkpIFN0cmluZ1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBT
dHJpbmdQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0
cmluZ1Byb3RvdHlwZT4odm0pKSBTdHJpbmdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
cHJvdG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICBz
aXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQp
OwogICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0
ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0
KHZlY3RvciwgMCwgYnl0ZXMpOwotICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bS5oZWFwKSkgU3RydWN0dXJlQ2hh
aW4odm0sIHZtLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOworICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVy
ZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwog
ICAgIHJldHVybiBjaGFpbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYg
CiAgICAgICAgIG9iamVjdC0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+
KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCB0eXBlSW5m
bywgY2xhc3NJbmZvLCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBpbmxpbmVDYXBhY2l0
eSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmU+KHZtKSkgU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
dHlwZUluZm8sIGNsYXNzSW5mbywgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgaW5saW5l
Q2FwYWNpdHkpOwogICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPnR5cGUoKSA9PSBTdHJ1Y3R1cmVUeXBlKTsKICAgICByZXR1cm4gc3RydWN0
dXJlOwpAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0
ZShWTSYgCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0pCiB7CiAgICAgQVNTRVJUKCF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5o
ZWFwKSkgU3RydWN0dXJlKHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtKSkgU3Ry
dWN0dXJlKHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CiAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVh
dGlvbih2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CkBA
IC03OSw5ICs3OSw5IEBAIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiAK
ICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZTsKICAgICBpZiAocHJldmlvdXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQotICAgICAg
ICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0
dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwganNDYXN0PEJyYW5kZWRTdHJ1Y3R1
cmUqPihwcmV2aW91cyksIGRlZmVycmVkKTsKKyAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0pKSBCcmFuZGVkU3RydWN0
dXJlKHZtLCBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHByZXZpb3VzKSwgZGVmZXJyZWQpOwog
ICAgIGVsc2UKLSAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8U3RydWN0dXJlPih2bS5oZWFwKSkgU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQp
OworICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1
Y3R1cmU+KHZtKSkgU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOwogCiAgICAgbmV3
U3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOwogICAgIHJldHVybiBuZXdT
dHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydQog
CiBTdHJ1Y3R1cmVSYXJlRGF0YSogU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogcHJldmlvdXMpCiB7Ci0gICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlUmFyZURhdGE+KHZtLmhlYXApKSBT
dHJ1Y3R1cmVSYXJlRGF0YSh2bSwgcHJldmlvdXMpOworICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBy
YXJlRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZVJhcmVEYXRhPih2
bSkpIFN0cnVjdHVyZVJhcmVEYXRhKHZtLCBwcmV2aW91cyk7CiAgICAgcmFyZURhdGEtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmFyZURhdGE7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgU3ltYm9sOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGlubGluZSBT
eW1ib2xPYmplY3QqIFN5bWJvbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3ltYm9sKiBzeW1ib2wpCiB7Ci0gICAgU3ltYm9sT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xPYmplY3Q+KHZtLmhlYXApKSBT
eW1ib2xPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+c3ltYm9sT2JqZWN0U3RydWN0dXJlKCkpOwor
ICAgIFN5bWJvbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3lt
Ym9sT2JqZWN0Pih2bSkpIFN5bWJvbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5zeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3ltYm9sKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgU3RyaW5nIFN5bWJv
bDo6ZGVzY3JpcHRpb24oKSBjb25zdAogCiBTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2bSkK
IHsKLSAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJv
bD4odm0uaGVhcCkpIFN5bWJvbCh2bSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtKSkgU3ltYm9sKHZtKTsKICAgICBzeW1ib2wtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gc3ltYm9sOwogfQogCiBTeW1ib2wqIFN5bWJv
bDo6Y3JlYXRlV2l0aERlc2NyaXB0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bikKIHsKLSAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5
bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSwgZGVzY3JpcHRpb24pOworICAgIFN5bWJvbCogc3lt
Ym9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bSkpIFN5bWJvbCh2bSwg
ZGVzY3JpcHRpb24pOwogICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBzeW1ib2w7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShW
TSYgdm0sIFN5bWJvbEltcAogICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IHZtLnN5bWJvbEltcGxU
b1N5bWJvbE1hcC5nZXQoJnVpZCkpCiAgICAgICAgIHJldHVybiBzeW1ib2w7CiAKLSAgICBTeW1i
b2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkp
IFN5bWJvbCh2bSwgdWlkKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFN5bWJvbD4odm0pKSBTeW1ib2wodm0sIHVpZCk7CiAgICAgc3ltYm9sLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN5bWJv
bENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9s
UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBTeW1i
b2xDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
eW1ib2xDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFN5bWJvbENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBTeW1ib2xDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xDb25zdHJ1Y3Rvcj4odm0pKSBTeW1ib2xDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBwcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sT2JqZWN0LmgJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBTeW1ib2xP
YmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAg
ICAgU3ltYm9sKiBzeW1ib2wgPSBTeW1ib2w6OmNyZWF0ZSh2bSk7Ci0gICAgICAgIFN5bWJvbE9i
amVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2
bS5oZWFwKSkgU3ltYm9sT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0p
KSBTeW1ib2xPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIHN5bWJvbCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogICAgIHN0
YXRpYyBTeW1ib2xPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
eW1ib2wqIHN5bWJvbCkKICAgICB7Ci0gICAgICAgIFN5bWJvbE9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2bS5oZWFwKSkgU3ltYm9sT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xPYmplY3QqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0pKSBTeW1ib2xPYmplY3Qodm0s
IHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN5bWJvbCk7
CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sUHJvdG90eXBlPih2bS5oZWFwKSkgU3ltYm9s
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbFByb3RvdHlwZT4odm0pKSBT
eW1ib2xQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNyArNDYxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQogICAgIHsKLSAgICAgICAgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9s
VGFibGU+KHZtLmhlYXApKSBTeW1ib2xUYWJsZSh2bSk7CisgICAgICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbFRhYmxlPih2bSkp
IFN5bWJvbFRhYmxlKHZtKTsKICAgICAgICAgc3ltYm9sVGFibGUtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVu
ZGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBUZW1wb3JhbENhbGVuZGFyKiBUZW1wb3JhbENhbGVu
ZGFyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FsZW5kYXJJRCBpZGVu
dGlmaWVyKQogewotICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFy
KHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1h
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtKSkgVGVt
cG9yYWxDYWxlbmRhcih2bSwgc3RydWN0dXJlLCBpZGVudGlmaWVyKTsKICAgICBmb3JtYXQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWMKIAogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKiBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKQogewotICAgIFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0ZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cAogCiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlPih2
bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBU
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlPih2bSkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxE
dXJhdGlvbjo6c19pbmZvCiAKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpEdXJhdGlvbiYmIGR1
cmF0aW9uKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFRlbXBvcmFsRHVyYXRpb24+KHZtLmhlYXApKSBUZW1wb3JhbER1cmF0aW9uKHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uPih2bSkpIFRlbXBvcmFsRHVyYXRpb24odm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlvbikpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1NSw3
IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWMKIAogVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKiBk
dXJhdGlvblByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRl
bXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkdXJhdGlvblByb3RvdHlwZSk7
CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTMsNyArOTQsNyBAQCBjb25z
dCBDbGFzc0luZm8gVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwCiAKIFRlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUqIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU+KHZt
KSkgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvdG90eXBlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3Bw
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbEluc3RhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTcsNyArNTgsNyBAQCBUZW1wb3JhbEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudChWTSYg
dm0sCiBUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCiB7CiAgICAg
QVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOwotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0uaGVhcCkpIFRlbXBvcmFsSW5z
dGFudCh2bSwgc3RydWN0dXJlLCBleGFjdFRpbWUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0pKSBUZW1wb3JhbEluc3Rh
bnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjMsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0CiAKIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGluc3RhbnRQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDcgKzc4LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZQogCiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUq
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0pKSBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzU0
LDcgQEAgVGVtcG9yYWxOb3c6OlRlbXBvcmFsTm93KFZNJiB2bSwgU3RydWN0dQogCiBUZW1wb3Jh
bE5vdyogVGVtcG9yYWxOb3c6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIFRlbXBvcmFsTm93KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxU
ZW1wb3JhbE5vdz4odm0uaGVhcCkpIFRlbXBvcmFsTm93KHZtLCBzdHJ1Y3R1cmUpOworICAgIFRl
bXBvcmFsTm93KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE5v
dz4odm0pKSBUZW1wb3JhbE5vdyh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgVGVtcG9yYWxPYmplY3Q6OlRlbXBvcmFs
T2JqZWN0KFZNJiB2bSwgUwogCiBUZW1wb3JhbE9iamVjdCogVGVtcG9yYWxPYmplY3Q6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFRlbXBvcmFsT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE9iamVjdD4odm0uaGVh
cCkpIFRlbXBvcmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgIFRlbXBvcmFsT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE9iamVjdD4odm0pKSBU
ZW1wb3JhbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZTo6c19pbmYKIAogVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1l
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1l
JiYgcGxhaW5UaW1lKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWUodm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0pKSBUZW1wb3JhbFBs
YWluVGltZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBsYWluVGltZSkpOwogICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydQogCiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgcGxhaW5UaW1lUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eQogCiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlPih2bS5o
ZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU+KHZtKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gcHJvdG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxNCArMzUsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsVGltZVpv
bmU6OnNfaW5mbwogCiBUZW1wb3JhbFRpbWVab25lKiBUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVG
cm9tSUQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGltZVpvbmVJRCBpZGVudGlmaWVy
KQogewotICAgIFRlbXBvcmFsVGltZVpvbmUqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFRlbXBvcmFsVGltZVpvbmU+KHZtLmhlYXApKSBUZW1wb3JhbFRpbWVab25lKHZtLCBz
dHJ1Y3R1cmUsIFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDA+KCksIGlkZW50aWZp
ZXIgfSk7CisgICAgVGVtcG9yYWxUaW1lWm9uZSogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8VGVtcG9yYWxUaW1lWm9uZT4odm0pKSBUZW1wb3JhbFRpbWVab25lKHZtLCBzdHJ1
Y3R1cmUsIFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDA+KCksIGlkZW50aWZpZXIg
fSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsK
IH0KIAogVGVtcG9yYWxUaW1lWm9uZSogVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09m
ZnNldChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQ2NF90IHV0Y09mZnNldCkKIHsK
LSAgICBUZW1wb3JhbFRpbWVab25lKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbFRpbWVab25lPih2bS5oZWFwKSkgVGVtcG9yYWxUaW1lWm9uZSh2bSwgc3RydWN0
dXJlLCBUaW1lWm9uZSB7IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDwxPigpLCB1dGNPZmZzZXQgfSk7
CisgICAgVGVtcG9yYWxUaW1lWm9uZSogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxUaW1lWm9uZT4odm0pKSBUZW1wb3JhbFRpbWVab25lKHZtLCBzdHJ1Y3R1cmUs
IFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDE+KCksIHV0Y09mZnNldCB9KTsKICAg
ICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWMKIAogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKQogewot
ICAgIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I+KHZtLmhlYXApKSBU
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cAogCiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlPih2bSkpIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgV2Vha01hcENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQog
ICAgIHsKLSAgICAgICAgV2Vha01hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYWtNYXBD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha01hcENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBDb25zdHJ1Y3Rv
cj4odm0pKSBXZWFrTWFwQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha01hcFByb3RvdHlwZT4odm0uaGVhcCkpIFdlYWtNYXBQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtNYXBQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBQcm90b3R5cGU+KHZtKSkg
V2Vha01hcFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWFr
T2JqZWN0UmVmUHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAg
ICAgICBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2Vha09iamVjdFJlZkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2Vha09i
amVjdFJlZkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vh
a09iamVjdFJlZkNvbnN0cnVjdG9yPih2bSkpIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90
b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgV2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrT2JqZWN0UmVmUHJvdG90eXBlPih2bS5oZWFwKSkgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha09iamVjdFJl
ZlByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha09i
amVjdFJlZlByb3RvdHlwZT4odm0pKSBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFdlYWtTZXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAg
ICAgIFdlYWtTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWFrU2V0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWFrU2V0Q29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrU2V0Q29uc3RydWN0b3I+KHZtKSkgV2Vh
a1NldENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYWtTZXRQcm90b3R5cGU+KHZtLmhlYXApKSBXZWFrU2V0UHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrU2V0UHJvdG90eXBlPih2bSkpIFdlYWtTZXRQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgSlNEb2xsYXJWTUNhbGxGcmFtZSog
ZnJhbWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0RvbGxhclZNQ2FsbEZyYW1lPih2
bS5oZWFwKSkgSlNEb2xsYXJWTUNhbGxGcmFtZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNE
b2xsYXJWTUNhbGxGcmFtZSogZnJhbWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Rv
bGxhclZNQ2FsbEZyYW1lPih2bSkpIEpTRG9sbGFyVk1DYWxsRnJhbWUodm0sIHN0cnVjdHVyZSk7
CiAgICAgICAgIGZyYW1lLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbEZyYW1lLCByZXF1ZXN0ZWRG
cmFtZUluZGV4KTsKICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIH0KQEAgLTIzMyw3ICsyMzMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFbGVtZW50Pih2bS5oZWFwKSkgRWxlbWVudCh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEVsZW1lbnQ+KHZtKSkgRWxlbWVudCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZWxl
bWVudC0+ZmluaXNoQ3JlYXRpb24odm0sIHJvb3QpOwogICAgICAgICByZXR1cm4gZWxlbWVudDsK
ICAgICB9CkBAIC0zMTIsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBS
b290KiByb290ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Um9vdD4odm0uaGVhcCkpIFJv
b3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJvb3QqIHJvb3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxSb290Pih2bSkpIFJvb3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHJvb3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgfQpAQCAtMzYx
LDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgU2ltcGxlT2JqZWN0KiBz
aW1wbGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaW1wbGVPYmplY3Q+KHZt
LmhlYXApKSBTaW1wbGVPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFNpbXBsZU9iamVj
dCogc2ltcGxlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2ltcGxlT2JqZWN0
Pih2bSkpIFNpbXBsZU9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgc2ltcGxlT2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBzaW1wbGVPYmplY3Q7CiAgICAg
fQpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW1wdXJlR2V0dGVyKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGRlbGVnYXRlKQog
ICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAg
SW1wdXJlR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbXB1cmVH
ZXR0ZXI+KHZtLmhlYXApKSBJbXB1cmVHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIElt
cHVyZUdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW1wdXJlR2V0
dGVyPih2bSkpIEltcHVyZUdldHRlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5m
aW5pc2hDcmVhdGlvbih2bSwgZGVsZWdhdGUpOwogICAgICAgICByZXR1cm4gZ2V0dGVyOwogICAg
IH0KQEAgLTUyMCw3ICs1MjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEN1c3RvbUdldHRlciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBDdXN0b21HZXR0ZXIqIGdldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdldHRlcj4odm0uaGVhcCkpIEN1
c3RvbUdldHRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyKiBnZXR0ZXIg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXI+KHZtKSkgQ3VzdG9tR2V0
dGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC01OTgsNyArNTk4LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwog
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGNyZWF0ZVByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFy
cmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5Pih2bS5oZWFwKSkg
UnVudGltZUFycmF5KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgUnVudGltZUFy
cmF5KiBydW50aW1lQXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJy
YXk+KHZtKSkgUnVudGltZUFycmF5KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cnVudGltZUFycmF5LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIHZtLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRpbWVBcnJheSwgZGVzdHJveSk7CiAgICAg
ICAgIHJldHVybiBydW50aW1lQXJyYXk7CkBAIC03ODQsNyArNzg0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdGF0aWNDdXN0b21BY2Nlc3NvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgICAgICBTdGF0aWNDdXN0b21BY2Nlc3NvciogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTdGF0aWNDdXN0b21BY2Nlc3Nvcj4odm0uaGVhcCkpIFN0YXRpY0N1c3Rv
bUFjY2Vzc29yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTdGF0aWNDdXN0b21BY2Nlc3Nvciog
YWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdGF0aWNDdXN0b21BY2Nlc3Nv
cj4odm0pKSBTdGF0aWNDdXN0b21BY2Nlc3Nvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgYWNj
ZXNzb3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGFjY2Vzc29yOwogICAg
IH0KQEAgLTg4NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0YXRpY0N1c3RvbVZh
bHVlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFN0YXRpY0N1c3RvbVZh
bHVlKiBhY2Nlc3NvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0YXRpY0N1c3RvbVZh
bHVlPih2bS5oZWFwKSkgU3RhdGljQ3VzdG9tVmFsdWUodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IFN0YXRpY0N1c3RvbVZhbHVlKiBhY2Nlc3NvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFN0YXRpY0N1c3RvbVZhbHVlPih2bSkpIFN0YXRpY0N1c3RvbVZhbHVlKHZtLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBhY2Nlc3Nvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
YWNjZXNzb3I7CiAgICAgfQpAQCAtOTE3LDcgKzkxNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdp
dGhvdXRDb3JyZWN0U2xvdFN0YXR1cyogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM+KHZt
LmhlYXApKSBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1cyogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM+KHZtKSkgT2Jq
ZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBhY2Nlc3Nvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gYWNjZXNzb3I7CiAgICAgfQpAQCAtOTc1LDcgKzk3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgRE9NSklUTm9kZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01K
SVROb2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2
bS5oZWFwKSkgRE9NSklUTm9kZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRE9NSklUTm9kZSog
Z2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUTm9kZT4odm0pKSBET01K
SVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdldHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgICAgICBET01KSVRHZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERPTUpJVEdldHRlcj4odm0uaGVhcCkpIERPTUpJVEdldHRlcih2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgRE9NSklUR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxET01KSVRHZXR0ZXI+KHZtKSkgRE9NSklUR2V0dGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsK
ICAgICB9CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdl
dHRlck5vRWZmZWN0cyogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01K
SVRHZXR0ZXJOb0VmZmVjdHMqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERP
TUpJVEdldHRlck5vRWZmZWN0cz4odm0uaGVhcCkpIERPTUpJVEdldHRlck5vRWZmZWN0cyh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgRE9NSklUR2V0dGVyTm9FZmZlY3RzKiBnZXR0ZXIgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXJOb0VmZmVjdHM+KHZtKSkgRE9NSklU
R2V0dGVyTm9FZmZlY3RzKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0xMjIwLDcgKzEy
MjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdldHRlckNvbXBsZXgqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAg
ICAgRE9NSklUR2V0dGVyQ29tcGxleCogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8RE9NSklUR2V0dGVyQ29tcGxleD4odm0uaGVhcCkpIERPTUpJVEdldHRlckNvbXBsZXgodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZtKSkgRE9NSklUR2V0
dGVyQ29tcGxleCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlv
bih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0x
MzQ1LDcgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEZ1bmN0aW9uT2JqZWN0
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgICAgIERPTUpJVEZ1bmN0aW9uT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxET01KSVRGdW5jdGlvbk9iamVjdD4odm0uaGVhcCkpIERPTUpJVEZ1bmN0
aW9uT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBET01KSVRGdW5jdGlvbk9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklURnVuY3Rpb25PYmplY3Q+
KHZtKSkgRE9NSklURnVuY3Rpb25PYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgfQpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBET01K
SVRDaGVja0pTQ2FzdE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01KSVRDaGVja0pTQ2FzdE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUQ2hlY2tKU0Nhc3RPYmpl
Y3Q+KHZtLmhlYXApKSBET01KSVRDaGVja0pTQ2FzdE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPERPTUpJVENoZWNrSlNDYXN0T2JqZWN0Pih2bSkpIERPTUpJVENoZWNrSlNDYXN0
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KQEAgLTE0ODks
NyArMTQ4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIERPTUpJVEdldHRlckJhc2VK
U09iamVjdCogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVy
QmFzZUpTT2JqZWN0Pih2bS5oZWFwKSkgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QqIGdldHRlciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckJhc2VKU09iamVjdD4odm0pKSBET01K
SVRHZXR0ZXJCYXNlSlNPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGdldHRlci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZ2V0dGVyOwogICAgIH0KQEAgLTE1OTcs
NyArMTU5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAg
SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI+KHZtLmhlYXApKSBKU1Rlc3RDdXN0b21HZXR0
ZXJTZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRl
ciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyPih2bSkpIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcih2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtMTg2OCw3ICsxODY4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAg
ICBXYXNtU3RyZWFtaW5nUGFyc2VyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXYXNtU3RyZWFtaW5nUGFyc2VyPih2bS5oZWFwKSkgV2FzbVN0cmVhbWluZ1BhcnNlcih2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgV2FzbVN0cmVhbWluZ1BhcnNlciogcmVzdWx0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2FzbVN0cmVhbWluZ1BhcnNlcj4odm0pKSBXYXNtU3RyZWFt
aW5nUGFyc2VyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xOTQ5LDcgKzE5NDksNyBA
QCBwdWJsaWM6CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
ICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgV2Fz
bVN0cmVhbWluZ0NvbXBpbGVyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
YXNtU3RyZWFtaW5nQ29tcGlsZXI+KHZtLmhlYXApKSBXYXNtU3RyZWFtaW5nQ29tcGlsZXIodm0s
IHN0cnVjdHVyZSwgY29tcGlsZXJNb2RlLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGltcG9ydE9i
amVjdCk7CisgICAgICAgIFdhc21TdHJlYW1pbmdDb21waWxlciogcmVzdWx0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8V2FzbVN0cmVhbWluZ0NvbXBpbGVyPih2bSkpIFdhc21TdHJlYW1p
bmdDb21waWxlcih2bSwgc3RydWN0dXJlLCBjb21waWxlck1vZGUsIGdsb2JhbE9iamVjdCwgcHJv
bWlzZSwgaW1wb3J0T2JqZWN0KTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNEb2xsYXJWTSogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgICAgICBKU0RvbGxhclZNKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTRG9sbGFyVk0+KHZtLmhlYXApKSBKU0RvbGxhclZNKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBKU0RvbGxhclZNKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTRG9sbGFyVk0+KHZtKSkgSlNEb2xsYXJWTSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtSUNDYWxs
ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9X
YXNtSUNDYWxsZWUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUb1dhc21JQ0NhbGxlZTo6c19pbmZvCiBKU1RvV2Fz
bUlDQ2FsbGVlKiBKU1RvV2FzbUlDQ2FsbGVlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbikKIHsKICAgICBh
dXRvKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmpzVG9XYXNtSUNDYWxsZWVTdHJ1Y3R1cmUo
KTsKLSAgICBKU1RvV2FzbUlDQ2FsbGVlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1RvV2FzbUlDQ2FsbGVlPih2bS5oZWFwKSkgSlNUb1dhc21JQ0NhbGxlZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTVG9XYXNtSUNDYWxsZWUqIHJlc3VsdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVG9XYXNtSUNDYWxsZWU+KHZtKSkgSlNUb1dhc21J
Q0NhbGxlZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJlc3VsdC0+bV9mdW5jdGlvbi5zZXQodm0sIHJlc3VsdCwgZnVu
Y3Rpb24pOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05NSw3ICs5NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5OjpzX2lu
Zm8gPSAKIAogSlNXZWJBc3NlbWJseSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
YXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseT4o
dm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseT4odm0pKSBKU1dlYkFz
c2VtYmx5KHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBj
b25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6CiAKIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZShWTSYgdm0sIFJlZjxXYXNt
OjpDb2RlQmxvY2s+IGNvZGVCbG9jaywgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1v
ZHVsZUluZm9ybWF0aW9uKQogewotICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKHZtLCBXVEZNb3ZlKGNvZGVCbG9jayksIG1vZHVsZUluZm9ybWF0aW9uKTsKKyAg
ICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrPih2bSkpIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sodm0sIFdURk1vdmUoY29kZUJs
b2NrKSwgbW9kdWxlSW5mb3JtYXRpb24pOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5RXhjZXB0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBXYXNtOjpUYWcmIHRhZywgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgcGF5
bG9hZCkKICAgICB7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGV4Y2VwdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KHZtLmhl
YXApKSBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKHZtLCBzdHJ1Y3R1cmUsIHRhZywgV1RGTW92ZShw
YXlsb2FkKSk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KHZtKSkgSlNX
ZWJBc3NlbWJseUV4Y2VwdGlvbih2bSwgc3RydWN0dXJlLCB0YWcsIFdURk1vdmUocGF5bG9hZCkp
OwogICAgICAgICBleGNlcHRpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5R2xvYmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNXZWJBc3NlbWJseUdsb2JhbCogSlNXZWJB
c3NlbWJseUdsb2JhbAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRv
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlHbG9i
YWw+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5R2xvYmFsKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
Z2xvYmFsKSk7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1dlYkFzc2VtYmx5R2xvYmFsPih2bSkpIEpTV2ViQXNzZW1ibHlHbG9iYWwodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShnbG9iYWwpKTsKICAgICBpbnN0YW5jZS0+Z2xvYmFsKCktPnNldE93bmVy
KGluc3RhbmNlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBpbnN0YW5jZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3QKICAgICB9OwogCiAgICAgLy8gRklYTUU6IFRoZXNlIG9iamVjdHMgY291
bGQgYmUgcHJldHR5IGJpZyB3ZSBzaG91bGQgdHJ5IHRvIHRocm93IE9PTSBoZXJlLgotICAgIGF1
dG8qIGpzSW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0sIGluc3RhbmNlU3Ry
dWN0dXJlLCAKKyAgICBhdXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNXZWJBc3NlbWJseUluc3RhbmNlPih2bSkpIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSh2bSwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIAogICAgICAgICBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53
YXNtQ29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCAmdm0udG9wRW50cnlGcmFtZSwgdm0uYWRkcmVz
c09mU29mdFN0YWNrTGltaXQoKSwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKICAgICBq
c0luc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwganNNb2R1bGUsIG1vZHVsZVJlY29yZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBK
U1dlYkFzc2VtYmx5TWVtb3J5KiBKU1dlYkFzc2VtYmx5TWVtb3J5CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPndlYkFzc2VtYmx5RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUV2YWxFcnJvcihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7CiAKLSAgICBhdXRvKiBtZW1vcnkgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eU1lbW9yeSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBtZW1vcnkgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bSkpIEpTV2ViQXNzZW1ibHlNZW1v
cnkodm0sIHN0cnVjdHVyZSk7CiAgICAgbWVtb3J5LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIG1lbW9yeTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFz
c2VtYmx5TW9kdWxlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8q
IG1vZHVsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+
KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TW9kdWxlKHZtLCBzdHJ1Y3R1cmUsIHJlc3VsdC52YWx1
ZSgpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8qIG1vZHVsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+KHZtKSkgSlNXZWJBc3NlbWJseU1vZHVs
ZSh2bSwgc3RydWN0dXJlLCByZXN1bHQudmFsdWUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBt
b2R1bGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gbW9kdWxlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFi
bGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IEpTV2ViQXNzZW1ibHlUYWJsZSogSlNXZWJBc3NlbWJseVRhYmxlOjoKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5VGFibGU+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5VGFi
bGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZSh0YWJsZSkpOworICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseVRhYmxlPih2bSkpIEpTV2Vi
QXNzZW1ibHlUYWJsZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHRhYmxlKSk7CiAgICAgaW5zdGFu
Y2UtPnRhYmxlKCktPnNldE93bmVyKGluc3RhbmNlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBpbnN0YW5jZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWcuY3BwCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNXZWJB
c3NlbWJseVRhZzo6c19pbmZvCiBKU1dlYkFzc2VtYmx5VGFnKiBKU1dlYkFzc2VtYmx5VGFnOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgV2FzbTo6VGFnJiB0YWcpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byoganNUYWcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1dlYkFzc2VtYmx5VGFnPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseVRhZyh2bSwgc3RydWN0dXJl
LCB0YWcpOworICAgIGF1dG8qIGpzVGFnID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNX
ZWJBc3NlbWJseVRhZz4odm0pKSBKU1dlYkFzc2VtYmx5VGFnKHZtLCBzdHJ1Y3R1cmUsIHRhZyk7
CiAgICAganNUYWctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4ganNUYWc7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw3ICs3MCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBA
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclAKIAogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU+KHZtKSkgV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IqIFdl
YkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkK
IHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rv
cj4odm0pKSBXZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3QKIAogV2ViQXNz
ZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
RXhjZXB0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDcgKzQzNiw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWIKIFdlYkFzc2VtYmx5RnVuY3Rpb24qIFdlYkFz
c2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6Q2FsbGVlJiBqc0Vu
dHJ5cG9pbnQsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlv
biB3YXNtVG9XYXNtRW50cnlwb2ludExvYWRMb2NhdGlvbiwgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXgpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgV2FzbUZ1bmN0aW9uSW50
cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7Ci0g
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseUZ1bmN0aW9uPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGpzRW50cnlwb2ludCwgd2Fz
bVRvV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICBXZWJB
c3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5RnVuY3Rpb24+KHZtKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGpzRW50cnlwb2ludCwgd2FzbVRvV2FzbUVudHJ5
cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNo
Q3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UpOwogICAgIHJl
dHVybiBmdW5jdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEsNyArMTcxLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseUdsb2Jh
bENvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUqIHRoaXNQ
cm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlHbG9iYWxDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0
b3I+KHZtKSkgV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAg
ICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
R2xvYmFsUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMSw3ICsxMjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlHbG9iCiAKIFdlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlKiBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0g
ICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlH
bG9iYWxQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZT4odm0pKSBXZWJBc3NlbWJseUdsb2JhbFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC04Niw3ICs4Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJB
c3NlbWIKIAogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdAogCiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
KiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU+KHZtLmhl
YXApKSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I+KHZtLmhlYXAp
KSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhp
c1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90CiAKIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiBXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
Pih2bSkpIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTEsNyArMTUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAg
YXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I+KHZtKSkgV2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw3ICsxMTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04od2ViQXNzZW1ibHlNZW1vCiAKIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlPih2
bSkpIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xODgsNyArMTg4LDcgQEAgSlNXZWJBc3NlbWJseU1vZHVsZSogV2ViQXNz
ZW1ibHlNb2R1bGVDbwogCiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I+KHZtKSkgV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eQogCiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZT4odm0pKSBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmNyZWEKIAogV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQqIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24pCiB7Ci0gICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KHZt
LmhlYXApKSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkp
OworICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPih2bSkpIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CiAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIG1vZHVsZUluZm9ybWF0aW9uKTsKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03MCw3ICs3MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIK
IAogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
Pih2bSkpIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Myw3ICs0Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clAKIAogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVj
dDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NSw3ICsxNDUsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
ciogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsK
LSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNzcsNyArMTc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHdlYkFzc2VtYmx5VGFibAogCiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU+KHZtKSkgV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3
ICs5OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2Vi
QXNzZW1ibHlUYWdDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlKiB0
aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5VGFnQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yPih2
bSkpIFdlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRhZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFz
c2VtYmx5VGFnUHJvdG90eXBlOgogCiBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSogV2ViQXNzZW1i
bHlUYWdQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlUYWdQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhZ1By
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZT4odm0pKSBXZWJBc3NlbWJseVRh
Z1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiBXZWJBc3NlbWJseVcKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFmdW5jdGlvbi0+aW5oZXJpdHM8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+
KHZtKSwgIldlIHNob3VsZCBuZXZlciBkb3VibGUgd3JhcCBhIHdyYXBwZXIgZnVuY3Rpb24uIik7
CiAgICAgU3RyaW5nIG5hbWUgPSAiIjsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsK
LSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24geyBzaWduYXR1cmVJbmRleCwg
Jmluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRJbmRleCktPndh
c21Ub0VtYmVkZGVyU3R1YiB9ICk7CisgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHJl
c3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uPih2bSkpIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiB7
IHNpZ25hdHVyZUluZGV4LCAmaW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb25JbmZv
KGltcG9ydEluZGV4KS0+d2FzbVRvRW1iZWRkZXJTdHViIH0gKTsKICAgICBjb25zdCBXYXNtOjpT
aWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2ln
bmF0dXJlSW5kZXgpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUs
IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIG5hbWUsIGZ1bmN0aW9uLCBpbnN0YW5jZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisy
MDIxLTExLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZh
Y3RvciBhbGxvY2F0ZUNlbGwoKSBhbmQgdHJ5QWxsb2NhdGVDZWxsKCkgdG8gdGFrZSBWTSYgaW5z
dGVhZCBvZiBIZWFwJi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAyOAorICAgICAgICByZGFyOi8vODUzMjk2ODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXN5bmNJ
dGVyYXRvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlPEpTQ2xhc3M+OjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0Ns
YXNzPjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2luZG93UHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
IChHZW5lcmF0ZUl0ZXJhYmxlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9vYmplY3QuaDoKKwogMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIFZNOjp3cml0ZUJhcnJpZXIoKSBhbmQgVk06Om11dGF0b3JGZW5jZSgp
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJh
dG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQXN5bmNJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgSlNET01Bc3luY0l0ZXJhdG9yUHJv
dG90eXBlOjpCYXNlKTsKLSAgICAgICAgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQXN5bmNJdGVyYXRv
clByb3RvdHlwZT4odm0uaGVhcCkpIEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQXN5bmNJdGVyYXRvclByb3Rv
dHlwZT4odm0pKSBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAg
ICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBpbmxpbmUgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgSlNET01CdWlsdGluQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTRE9NQnVpbHRpbkNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNE
T01CdWlsdGluQ29uc3RydWN0b3I+KHZtKSkgSlNET01CdWlsdGluQ29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUy
LDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5l
IEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBKU0RPTUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01Db25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIEpTRE9NQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSlNET01Db25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9N
Q29uc3RydWN0b3I+KHZtKSkgSlNET01Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjUsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlPEpTQ2xh
c3M+KiBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGU8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUNvbnN0cnVjdG9yTm90Q2Fs
bGFibGU+KHZtLmhlYXApKSBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QpOworICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZSogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQ29uc3RydWN0b3JOb3RD
YWxsYWJsZT4odm0pKSBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00OSw3ICs0OSw3
IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0NsYXNzPiogSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPih2bS5o
ZWFwKSkgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUodm0sIHN0cnVjdHVyZSk7Cisg
ICAgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZT4odm0pKSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSh2bSwgc3RydWN0dXJlKTsK
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01JdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NSXRlcmF0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNET01JdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJvdG90eXBlLCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlOjpC
YXNlKTsKLSAgICAgICAgSlNET01JdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNET01JdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNET01J
dGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lG
YWN0b3J5RnVuY3Rpb248SlNDbGFzcz4qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xh
c3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb24qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RP
TUxlZ2FjeUZhY3RvcnlGdW5jdGlvbj4odm0uaGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01MZWdhY3lGYWN0
b3J5RnVuY3Rpb24+KHZtKSkgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24odm0sIHN0cnVjdHVy
ZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTRE9N
V2luZG93UHJvcGVydGllcyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIEpTRE9NV2luZG93
UHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTVdp
bmRvd1Byb3BlcnRpZXM+KGdsb2JhbE9iamVjdC52bSgpLmhlYXApKSBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dQ
cm9wZXJ0aWVzPihnbG9iYWxPYmplY3Qudm0oKSkpIEpTRE9NV2luZG93UHJvcGVydGllcyhzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9y
eUhhbmRsZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTRmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSYgaXRlcmF0ZWRPYmpl
Y3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGVJdGVyYXRvcj4odm0uaGVhcCkpIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
KHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOworICAgICAgICBhdXRvKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3I+KHZtKSkgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3Io
c3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2Jq
ZWN0OjpKCiAKIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCogSlNJREJTZXJpYWxpemF0
aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
PERPTVdyYXBwZXJXb3JsZD4mJiBpbXBsKQogewotICAgIEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdCogcHRyID0gIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSURCU2VyaWFsaXph
dGlvbkdsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKKyAgICBKU0lEQlNlcmlhbGl6YXRpb25H
bG9iYWxPYmplY3QqIHB0ciA9ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3Q+KHZtKSkgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwogICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiBwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dpbmRvd1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dpbmRvd1Byb3h5LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIEpTV2lu
ZG93UHJveHkmIEpTV2luZG93UHJveHk6OmNyZWF0ZShWTSYgdm0sIEFic3RyYWN0RE9NV2luZG93
JiB3aW5kb3csIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgYXV0byYgc3RydWN0dXJl
ID0gKlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBqc051bGwoKSwgVHlwZUluZm8oUHVyZUZvcndh
cmRpbmdQcm94eVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICBhdXRvJiBwcm94
eSA9ICpuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dpbmRvd1Byb3h5Pih2bS5oZWFwKSkg
SlNXaW5kb3dQcm94eSh2bSwgc3RydWN0dXJlLCB3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSAq
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXaW5kb3dQcm94eT4odm0pKSBKU1dpbmRvd1By
b3h5KHZtLCBzdHJ1Y3R1cmUsIHdvcmxkKTsKICAgICBwcm94eS5maW5pc2hDcmVhdGlvbih2bSwg
d2luZG93KTsKICAgICByZXR1cm4gcHJveHk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHdvcmtpbmcgY29weSkKQEAgLTI4NjcsMTQgKzI4NjcsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VOYW1l
IGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0o
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSwgcHJveHkpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4odm0pKSAke2NsYXNzTmFtZX0odm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShpbXBsKSwgcHJveHkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPih2bSkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZN
b3ZlKGltcGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIH1cblxuIik7CkBAIC0yODgzLDE0ICsyODgzLDE0IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NO
YW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQo
KS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksIFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBv
YmplY3RcIik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNs
YXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1l
PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKSkpICRjbGFzc05hbWUoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0
cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAg
fSBlbHNpZiAoIU5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgJGNs
YXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4g
cHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsgIApA
QCAtMjkwMCw3ICsyOTAwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTY3
NTksNyArNjc1OSw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgIHN0YXRpYyAke2l0ZXJh
dG9yTmFtZX0qIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
JHtjbGFzc05hbWV9JiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsK
LSAgICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PCR7aXRlcmF0b3JOYW1lfT4odm0uaGVhcCkpICR7aXRlcmF0b3JOYW1lfShzdHJ1Y3R1cmUsIGl0
ZXJhdGVkT2JqZWN0LCBraW5kKTsKKyAgICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7aXRlcmF0b3JOYW1lfT4odm0pKSAke2l0ZXJhdG9yTmFt
ZX0oc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CiAgICAgICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC03
NTIyLDcgKzc1MjIsNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAke3Byb3RvdHlwZUNsYXNzTmFtZX0qIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Q
cm90b3R5cGU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX1Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJHtj
bGFzc05hbWV9UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4odm0pKSAke2NsYXNzTmFtZX1Qcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJ
WE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2Yg
dGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRo
ZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRv
bVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZUFy
cmF5PihsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUnVudGltZUFycmF5KiBydW50aW1l
QXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KHZtLmhlYXAp
KSBSdW50aW1lQXJyYXkodm0sIGRvbVN0cnVjdHVyZSk7CisgICAgICAgIFJ1bnRpbWVBcnJheSog
cnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5Pih2
bSkpIFJ1bnRpbWVBcnJheSh2bSwgZG9tU3RydWN0dXJlKTsKICAgICAgICAgcnVudGltZUFycmF5
LT5maW5pc2hDcmVhdGlvbih2bSwgYXJyYXkpOwogICAgICAgICByZXR1cm4gcnVudGltZUFycmF5
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSdW50
aW1lTWV0aG9kKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5n
czo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgICAgIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPih2bS5oZWFwKSkgUnVudGltZU1ldGhvZCh2
bSwgc3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0
aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4odm0pKSBSdW50
aW1lTWV0aG9kKHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZCk7CiAgICAgICAgIHJ1bnRpbWVNZXRob2Qt
PmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIHJ1bnRpbWVNZXRob2Q7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUnVu
dGltZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxJ
bnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KHZtLmhlYXApKSBS
dW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW5zdGFuY2UpKTsKKyAgICAgICAg
UnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGlt
ZU9iamVjdD4odm0pKSBSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1
bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9P
YmpDUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPE9iamNJbnN0YW5jZT4mJiBpbnN0KQogICAg
IHsKLSAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbnN0KSk7CisgICAgICAgIE9iakNSdW50aW1lT2JqZWN0
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU9iamVjdD4o
dm0pKSBPYmpDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGluc3QpKTsKICAg
ICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1
Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8
T2JqQ1J1bnRpbWVNZXRob2Q+KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBPYmpDUnVu
dGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9i
akNSdW50aW1lTWV0aG9kPih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVNZXRob2Qodm0sIGRvbVN0cnVj
dHVyZSwgbWV0aG9kKTsKKyAgICAgICAgT2JqQ1J1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4odm0pKSBPYmpD
UnVudGltZU1ldGhvZCh2bSwgZG9tU3RydWN0dXJlLCBtZXRob2QpOwogICAgICAgICBydW50aW1l
TWV0aG9kLT5maW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CiAgICAgICAgIHJldHVybiBydW50aW1l
TWV0aG9kOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgLy8gRklYTUU6
IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUg
d3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdl
YkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihl
eGVjKTsKLSAgICAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBmYWxsYmFja09iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4odm0uaGVhcCkp
IE9iamNGYWxsYmFja09iamVjdEltcChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgaW5zdGFu
Y2UsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIE9iamNGYWxsYmFja09iamVjdEltcCogZmFsbGJh
Y2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpjRmFsbGJhY2tPYmplY3RJ
bXA+KHZtKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJl
LCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZmFsbGJhY2tPYmplY3QtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBmYWxsYmFja09iamVjdDsK
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="468946"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444045</attachid>
            <date>2021-11-11 22:06:00 -0800</date>
            <delta_ts>2021-11-11 22:46:06 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233028.patch</filename>
            <type>text/plain</type>
            <size>534285</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3OSBA
QAorMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgYWxsb2NhdGVDZWxsKCkgYW5kIHRyeUFsbG9jYXRlQ2VsbCgpIHRvIHRha2UgVk0m
IGluc3RlYWQgb2YgSGVhcCYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMjgKKyAgICAgICAgcmRhcjovLzg1MzI5NjgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWxsb2NhdGVDZWxsKCkgYW5kIHRy
eUFsbG9jYXRlQ2VsbCgpIGNhbiBmZXRjaCBIZWFwJiBmcm9tIFZNJiB0aGVtc2VsdmVzLiAgVGhp
cworICAgICAgICBhbGxvd3MgdXMgdG8gbWFrZSBhbGwgdGhlIGNsaWVudCBjb2RlIG1vcmUgdGVy
c2UsIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgICByZWRpcmVjdCB0aGUgdW5k
ZXJseWluZyBoZWFwIHRvIGFsbG9jYXRlIGZyb20gbGF0ZXIgZm9yIGdsb2JhbCBHQyB3b3JrLgor
ICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgd2lsbCBoZWxwIG1ha2UgdGhlIGdsb2JhbCBHQyBw
YXRjaCBsZXNzIG9mIGEgbWVnYSBwYXRjaCBhbmQKKyAgICAgICAgZWFzaWVyIHRvIHJldmlldyBs
YXRlci4KKworICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIEFQ
SS9KU0FQSVZhbHVlV3JhcHBlci5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD46OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFj
a0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suaDoK
KyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlw
dENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDTWVtb3J5Rm9vdHBy
aW50OjpjcmVhdGUpOgorICAgICAgICAoSlNGaWxlRGVzY3JpcHRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXN5bmNGcm9tU3luY0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QXRvbWljc09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9CaWdJbnRP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpCb29sZWFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVh
blByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZFByb2dyYW1Db2RlQmxvY2s6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZE1vZHVsZUNvZGVCbG9jazo6ZGVj
b2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRXZhbENvZGVCbG9jazo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25Db2RlQmxvY2s6OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29s
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50
cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgor
ICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
blJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHA6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bExpc3RGb3JtYXQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bExpc3RGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJ
dGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50c1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUl0ZXJhdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0
aWFsVmFsdWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9KU0FzeW5jR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpj
cmVhdGVXaXRoTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmFsbG9jYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OnRyeUFsbG9jYXRl
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0N1c3Rv
bVNldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5j
cHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlld1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnku
Y3BwOgorICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0NsYXNzPjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlPFZpZXdDbGFzcz46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSk6CisgICAgICAgICog
cnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTSW50ZXJuYWxQcm9t
aXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJ
bnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
YXA6OmNsb25lKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmg6CisgICAgICAgICogcnVudGlt
ZS9KU01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6Y3JlYXRl
V2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNl
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZXQ6OmNsb25lKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2V0Lmg6CisgICAgICAgICogcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNTZXRJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTb3VyY2VDb2Rl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3Ry
aW5nOjpjcmVhdGVFbXB0eVN0cmluZyk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3Ry
aW5nOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25l
cik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA6CisgICAgICAgIChKU0M6OkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmg6CisgICAgICAgICogcnVudGltZS9KU1dlYWtTZXQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTV2l0aFNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXaXRo
U2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL051bGxH
ZXR0ZXJGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlUYWJsZTo6Y2xvbmUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlS
ZXZva2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1JlZmxlY3RPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU2NvcGVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzVGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlNjb3BlZEFyZ3VtZW50c1RhYmxlOjp0cnlDcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1No
YWRvd1JlYWxtT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJz
ZUFycmF5VmFsdWVNYXA6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3ltYm9sT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2w6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlN5bWJvbDo6Y3JlYXRlV2l0aERlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXIuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxJbnN0YW50LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsTm93LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxOb3c6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3Bw
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KToK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dl
YWtTZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5o
OgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pT
VG9XYXNtSUNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpKU1RvV2FzbUlDQ2FsbGVlOjpjcmVh
dGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHk6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlFeGNlcHRpb24uaDoKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5R2xvYmFsOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjp0
cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseU1vZHVsZTo6Y3JlYXRlU3R1Yik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OnRyeUNyZWF0ZSk6
CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseVRhZzo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUV4
Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlUYWdQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUpOgorCiAyMDIxLTExLTExICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVk06OndyaXRlQmFycmllcigpIGFuZCBW
TTo6bXV0YXRvckZlbmNlKCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwMCw3ICs1MDAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
Z3VtZW50cykKICAgICB7Ci0gICAgICAgIEdsb2JhbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgR2xvYmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBHbG9iYWxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4odm0pKSBHbG9iYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0NNZW1vcnlGb290cHJpbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAg
IEpTQ01lbW9yeUZvb3RwcmludCogZm9vdHByaW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDTWVtb3J5Rm9vdHByaW50Pih2bS5oZWFwKSkgSlNDTWVtb3J5Rm9vdHByaW50KHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU0NNZW1vcnlGb290cHJpbnQqIGZvb3RwcmludCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ01lbW9yeUZvb3RwcmludD4odm0pKSBKU0NNZW1vcnlG
b290cHJpbnQodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGZvb3RwcmludC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gZm9vdHByaW50OwogICAgIH0KQEAgLTE3NzMsNyArMTc3
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNGaWxlRGVzY3JpcHRvciogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRklMRSomJiBkZXNjcmlwdG9yKQogICAg
IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBhdXRvKiBmaWxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNGaWxlRGVzY3JpcHRvcj4odm0uaGVhcCkpIEpTRmlsZURlc2NyaXB0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGF1dG8qIGZpbGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0ZpbGVEZXNjcmlwdG9yPih2bSkpIEpTRmlsZURlc2NyaXB0b3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIGZpbGUtPmZpbmlzaENyZWF0aW9uKHZtLCBkZXNjcmlwdG9yKTsK
ICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
UmVnRXhwLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEdsb2JhbE9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVj
dD4odm0uaGVhcCkpIEdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOworICAg
ICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4odm0pKSBHbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYXJndW1l
bnRzKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQVBJ
R2xvYmFsT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJ
R2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNBUElHbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJ
R2xvYmFsT2JqZWN0Pih2bSkpIEpTQVBJR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJVmFsdWVXcmFwcGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVZhbHVlV3Jh
cHBlci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QVBJVmFsdWVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU0FQSVZhbHVlV3JhcHBlciogY3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKiB3cmFwcGVyID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNBUElWYWx1ZVdyYXBwZXI+KHZtLmhlYXApKSBKU0FQSVZhbHVlV3JhcHBl
cih2bSk7CisgICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKiB3cmFwcGVyID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBUElWYWx1ZVdyYXBwZXI+KHZtKSkgSlNBUElWYWx1ZVdyYXBwZXIo
dm0pOwogICAgICAgICB3cmFwcGVyLT5maW5pc2hDcmVhdGlvbih2bSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwotICAgICAgICBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2bS5oZWFw
KSkgSlNDYWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1Jl
ZiwgY2FsbGJhY2spOworICAgICAgICBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2bSkp
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYs
IGNhbGxiYWNrKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdCwgY2xhc3NSZWYpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBKU0NhbGxiYWNrRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKAogSlNDYWxsYmFja0Z1bmN0
aW9uKiBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgSlNDYWxsYmFja0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlv
bj4odm0uaGVhcCkpIEpTQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsYmFjayk7
CisgICAgSlNDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4odm0pKSBKU0NhbGxiYWNrRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgY2FsbGJhY2spOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgbmFt
ZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsNyArMTAyLDcgQEAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgSlNDYWxsYmFj
a09iagogdGVtcGxhdGU8PgogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoVk0mIHZtLCBKU0NsYXNzUmVmIGNs
YXNzUmVmLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4odm0uaGVhcCkpIEpTQ2FsbGJhY2tP
YmplY3Qodm0sIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+KiBjYWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Pih2bSkpIEpTQ2FsbGJhY2tPYmplY3Qo
dm0sIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwogICAgIGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIGNhbGxiYWNrT2JqZWN0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmpl
Y3QsICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpIHx8IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0
KCkgPT0gZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tP
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0Pih2bS5o
ZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYs
IGRhdGEpOworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiBjYWxsYmFja09iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KHZtKSkgSlNDYWxsYmFja09i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYsIGRhdGEpOwogICAgICAgICBj
YWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrT2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU1OSw3ICs1NTksNyBAQCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6T2JqQ0Nh
bGxiYWNrRnVuY3RpCiBPYmpDQ2FsbGJhY2tGdW5jdGlvbiogT2JqQ0NhbGxiYWNrRnVuY3Rpb246
OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxPYmpDQ2FsbGJhY2tGdW5jdGlvbklt
cGw+IGltcGwpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9i
amNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ0NhbGxiYWNrRnVuY3Rp
b24+KHZtLmhlYXApKSBPYmpDQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Nv
bnN0cnVjdG9yLCBXVEZNb3ZlKGltcGwpKTsKKyAgICBPYmpDQ2FsbGJhY2tGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
dm0pKSBPYmpDQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBvYmpDQ2FsbGJhY2tGdW5j
dGlvbkNhbGxBc0Z1bmN0aW9uLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0NvbnN0cnVjdG9y
LCBXVEZNb3ZlKGltcGwpKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIDAsIG5h
bWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJv
biBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRl
KFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKICAgICB7
Ci0gICAgICAgIEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIEV2YWxDb2RlQmxvY2sqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0pKQog
ICAgICAgICAgICAgRXZhbENvZGVCbG9jayh2bSwgdm0uZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5n
ZXQoKSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hD
cmVhdGlvbih2bSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxv
Y2sqIGNyZWF0ZShWTSYgdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAg
IHsKLSAgICAgICAgRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS5oZWFwKSkKKyAgICAgICAgRXZhbENvZGVCbG9jayog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bSkp
CiAgICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS5ldmFsQ29kZUJsb2NrU3RydWN0dXJl
LmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSk7CiAgICAg
ICAgIGlmICghaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBTdHJ1Y3R1cmUqIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OmNyCiAKIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmNyZWF0ZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmhlYXApKSBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlKHZtLCBjb2RlQmxvY2spOworICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+KHZtKSkgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSh2bSwgY29kZUJsb2NrKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmlj
aEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCiAgICAgewotICAgICAgICBG
dW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkNvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2
bSkpCiAgICAgICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0uZnVuY3Rpb25Db2RlQmxv
Y2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2
bS5oZWFwKSkKKyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKHZtLCB2bS5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwg
b3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAo
IWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6
d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCiAg
ICAgewotICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQorICAg
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLm1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUu
Z2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4odm0pKQogICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0ubW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVy
b24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNy
ZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIp
CiAgICAgewotICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQorICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dy
YW1Db2RlQmxvY2s+KHZtKSkKICAgICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLnBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwog
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3Ro
ZXIpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBQcm9ncmFtRXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0gICAgICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVC
bG9jaz4odm0uaGVhcCkpCisgICAgICAgIFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVCbG9jaz4odm0pKQogICAgICAgICAg
ICAgUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0ucHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQo
KSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBp
ZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRXZhbENv
ZGVCbG9jay5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0
ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5r
ZWRFdmFsQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5rZWRFdmFsQ29kZUJsb2NrKHZtLCB2bS51
bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9u
TW9kZSk7CisgICAgICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtKSkgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCks
IGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBjcmVhdGUoVk0mIHZtLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUlu
Zm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4odm0u
aGVhcCkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLnVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGNvZGVUeXBlLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1v
ZGUpOworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KHZtKSkgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0
cnVjdHVyZS5nZXQoKSwgY29kZVR5cGUsIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0g
ZmFsc2UpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0uaGVhcCkpCisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Pih2bSkpCiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5s
aW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3Ip
OwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgICAgIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtKSkgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgewot
ICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgICAgIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtKSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKHZtLCB2
bS51bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5l
cmF0aW9uTW9kZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIERlYnVnZ2VyU2NvcGU6OnNf
aW5mbyA9IAogRGVidWdnZXJTY29wZSogRGVidWdnZXJTY29wZTo6Y3JlYXRlKFZNJiB2bSwgSlNT
Y29wZSogc2NvcGUpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzY29wZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+ZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpOwotICAgIERlYnVnZ2VyU2NvcGUq
IGRlYnVnZ2VyU2NvcGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEZWJ1Z2dlclNjb3Bl
Pih2bS5oZWFwKSkgRGVidWdnZXJTY29wZSh2bSwgc3RydWN0dXJlLCBzY29wZSk7CisgICAgRGVi
dWdnZXJTY29wZSogZGVidWdnZXJTY29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERl
YnVnZ2VyU2NvcGU+KHZtKSkgRGVidWdnZXJTY29wZSh2bSwgc3RydWN0dXJlLCBzY29wZSk7CiAg
ICAgZGVidWdnZXJTY29wZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBkZWJ1Z2dl
clNjb3BlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNJbmplY3Rl
ZFNjcmlwdEhvc3QqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNJbmpl
Y3RlZFNjcmlwdEhvc3QqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU0luamVjdGVkU2NyaXB0SG9zdD4odm0uaGVhcCkpIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU0luamVjdGVkU2NyaXB0SG9z
dCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0Pih2bSkpIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZT4odm0pKSBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTSmF2
YVNjcmlwdENhbGxGcmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWY8SmF2YVNjcmlwdENhbGxGcmFtZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPih2bS5oZWFwKSkgSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U0phdmFTY3JpcHRDYWxsRnJhbWU+KHZtKSkgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGU+KHZtLmhl
YXApKSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZT4odm0pKSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5
cGUpCiAgICAgewotICAgICAgICBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I+KHZtKSkgQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIEFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBBZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRl
RXJyb3JQcm90b3R5cGU+KHZtKSkgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXJyYXlDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVz
U3ltYm9sKQogICAgIHsKLSAgICAgICAgQXJyYXlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQXJy
YXlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXJyYXlDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9y
Pih2bSkpIEFycmF5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBhcnJheVByb3RvdHlwZSwgc3Bl
Y2llc1N5bWJvbCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlJdGVyYXRvclByb3RvdHlwZT4odm0u
aGVhcCkpIEFycmF5SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEFycmF5SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgQXJyYXlJdGVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAg
LTYxLDcgKzYxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPQog
CiBBcnJheVByb3RvdHlwZSogQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFycmF5
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheVBy
b3RvdHlwZT4odm0uaGVhcCkpIEFycmF5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFy
cmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJh
eVByb3RvdHlwZT4odm0pKSBBcnJheVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90
b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBwcm90
b3R5cGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWls
LmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1Niw3IEBAIHZv
aWQgQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpmaW4KIAogQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBBc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBwcm90b3R5cGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29t
Pi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzQwLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUpCiAgICAgewotICAgICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yPih2bSkpIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5
bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXN5bmNGdW5j
dGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5
bmNGdW5jdGlvblByb3RvdHlwZT4odm0pKSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtv
diA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0pKSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxn
c2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0
LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0u
aGVhcCkpIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZt
KSkgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5l
cmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVr
c2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5
bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBBc3luY0dlbmVyYXRvclByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBBc3luY0dlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlPih2bSkpIEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNo
a292QGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jSXRlcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBB
c3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBBdG9taWNzT2JqZWN0OjpB
dG9taWNzT2JqZWN0KFZNJiB2bSwgU3RyCiAKIEF0b21pY3NPYmplY3QqIEF0b21pY3NPYmplY3Q6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewotICAgIEF0b21pY3NPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEF0b21pY3NPYmplY3Q+KHZtLmhlYXApKSBBdG9taWNzT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIEF0b21pY3NPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEF0b21pY3NPYmplY3Q+KHZtKSkgQXRvbWljc09iamVjdCh2bSwgc3RydWN0dXJl
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEJpZ0ludENvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmlnSW50UHJvdG90eXBlKiBiaWdJ
bnRQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBCaWdJbnRDb25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRDb25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEJpZ0ludENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBCaWdJbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxCaWdJbnRDb25zdHJ1Y3Rvcj4odm0pKSBCaWdJbnRDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnRQ
cm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gQmln
SW50T2JqZWN0OjpzX2luZm8gPSB7CiBCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7
CiAgICAgQVNTRVJUKGJpZ0ludC5pc0JpZ0ludCgpKTsKLSAgICBCaWdJbnRPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJp
Z0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7Cisg
ICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJ
bnRPYmplY3Q+KHZtKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVj
dFN0cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgQmlnSW50UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRQcm90b3R5cGU+KHZtLmhlYXApKSBCaWdJbnRQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEJpZ0ludFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50UHJvdG90eXBlPih2bSkpIEJp
Z0ludFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBl
LCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEJvb2xlYW5Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQm9v
bGVhbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEJvb2xlYW5Db25zdHJ1Y3Rvcj4odm0pKSBCb29sZWFuQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYm9vbGVhblByb3Rv
dHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBCb29sZWFuT2JqZWN0KiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEJvb2xl
YW5PYmplY3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuT2Jq
ZWN0Pih2bS5oZWFwKSkgQm9vbGVhbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQm9v
bGVhbk9iamVjdCogYm9vbGVhbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJvb2xlYW5P
YmplY3Q+KHZtKSkgQm9vbGVhbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgYm9vbGVh
bi0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gYm9vbGVhbjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQm9v
bGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9v
bGVhblByb3RvdHlwZT4odm0uaGVhcCkpIEJvb2xlYW5Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEJvb2xlYW5Qcm90b3R5cGU+KHZtKSkgQm9vbGVhblByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVj
dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgQnJhbmRlZFN0cnVjdHVy
ZTo6QnJhbmRlZFN0cnVjdHVyZShWTSYgdgogU3RydWN0dXJlKiBCcmFuZGVkU3RydWN0dXJlOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJh
bmRVaWQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJl
ZCkKIHsKICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBCcmFuZGVkU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVk
U3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5k
VWlkLCBkZWZlcnJlZCk7CisgICAgQnJhbmRlZFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0pKSBCcmFuZGVkU3Ry
dWN0dXJlKHZtLCBwcmV2aW91cywgYnJhbmRVaWQsIGRlZmVycmVkKTsKICAgICBuZXdTdHJ1Y3R1
cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2aW91cyk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+dHlwZSgpID09IFN0cnVjdHVyZVR5cGUpOwogICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNyArMTk5MCw3IEBAIHB1YmxpYzoKIAog
ICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CiAgICAgewotICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZGVj
b2Rlci52bSgpLmhlYXApKSBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMp
OworICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgp
KSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsKICAgICAgICAgY29k
ZUJsb2NrLT5maW5pc2hDcmVhdGlvbihkZWNvZGVyLnZtKCkpOwogICAgICAgICBCYXNlOjpkZWNv
ZGUoZGVjb2RlciwgKmNvZGVCbG9jayk7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zLmRlY29k
ZShkZWNvZGVyLCBjb2RlQmxvY2stPm1fdmFyRGVjbGFyYXRpb25zKTsKQEAgLTIwMTUsNyArMjAx
NSw3IEBAIHB1YmxpYzoKIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZGVj
b2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgpLmhlYXApKSBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMpOworICAgICAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4oZGVjb2Rlci52bSgpKSkg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsKICAgICAgICAg
Y29kZUJsb2NrLT5maW5pc2hDcmVhdGlvbihkZWNvZGVyLnZtKCkpOwogICAgICAgICBCYXNlOjpk
ZWNvZGUoZGVjb2RlciwgKmNvZGVCbG9jayk7CiAgICAgICAgIGNvZGVCbG9jay0+bV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCA9IG1fbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQ7CkBAIC0yMDM5LDcgKzIw
MzksNyBAQCBwdWJsaWM6CiAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5saW5rZWRFdmFsQ29kZUJsb2NrKGRlY29kZXIs
ICp0aGlzKTsKKyAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KGRlY29kZXIudm0o
KSkpIFVubGlua2VkRXZhbENvZGVCbG9jayhkZWNvZGVyLCAqdGhpcyk7CiAgICAgICAgIGNvZGVC
bG9jay0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICAgICAgQmFzZTo6ZGVjb2Rl
KGRlY29kZXIsICpjb2RlQmxvY2spOwogICAgICAgICBtX3ZhcmlhYmxlcy5kZWNvZGUoZGVjb2Rl
ciwgY29kZUJsb2NrLT5tX3ZhcmlhYmxlcyk7CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCBwdWJsaWM6
CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayhkZWNvZGVy
LCAqdGhpcyk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KGRl
Y29kZXIudm0oKSkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soZGVjb2RlciwgKnRoaXMpOwog
ICAgICAgICBjb2RlQmxvY2stPmZpbmlzaENyZWF0aW9uKGRlY29kZXIudm0oKSk7CiAgICAgICAg
IEJhc2U6OmRlY29kZShkZWNvZGVyLCAqY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNvZGVC
bG9jazsKQEAgLTIyNDMsNyArMjI0Myw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGEKIAogQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QK
IHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihkZWNvZGVyLnZt
KCkuaGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGRlY29kZXIsICp0aGlzKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihkZWNvZGVyLnZtKCkpKSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShkZWNvZGVyLCAqdGhpcyk7CiAgICAgZXhlY3V0YWJs
ZS0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgfQogICAgIAog
ICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8Q2xvbmVkQXJndW1lbnRzPih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8Q2xvbmVkQXJndW1lbnRzPih2bSkpCiAgICAgICAgIENsb25lZEFyZ3Vt
ZW50cyh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIENvbnNvbGVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENv
bnNvbGVPYmplY3Q+KHZtLmhlYXApKSBDb25zb2xlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBDb25zb2xlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxD
b25zb2xlT2JqZWN0Pih2bSkpIENvbnNvbGVPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ3VzdG9tR2V0dGVyU2V0
dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0
ZXIgY3VzdG9tU2V0dGVyKQogICAgIHsKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0
b21HZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXJT
ZXR0ZXI+KHZtLmhlYXApKSBDdXN0b21HZXR0ZXJTZXR0ZXIodm0sIHZtLmN1c3RvbUdldHRlclNl
dHRlclN0cnVjdHVyZS5nZXQoKSwgY3VzdG9tR2V0dGVyLCBjdXN0b21TZXR0ZXIpOworICAgICAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEN1c3RvbUdldHRlclNldHRlcj4odm0pKSBDdXN0b21HZXR0ZXJTZXR0ZXIo
dm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSwgY3VzdG9tR2V0dGVyLCBj
dXN0b21TZXR0ZXIpOwogICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIq
IGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBj
dXN0b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQogICAgIHsK
LSAgICAgICAgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtLmhl
YXApKSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIodm0sIGN1c3RvbUdldHRlciwgY3VzdG9tU2V0
dGVyLCBkb21BdHRyaWJ1dGUpOworICAgICAgICBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGN1
c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcj4odm0pKSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIodm0sIGN1c3RvbUdl
dHRlciwgY3VzdG9tU2V0dGVyLCBkb21BdHRyaWJ1dGUpOwogICAgICAgICBjdXN0b21HZXR0ZXJT
ZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNl
dHRlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDcgKzM0LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIERhdGVDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUsIEdldHRlclNl
dHRlciopCiAgICAgewotICAgICAgICBEYXRlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRGF0ZUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBEYXRlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPih2bSkp
IERhdGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBkYXRlUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsMTQgKzQyLDE0IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBkb3VibGUgZGF0ZSkKICAgICB7Ci0gICAgICAgIERhdGVJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KHZtLmhlYXApKSBE
YXRlSW5zdGFuY2Uodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIERhdGVJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KHZtKSkgRGF0ZUlu
c3RhbmNlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGRhdGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCiAgICAgc3RhdGlj
IERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPih2bS5oZWFwKSkgRGF0ZUluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPih2bSkpIERhdGVJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBE
YXRlUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEYXRl
UHJvdG90eXBlPih2bS5oZWFwKSkgRGF0ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgRGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RGF0ZVByb3RvdHlwZT4odm0pKSBEYXRlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBy
ZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBEaXJlY3RBcmd1bWVudHMqIERpcmVjdEFyZ3VtZW50czo6
Y3JlYXRlCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBjYXBhY2l0eSkKIHsKICAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEFyZ3VtZW50cz4odm0uaGVh
cCwgYWxsb2NhdGlvblNpemUoY2FwYWNpdHkpKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RGlyZWN0QXJndW1lbnRzPih2bSwgYWxsb2NhdGlvblNpemUoY2FwYWNpdHkpKSkK
ICAgICAgICAgRGlyZWN0QXJndW1lbnRzKHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgY2FwYWNpdHkp
OwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyAr
NDUsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFiCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVj
dEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0pKSBEaXJlY3RF
dmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBl
KiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAgICAgIEVycm9yQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGVycm9yUHJv
dG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXJyb3JJbnN0
YW5jZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNWYWx1ZSBjYXVzZSwgU291
cmNlQXBwZW5kZXIgYXBwZW5kZXIgPSBudWxscHRyLCBSdW50aW1lVHlwZSB0eXBlID0gVHlwZU5v
dGhpbmcsIEVycm9yVHlwZSBlcnJvclR5cGUgPSBFcnJvclR5cGU6OkVycm9yLCBib29sIHVzZUN1
cnJlbnRGcmFtZSA9IHRydWUpCiAgICAgewotICAgICAgICBFcnJvckluc3RhbmNlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KHZtLmhlYXApKSBF
cnJvckluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUsIGVycm9yVHlwZSk7CisgICAgICAgIEVycm9ySW5z
dGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5j
ZT4odm0pKSBFcnJvckluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUsIGVycm9yVHlwZSk7CiAgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCBjYXVz
ZSwgYXBwZW5kZXIsIHR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90
eXBlPih2bS5oZWFwKSkgRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEVy
cm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJv
clByb3RvdHlwZT4odm0pKSBFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgIkVycm9yIl9zKTsKICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEV4Y2VwdGlvbjo6c19pbmZvID0geyAiRQogCiBFeGNlcHRpb24qIEV4
Y2VwdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB0aHJvd25WYWx1ZSwgU3RhY2tDYXB0dXJl
QWN0aW9uIGFjdGlvbikKIHsKLSAgICBFeGNlcHRpb24qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEV4Y2VwdGlvbj4odm0uaGVhcCkpIEV4Y2VwdGlvbih2bSk7CisgICAgRXhj
ZXB0aW9uKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFeGNlcHRpb24+KHZt
KSkgRXhjZXB0aW9uKHZtKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCB0aHJvd25W
YWx1ZSwgYWN0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAg
IHsKLSAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yPih2bSkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGU+KHZtKSkgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEZ1bmN0aW9uQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0p
KSBGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIGZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHVubGlua2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pCiAgICAgewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxl
LCBpbnRyaW5zaWMsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0
aW9uRXhlY3V0YWJsZT4odm0pKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5r
ZWRFeGVjdXRhYmxlLCBpbnRyaW5zaWMsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUpOwog
ICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBGdW5jdGlvblByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPih2bSkpIEZ1bmN0aW9u
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0
aW9uKHZtLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNv
bnN0IENsYXNzSW5mbyBGdW5jdGlvblJhcmVEYXRhOjpzX2luZm8KIAogRnVuY3Rpb25SYXJlRGF0
YSogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUpCiB7Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxGdW5jdGlvblJhcmVEYXRhPih2bS5oZWFwKSkgRnVuY3Rpb25SYXJlRGF0
YSh2bSwgZXhlY3V0YWJsZSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblJhcmVEYXRhPih2bSkpIEZ1bmN0aW9uUmFy
ZURhdGEodm0sIGV4ZWN1dGFibGUpOwogICAgIHJhcmVEYXRhLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIHJhcmVEYXRhOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDQsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0pKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtKSkgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0pKSBHZW5lcmF0b3JQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgR2V0dGVyU2V0
dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyKQogICAgIHsKLSAgICAgICAgR2V0dGVyU2V0dGVy
KiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+
KHZtLmhlYXApKSBHZXR0ZXJTZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIp
OworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEdldHRlclNldHRlcj4odm0pKSBHZXR0ZXJTZXR0ZXIodm0sIGdsb2JhbE9iamVj
dCwgZ2V0dGVyLCBzZXR0ZXIpOwogICAgICAgICBnZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlclNldHRlcjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEhhc2hNYXBCdWNr
ZXQqIGNyZWF0ZShWTSYgdm0pCiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0KiBidWNrZXQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxIYXNoTWFwQnVja2V0PERhdGE+Pih2bS5oZWFw
KSkgSGFzaE1hcEJ1Y2tldCh2bSwgc2VsZWN0U3RydWN0dXJlKHZtKSk7CisgICAgICAgIEhhc2hN
YXBCdWNrZXQqIGJ1Y2tldCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEhhc2hNYXBCdWNr
ZXQ8RGF0YT4+KHZtKSkgSGFzaE1hcEJ1Y2tldCh2bSwgc2VsZWN0U3RydWN0dXJlKHZtKSk7CiAg
ICAgICAgIGJ1Y2tldC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIWJ1Y2tl
dC0+bmV4dCgpKTsKICAgICAgICAgQVNTRVJUKCFidWNrZXQtPnByZXYoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcs
NyBAQCBpbmxpbmUgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlPih2bSkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBl
KTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDcgKzE3MSw3IEBAIEludGVybmFsRnVuY3Rpb24qIEludGVybmFsRnVuY3Rpb246OmNyZWEKIHsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIFR5cGVJbmZvKEludGVybmFs
RnVuY3Rpb25UeXBlLCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFncyB8IE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpLCBJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpOwogICAgIGdsb2JhbE9i
amVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxP
YmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdCIpOwotICAgIEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50ZXJu
YWxGdW5jdGlvbj4odm0uaGVhcCkpIEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgbmF0
aXZlRnVuY3Rpb24pOworICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50ZXJuYWxGdW5jdGlvbj4odm0pKSBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUsIG5hdGl2ZUZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGxlbmd0aCwgbmFtZSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCiBJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmb3JtYXQ7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykgMjAx
NSBTdWtvbHNhayBTYWtzaHV3b25nIChzdWtvbHNha0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yOgogCiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogSW50
bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlKQogewotICAgIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxDb2xsYXRvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yQ29uc3RydWN0
b3I+KHZtKSkgSW50bENvbGxhdG9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBjb2xsYXRvclByb3RvdHlwZSk7CiAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxDb2xsYXRvclByb3RvdHlwZTo6cwogCiBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIElu
dGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvclByb3RvdHlwZT4odm0uaGVh
cCkpIEludGxDb2xsYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xs
YXRvclByb3RvdHlwZT4odm0pKSBJbnRsQ29sbGF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBJbnRsRGF0
ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0
ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtKSkg
SW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBmb3JtYXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cgogCiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKQogewotICAgIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtKSkgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdFByb3RvdAogCiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGU+KHZtKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw3ICs0MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVzOjpz
X2luZm8KIAogSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxEaXNwbGF5
TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0pKSBJbnRsRGlzcGxheU5hbWVzKHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBv
YmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8g
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjCiAKIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvciog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBl
KQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yPih2bSkpIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cAogCiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2bSkpIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgVUxpc3RGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigp
KFUKIAogSW50bExpc3RGb3JtYXQqIEludGxMaXN0Rm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsTGlzdEZvcm1hdD4odm0uaGVhcCkpIEludGxMaXN0Rm9ybWF0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxMaXN0Rm9ybWF0Pih2bSkpIEludGxMaXN0Rm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlz
dEZvcm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3RvCiAKIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3IqIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTGlzdEZvcm1hdFBy
b3RvdHlwZSogbGlzdEZvcm1hdFByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3I+KHZt
LmhlYXApKSBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvcj4odm0pKSBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbGlzdEZvcm1hdFByb3Rv
dHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDcgKzUzLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlOgogCiBJbnRsTGlzdEZvcm1hdFBy
b3RvdHlwZSogSW50bExpc3RGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEludGxMaXN0Rm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bExpc3RGb3JtYXRQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bExpc3RGb3JtYXRQcm90b3R5cGU+KHZtKSkgSW50bExpc3RGb3Jt
YXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBJbnRs
TG9jYWxlKiBJbnRsTG9jYWxlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9j
YWxlPih2bS5oZWFwKSkgSW50bExvY2FsZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlPih2bSkpIEludGxMb2Nh
bGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVD
b25zdHJ1Y3Rvcjo6cwogCiBJbnRsTG9jYWxlQ29uc3RydWN0b3IqIEludGxMb2NhbGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxMb2NhbGVQcm90
b3R5cGUqIGxvY2FsZVByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMb2NhbGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxMb2NhbGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMb2NhbGVDb25zdHJ1Y3Rvcj4odm0p
KSBJbnRsTG9jYWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBsb2NhbGVQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTg3LDcgKzg4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaQog
CiBJbnRsTG9jYWxlUHJvdG90eXBlKiBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bExvY2Fs
ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlUHJvdG90eXBlPih2bSkpIEludGxMb2NhbGVQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKIAog
SW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1i
ZXJGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0pKSBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBmb3JtYXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQs
NyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdENvbnN0cnVjCiAKIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlKQogewotICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcj4odm0pKSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5
cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MSw3ICs2MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXAKIAog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkp
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0pKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5
QHZhbndhZ29uZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChDKSAyMDE1IFN1a29sc2FrIFNha3No
dXdvbmcgKHN1a29sc2FrQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjI5LDcgKzIyOSw3IEBAIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUK
IAogSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkp
IEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0pKSBJbnRsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVs
ZXRlcjx1CiAKIEludGxQbHVyYWxSdWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBJbnRsUGx1cmFsUnVsZXMqIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlcz4odm0uaGVhcCkpIElu
dGxQbHVyYWxSdWxlcyh2bSwgc3RydWN0dXJlKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIGZvcm1h
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlcz4odm0pKSBJbnRs
UGx1cmFsUnVsZXModm0sIHN0cnVjdHVyZSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQs
NyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0CiAKIEludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogcGx1
cmFsUnVsZXNQcm90b3R5cGUpCiB7Ci0gICAgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcj4odm0pKSBJ
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsdXJhbFJ1bGVzUHJvdG90eXBlKTsKICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZQogCiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUq
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU+KHZtKSkgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZvcm1hdEludGVybmFsCiAK
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTMsNyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvCiAKIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yPih2bSkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNyArNTQsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByCiAKIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGU+KHZtKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MCw3ICszOSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9yOjpzX2kKIAog
SW50bFNlZ21lbnRJdGVyYXRvciogSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJy
ZWFrSXRlcmF0b3JEZWxldGVyPiYmIHNlZ21lbnRlciwgQm94PFZlY3RvcjxVQ2hhcj4+IGJ1ZmZl
ciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bFNlZ21lbnRJdGVyYXRvcj4odm0uaGVhcCkpIEludGxTZWdtZW50SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKGJ1ZmZlciksIGdyYW51bGFyaXR5KTsK
KyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVu
dEl0ZXJhdG9yPih2bSkpIEludGxTZWdtZW50SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKGJ1ZmZlciksIGdyYW51bGFyaXR5KTsKICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtLCBzdHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDksNyArNDksNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvCiAKIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIEludGxTZWdtZW50
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxTZWdtZW50ZXI6OnNfaW5m
byA9IAogCiBJbnRsU2VnbWVudGVyKiBJbnRsU2VnbWVudGVyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsU2VnbWVudGVyPih2bSkpIEludGxTZWdtZW50ZXIodm0sIHN0cnVjdHVyZSk7CiAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IKIAog
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBz
ZWdtZW50ZXJQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I+
KHZtKSkgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc2VnbWVudGVyUHJvdG90eXBlKTsKICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNyArNTEsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNl
Z21lbnRlclByb3RvdHlwZTo6CiAKIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIEludGxTZWdtZW50
ZXJQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJQ
cm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudGVyUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdt
ZW50ZXJQcm90b3R5cGU+KHZtKSkgSW50bFNlZ21lbnRlclByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsU2VnbWVudHM6OnNfaW5mbyA9IHsKIAogSW50bFNlZ21lbnRzKiBJbnRsU2VnbWVudHM6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0
b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNlZ21lbnRlcjo6R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkgSW50bFNlZ21lbnRzKHZtLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0
eSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNl
Z21lbnRzPih2bSkpIEludGxTZWdtZW50cyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRl
ciksIFdURk1vdmUoYnVmZmVyKSwgZ3JhbnVsYXJpdHkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIHN0cmluZyk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudHNQcm90b3R5cGU6OnMKIAogSW50bFNlZ21lbnRzUHJv
dG90eXBlKiBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50c1Byb3RvdHlwZT4o
dm0uaGVhcCkpIEludGxTZWdtZW50c1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudHNQcm90b3R5
cGU+KHZtKSkgSW50bFNlZ21lbnRzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEl0ZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkgSXRl
cmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0yODYsNyArMjg2LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0
ZShWTSYgdm0sIAogCiBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZs
eShWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBKU0FycmF5KiBhcnJheSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLmhlYXAsIGRlZmVycmFsQ29u
dGV4dCkpIEpTQXJyYXkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBKU0FycmF5KiBh
cnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLCBkZWZlcnJhbENv
bnRleHQpKSBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAgICAgYXJyYXktPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01Miw3ICs1Miw3IEBAIEpTQXJyYXlCdWZmZXIqIEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZSgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXlCdWZmZXI+KHZtLmhlYXAp
KQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5QnVmZmVyPih2bSkp
CiAgICAgICAgIEpTQXJyYXlCdWZmZXIodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBwcm90b3R5cGUsIEdl
dHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAgICB7CiAgICAgICAgIEpTR2VuZXJpY0FycmF5
QnVmZmVyQ29uc3RydWN0b3IqIHJlc3VsdCA9Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNH
ZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0
b3I+KHZtKSkgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
ICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlLCBzcGVjaWVzU3lt
Ym9sKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdAogSlNBcnJheUJ1ZmZl
clByb3RvdHlwZSogSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCiB7CiAgICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSog
cHJvdG90eXBlID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJheUJ1
ZmZlclByb3RvdHlwZT4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+KHZtKSkKICAgICAgICAgSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIHNoYXJpbmdNb2RlKTsKICAgICByZXR1cm4gcHJvdG90eXBlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0
IENsYXNzSW5mbyBKU0FycmF5SXRlcmF0b3I6OnNfaW5mbyAKIEpTQXJyYXlJdGVyYXRvciogSlNB
cnJheUl0ZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpCiB7CiAgICAgQVNTRVJUKGtpbmQuYXNV
SW50MzIoKSA8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uS2luZDo6RW50cmllcykp
OwotICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0FycmF5SXRlcmF0b3I+KHZtLmhlYXApKSBKU0FycmF5SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQXJyYXlJdGVyYXRvcj4odm0pKSBKU0FycmF5SXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSk7CiAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBpdGVyYXRvci0+
aW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLnNldCh2bSwgaXRlcmF0b3IsIGl0
ZXJhdGVkT2JqZWN0KTsKICAgICBpdGVyYXRvci0+aW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCku
c2V0KHZtLCBpdGVyYXRvciwga2luZCk7CkBAIC00NSw3ICs0NSw3IEBAIEpTQXJyYXlJdGVyYXRv
ciogSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUKIAogSlNBcnJheUl0ZXJhdG9yKiBKU0FycmF5SXRl
cmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7Ci0gICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQXJyYXlJdGVyYXRvcj4odm0uaGVhcCkpIEpTQXJyYXlJdGVyYXRvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBcnJheUl0ZXJhdG9yPih2bSkpIEpTQXJyYXlJdGVyYXRvcih2bSwg
c3RydWN0dXJlKTsKICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBc3luY0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNh
aXRwQGlnYWxpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyAr
NDIsNyBAQCBKU0FzeW5jRnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0sCiAKIEpTQXN5
bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7Ci0gICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBKU0FzeW5jRnVuY3Rpb24q
IGFzeW5jRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jRnVuY3Rp
b24+KHZtKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJl
KTsKICAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0
KCkpOwogICAgIGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
YXN5bmNGdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBc3luY0dlbmVyYXRvcjo6c19pbmZv
CiAKIEpTQXN5bmNHZW5lcmF0b3IqIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTQXN5bmNHZW5lcmF0b3IqIGdlbmVyYXRvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5lcmF0b3I+KHZtLmhlYXApKSBK
U0FzeW5jR2VuZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTQXN5bmNHZW5lcmF0b3IqIGdl
bmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5lcmF0b3I+KHZt
KSkgSlNBc3luY0dlbmVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICBnZW5lcmF0b3ItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hrb3YgPGdz
a2FjaGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NyArNDIsNyBAQCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkpTQXN5bmNHZW5lcmF0CiAKIEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbiogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJ
bXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
KiBhc3luY0dlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CisgICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
KiBhc3luY0dlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbj4odm0pKSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChhc3luY0dlbmVyYXRvci0+c3RydWN0
dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGFzeW5jR2VuZXJhdG9yLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIGFzeW5jR2VuZXJhdG9yOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNyArMTI1LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBKU0JpZ0lu
dCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAp
KSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCByZWludGVycHJldF9jYXN0
PERpZ2l0Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRT
dHJ1Y3R1cmUuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihkYXRhKSwgbGVuZ3RoKTsK
ICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAg
SlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZQogICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRCb3VuZEZ1bmN0aW9uKGlzSlNGdW5jdGlvbiwgY2Fu
Q29uc3RydWN0KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0JvdW5kRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3VuZEFyZ3MsIG5hbWVNYXlCZU51bGwsIGxl
bmd0aCk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0pKSBKU0JvdW5kRnVuY3Rpb24odm0sIGV4ZWN1
dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlz
LCBib3VuZEFyZ3MsIG5hbWVNYXlCZU51bGwsIGxlbmd0aCk7CiAKICAgICBmdW5jdGlvbi0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQogICAgIHsKLSAg
ICAgICAgSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2Fs
bGVlPih2bS5oZWFwKSkgSlNDYWxsZWUodm0sIHNjb3BlLCBnbG9iYWxPYmplY3QtPmNhbGxlZVN0
cnVjdHVyZSgpKTsKKyAgICAgICAgSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQ2FsbGVlPih2bSkpIEpTQ2FsbGVlKHZtLCBzY29wZSwgZ2xvYmFsT2JqZWN0
LT5jYWxsZWVTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gY2FsbGVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBA
IGVudW0gY2xhc3MgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZSAKICAgICBEb2VzTm90SGF2
ZUFyZwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAm
LCBzaXplX3QgPSBzaXplb2YoVCkpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogdHJ5QWxs
b2NhdGVDZWxsKEhlYXAmLCBzaXplX3QgPSBzaXplb2YoVCkpOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCA9
IHNpemVvZihUKSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiB0cnlBbGxvY2F0ZUNlbGwo
SGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChWTSYsIHNpemVfdCA9IHNpemVvZihUKSk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoVk0mLCBzaXplX3Qg
PSBzaXplb2YoVCkpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKFZN
JiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QgPSBzaXplb2YoVCkpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxsKFZNJiwgR0NEZWZlcnJhbENvbnRleHQqLCBz
aXplX3QgPSBzaXplb2YoVCkpOwogCiAjZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMjcgKzE4OSwyNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUp
Cit2b2lkKiBhbGxvY2F0ZUNlbGwoVk0mIHZtLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+
KHZtLmhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBzaXplX3Qgc2l6ZSkKK3ZvaWQqIHRyeUFsbG9jYXRlQ2VsbChWTSYgdm0sIHNpemVfdCBz
aXplKQogewotICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxIZWxwZXI8VD4oaGVhcCwgc2l6ZSwg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KHZtLmhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12
b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFs
Q29udGV4dCwgc2l6ZV90IHNpemUpCit2b2lkKiBhbGxvY2F0ZUNlbGwoVk0mIHZtLCBHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
dHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOworICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxI
ZWxwZXI8VD4odm0uaGVhcCwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OkFzc2VydCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiB0cnlBbGxv
Y2F0ZUNlbGwoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwg
c2l6ZV90IHNpemUpCit2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoVk0mIHZtLCBHQ0RlZmVycmFsQ29u
dGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gdHJ5QWxs
b2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVs
cGVyPFQ+KHZtLmhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21H
ZXR0ZXJGdQogICAgIEFTU0VSVChnZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0
dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+
KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7Cisg
ICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2bSkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGdldHRlciwgZG9tQXR0cmlidXRlKTsKIAogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGlu
aXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2Nh
dGlvbi4KICAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3Rv
bVNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiog
SlNDdXN0b21TZXR0ZXJGdQogICAgIEFTU0VSVChzZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tU2V0dGVyRnVuY3Rpb25D
YWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxl
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzZXR0ZXIpOworICAgIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4odm0pKSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzZXR0
ZXIpOwogCiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVz
ZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGF1dG8gbmFt
ZSA9IG1ha2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoCiAgICAgICAgIHN0cnVjdHVyZSwgYnVmZmVyLmNvcHlSZWYoKSwgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICBKU0RhdGFWaWV3KiByZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0RhdGFWaWV3Pih2bS5oZWFwKSkgSlNEYXRhVmlldyh2bSwgY29u
dGV4dCwgYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNEYXRhVmlldz4odm0pKSBKU0RhdGFWaWV3KHZtLCBjb250ZXh0LCBidWZmZXIuZ2V0KCkpOwog
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3
ICsxMDYsNyBAQCBKU0RhdGFWaWV3UHJvdG90eXBlOjpKU0RhdGFWaWV3UHJvdG90eXBlCiBKU0Rh
dGFWaWV3UHJvdG90eXBlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlKiBwcm90b3R5cGUg
PQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0RhdGFWaWV3UHJvdG90eXBl
Pih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmll
d1Byb3RvdHlwZT4odm0pKQogICAgICAgICBKU0RhdGFWaWV3UHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwcm90
b3R5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdAogCiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogewotICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Pih2bSkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CiAg
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
LCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEoKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1
bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBzaWdu
YXR1cmUsIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5o
b3N0RnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bSkpIEpT
RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAv
LyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5j
dGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtKSkgSlNGdW5jdGlvbih2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3Ry
dWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gZnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yOjpzX2lu
Zm8gPSB7IAogCiBKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0pKSBKU0dlbmVyYXRvcih2bSwgc3RydWN0dXJl
KTsKICAgICBnZW5lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZ2VuZXJh
dG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDIsNyBAQCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9u
CiAKIEpTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0
b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rp
b24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
c3RydWN0dXJlKTsKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtKSkgSlNH
ZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CiAgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yRnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC02MCw3ICs2MCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8
Vmlld0MKICAgICBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvciogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpCisgICAg
ICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3I+KHZtKSkKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgbmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0pKQogICAgICAgICBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7CiAgICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTcxLDcgKzcxLDcgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZQogICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldz4odm0pKQogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29u
dGV4dCk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTkwLDcgKzkwLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtKSkKICAgICAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTYsNyArMTE2LDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZQogICAgIENvbnN0cnVjdGlvbkNvbnRleHQg
Y29udGV4dCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0
aCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBy
ZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bSkpCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KHZtLCBjb250ZXh0KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmUKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0s
IHN0cnVjdHVyZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNl
dCgpLCBpbXBsLT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bSkpCiAgICAgICAg
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNyArNTMsNyBAQCBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZTxWaWV3Q2xhCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZSogcHJvdG90eXBlID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+KHZtLmhlYXApKQor
ICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZT4odm0pKQogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBwcm90b3R5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiByZXN1bHQgPQotICAgICAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQ+KHZtLmhlYXApKSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBw
YXJlbnRTY29wZSk7CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudD4odm0pKSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCh2
bSwgc3RydWN0dXJlLCBwYXJlbnRTY29wZSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXN1bHQtPnN5bWJvbFRhYmxlKCktPnNldFNjb3BlVHlwZShTeW1i
b2xUYWJsZTo6U2NvcGVUeXBlOjpHbG9iYWxMZXhpY2FsU2NvcGUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjA0LDE0ICsy
NjA0LDE0IEBAIFdhdGNocG9pbnRTZXQmIEpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWYKIAogSlNH
bG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtLmhlYXApKSBKU0dsb2JhbE9iamVj
dCh2bSwgc3RydWN0dXJlKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAogSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQogewot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSwgbWV0aG9kVGFibGUpOwogICAgIGdsb2JhbE9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1t
dXRhYmxlQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgLy8gQmVjYXVzZSBvZiB0
aGUgYWJvdmUgbWF4aW11bUxlbmd0aCByZXF1aXJlbWVudCwgYWxsb2NhdGlvblNpemUgY2FuIG5l
dmVyIG92ZXJmbG93LgotICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNJ
bW11dGFibGVCdXR0ZXJmbHk+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpOworICAg
ICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNJbW11dGFibGVCdXR0ZXJmbHk+
KHZtLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgSlNJbW11dGFibGVCdXR0ZXJm
bHkodm0sIHN0cnVjdHVyZSwgbGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5h
bFByb21pc2U6OnNfaW5mCiAKIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNJbnRlcm5hbFBy
b21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ludGVybmFsUHJv
bWlzZT4odm0uaGVhcCkpIEpTSW50ZXJuYWxQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpT
SW50ZXJuYWxQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJ
bnRlcm5hbFByb21pc2U+KHZtKSkgSlNJbnRlcm5hbFByb21pc2Uodm0sIHN0cnVjdHVyZSk7CiAg
ICAgcHJvbWlzZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwcm9taXNlOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3RvciogSlNJbnRlcm5hbAogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IHByb21pc2VDb25zdHJ1Y3RvckludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yQ29kZUdl
bmVyYXRvcih2bSk7Ci0gICAgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvcj4odm0pKSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBwcm9taXNlUHJvdG90eXBlLCBzcGVjaWVzU3ltYm9sKTsKICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsUHJvbWlzZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5CiAKIEpTSW50ZXJuYWxQcm9taXNl
UHJvdG90eXBlKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlPih2bSkpIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEpTTGV4aWNhbEVudmly
b25tZW50KiByZXN1bHQgPSAKICAgICAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICAgICAgTm90
TnVsbCwKLSAgICAgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNMZXhpY2FsRW52aXJvbm1lbnQ+
KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTGV4aWNhbEVudmlyb25tZW50Pih2bSwgYWxsb2NhdGlvblNpemUoc3lt
Ym9sVGFibGUpKSkKICAgICAgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KHZtLCBzdHJ1Y3R1
cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENy
ZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM0LDcgKzM0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTTWFwOjpzX2luZm8gPSB7ICJN
YXAiLAogCiBKU01hcCogSlNNYXA6OmNsb25lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNNYXAqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNYXA+KHZtLmhlYXApKSBKU01hcCh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU01hcD4odm0pKSBKU01hcCh2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgdGhpcyk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU01hcCogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU01hcD4odm0uaGVhcCkpIEpTTWFwKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01hcD4odm0pKSBK
U01hcCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdCwgdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSAKIAogSlNNYXBJdGVyYXRvciogSlNNYXBJdGVyYXRv
cjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNNYXBJdGVyYXRvcj4odm0pKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAg
ICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTTWFwSXRlcmF0b3I+KHZtKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCwga2luZCk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgSlNNb2R1bGVFbnZp
cm9ubWVudCogSlNNb2R1bGVFbnZpcm9ubWVudAogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJl
c3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9j
YXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCiAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0s
IHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CiAgICAgcmVzdWx0LT5maW5p
c2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU01vZHVsZUxvYWRlciogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU01v
ZHVsZUxvYWRlciogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVM
b2FkZXI+KHZtLmhlYXApKSBKU01vZHVsZUxvYWRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNNb2R1bGVMb2FkZXIqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9k
dWxlTG9hZGVyPih2bSkpIEpTTW9kdWxlTG9hZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0pOwogICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQs
IFZlY3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb24+PiYmIHJlc29sdXRpb25zKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Pih2bS5oZWFw
KSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdD4odm0pKSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCh2bSwg
c3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qs
IG1vZHVsZVJlY29yZCwgV1RGTW92ZShyZXNvbHV0aW9ucykpOwogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBTdHJ1Y3R1cmUqIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1CiAKIEpTTW9k
dWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxWYXJpYWJsZXMpCiB7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJl
Y29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFi
bGVzLCBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0pKSBKU01vZHVsZVJl
Y29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFi
bGVzLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LCB2bSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0
aXZlU3RkRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIEpTTmF0
aXZlU3RkRnVuY3Rpb24qIEpTTmF0aXZlU3RkRnVuY3Rpb24KIHsKICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1blN0ZEZ1bmN0aW9uLCBpbnRy
aW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsK
LSAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgV1RGTW92ZShuYXRpdmVT
dGRGdW5jdGlvbikpOworICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNOYXRpdmVTdGRGdW5jdGlvbj4odm0pKSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgV1RGTW92
ZShuYXRpdmVTdGRGdW5jdGlvbikpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwg
ZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU09O
T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIEpTT05PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTT05P
YmplY3Q+KHZtLmhlYXApKSBKU09OT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU09O
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU09OT2JqZWN0Pih2
bSkpIEpTT05PYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI5MCwxMCArMTI5MCw3IEBAIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0Ojpj
cmUKIHsKICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCiAgICAgICAgIE5v
dE51bGwsCi0gICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0PigKLSAgICAgICAgICAg
IHZtLmhlYXAsCi0gICAgICAgICAgICBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpCi0gICAgICAgICkKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+
KHZtLCBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpKQogICAgICkg
SlNGaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIGZpbmFsT2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZpbmFsT2JqZWN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2U6OnNf
aW5mbyA9IHsgIlAKIAogSlNQcm9taXNlKiBKU1Byb21pc2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2U+KHZtKSkgSlNQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb21pc2Ut
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw3ICs1OCw3
IEBAIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBKU1Byb21pc2VDb25zdHJ1Y3QKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBwcm9taXNlQ29uc3RydWN0b3JQcm9t
aXNlQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsKLSAgICBKU1Byb21pc2VDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VDb25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEpTUHJvbWlzZUNvbnN0cnVjdG9yKHZtLCBleGVjdXRhYmxlLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+
KHZtKSkgSlNQcm9taXNlQ29uc3RydWN0b3Iodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb21pc2VQ
cm90b3R5cGUsIHNwZWNpZXNTeW1ib2wpOwogICAgIGNvbnN0cnVjdG9yLT5hZGRPd25JbnRlcm5h
bFNsb3RzKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDcgKzUwLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVByb3RvdHlwZTo6c19pbgogCiBKU1Byb21pc2VQ
cm90b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNQcm9taXNl
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Byb21pc2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Cisg
ICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2VQcm90b3R5cGU+KHZtKSkgSlNQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
b2JqZWN0LT5hZGRPd25JbnRlcm5hbFNsb3RzKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBvYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKiBKU1Byb3BlcnR5TmFtZQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0u
Y2xlYXIoKTsKICAgICB9Ci0gICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPih2
bS5oZWFwKSkgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRM
ZW5ndGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXNCdWZmZXIsIHBy
b3BlcnR5TmFtZXNTaXplKTsKKyAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+
KHZtKSkgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRMZW5n
dGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXNCdWZmZXIsIHByb3Bl
cnR5TmFtZXNTaXplKTsKICAgICBlbnVtZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvcGVy
dHlOYW1lcy5yZWxlYXNlRGF0YSgpKTsKICAgICByZXR1cm4gZW51bWVyYXRvcjsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsMTQgKzQzLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIEpTUHJveHkqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQ
cm94eT4odm0uaGVhcCkpIEpTUHJveHkodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTUHJveHkq
IHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm94eT4odm0pKSBKU1Byb3h5
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIHRhcmdl
dCk7CiAgICAgICAgIHJldHVybiBwcm94eTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1By
b3h5KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtLmhlYXAp
KSBKU1Byb3h5KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Byb3h5KiBwcm94eSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtKSkgSlNQcm94eSh2bSwgc3RydWN0dXJl
KTsKICAgICAgICAgcHJveHktPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHBy
b3h5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBK
U1NjcmlwdEZldGNoUGFyYW1ldGVycyogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZjxTY3JpcHRGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAg
ICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzPih2bS5oZWFwKSkgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnModm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPih2bSkpIEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGFyYW1ldGVycykpOwog
ICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZl
dGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
cmlwdEZldGNoZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNTY3JpcHRGZXRjaGVyKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0
RmV0Y2hlcikKICAgICB7Ci0gICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTU2NyaXB0RmV0Y2hlcj4odm0uaGVhcCkpIEpTU2NyaXB0RmV0Y2hlcih2bSwg
c3RydWN0dXJlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKTsKKyAgICAgICAgYXV0byogcmVzdWx0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTY3JpcHRGZXRjaGVyPih2bSkpIEpTU2Ny
aXB0RmV0Y2hlcih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKTsKICAgICAg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTU2V0Ojpz
X2luZm8gPSB7ICJTZXQiLAogCiBKU1NldCogSlNTZXQ6OmNsb25lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNTZXQq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXQ+KHZtLmhlYXApKSBK
U1NldCh2bSwgc3RydWN0dXJlKTsKKyAgICBKU1NldCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1NldD4odm0pKSBKU1NldCh2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSwgdGhpcyk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEpTU2V0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIEpTU2V0KiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0Pih2bS5oZWFwKSkgSlNT
ZXQodm0sIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgIEpTU2V0KiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0Pih2bSkpIEpTU2V0KHZtLCBzdHJ1Y3R1cmUsIHNp
emUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCB2bSk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTU2V0SXRlcmF0b3I6
OnNfaW5mbyA9IAogCiBKU1NldEl0ZXJhdG9yKiBKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5p
dGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTU2V0SXRl
cmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRv
cj4odm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgSlNTZXRJdGVy
YXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0ZXJhdG9y
Pih2bSkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgaXRlcmF0b3ItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTU2V0SXRl
cmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1NldCogaXRlcmF0
ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIEpTU2V0SXRlcmF0
b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRvcj4o
dm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU2V0SXRl
cmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRv
cj4odm0pKSBKU1NldEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU291cmNlQ29kZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNTb3VyY2VDb2RlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU291cmNlQ29kZSYmIHNvdXJjZUNvZGUpCiAgICAgewotICAgICAg
ICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NvdXJjZUNvZGU+
KHZtLmhlYXApKSBKU1NvdXJjZUNvZGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzb3VyY2VDb2Rl
KSk7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
U291cmNlQ29kZT4odm0pKSBKU1NvdXJjZUNvZGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzb3Vy
Y2VDb2RlKSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBT
dHJ1Y3R1cmUqIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mCiAKIEpTU3RyaW5nKiBKU1N0
cmluZzo6Y3JlYXRlRW1wdHlTdHJpbmcoVk0mIHZtKQogewotICAgIEpTU3RyaW5nKiBuZXdTdHJp
bmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0uaGVhcCkpIEpTU3Ry
aW5nKHZtLCAqU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bSkpIEpTU3RyaW5nKHZtLCAq
U3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0KQEAgLTQwMCw3ICs0MDAsNyBAQCBkb3VibGUgSlNT
dHJpbmc6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0
cmluZ09iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4odm0uaGVhcCkpIFN0cmluZ09iamVjdCh2
bSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KHZt
KSkgU3RyaW5nT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgp
KTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJpbmcpOwogICAgIHJldHVybiBv
YmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCwxNCArMTY4LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKICAgICAgICAgQVNTRVJUKGxl
bmd0aCA+IDApOwogICAgICAgICBzaXplX3QgY29zdCA9IHZhbHVlLT5jb3N0KCk7Ci0gICAgICAg
IEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIEpTU3Ry
aW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0p
KSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlz
aENyZWF0aW9uKHZtLCBsZW5ndGgsIGNvc3QpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwog
ICAgIH0KICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBS
ZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJpbmcodm0sIFdURk1v
dmUodmFsdWUpKTsKKyAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bSkpIEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7
CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBvcGVyYXRpb25zIGluIEpTIGZhaWwgdG8gaGFuZGxlIHRoaXMgc3RyaW5nIGNvcnJlY3Rs
eS4KICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGVOdWxsRm9yVGVzdGluZyhWTSYgdm0p
CiAgICAgewotICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSk7Cisg
ICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNSb3BlU3RyaW5nPih2bSkpIEpTUm9wZVN0cmluZyh2bSk7CiAgICAgICAgIG5ld1N0cmlu
Zy0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIW5ld1N0cmluZy0+bGVuZ3Ro
KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkBAIC01NjgsNyArNTY4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGUo
Vk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICB7Ci0gICAgICAgIEpTUm9w
ZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3Ry
aW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIpOworICAgICAgICBKU1JvcGVT
dHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmlu
Zz4odm0pKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMik7CiAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CiAg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBw
cml2YXRlOgogICAgIH0KICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQogICAgIHsKLSAgICAgICAg
SlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jv
cGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMiwgczMpOworICAgICAg
ICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
Um9wZVN0cmluZz4odm0pKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMiwgczMpOwogICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+
bGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkBAIC01ODUs
NyArNTg1LDcgQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTUm9wZVN0
cmluZyogY3JlYXRlU3Vic3RyaW5nT2ZSZXNvbHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwLCBkZWZlcnJhbENv
bnRleHQpKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAg
SlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jv
cGVTdHJpbmc+KHZtLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9m
ZnNldCwgbGVuZ3RoKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmlu
Z09mUmVzb2x2ZWQodm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CiAg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNT
dHJpbmdJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3Ry
aW5nKiBpdGVyYXRlZFN0cmluZykKICAgICB7Ci0gICAgICAgIEpTU3RyaW5nSXRlcmF0b3IqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmdJdGVyYXRvcj4odm0u
aGVhcCkpIEpTU3RyaW5nSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU3RyaW5n
SXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmdJ
dGVyYXRvcj4odm0pKSBKU1N0cmluZ0l0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkU3RyaW5nKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6SlNUZW1wbGF0ZU9iCiAKIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlKFZNJiB2bSwgUmVm
PFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiBkZXNjcmlwdG9yLCBpbnQgZW5kT2Zmc2V0KQog
ewotICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0uaGVhcCkpIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCBXVEZNb3ZlKGRlc2NyaXB0b3IpLCBlbmRPZmZzZXQp
OworICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0pKSBKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcih2bSwgV1RGTW92ZShkZXNjcmlwdG9yKSwgZW5kT2Zmc2V0KTsKICAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIHByb3Rv
dHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogICAgIHsKLSAgICAgICAgSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yPih2bSkpIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIHNwZWNpZXNTeW1ib2wpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDkyLDcgKzQ5Miw3IEBAIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUqIEpTVHlwZWRBcnJheVYKICAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUqIHByb3RvdHlwZSA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGU+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlPih2bSkpCiAgICAgICAgIEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gcHJvdG90eXBlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1dlYWtN
YXAqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
SlNXZWFrTWFwKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha01h
cD4odm0uaGVhcCkpIEpTV2Vha01hcCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNXZWFrTWFw
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha01hcD4odm0pKSBK
U1dlYWtNYXAodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtPYmplY3RSZWYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtPYmplY3RSZWYuaAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
V2Vha09iamVjdFJlZiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiB0YXJnZXQpCiAgICAgewotICAgICAgICBKU1dlYWtPYmplY3RSZWYqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFrT2JqZWN0UmVmPih2bS5oZWFwKSkgSlNX
ZWFrT2JqZWN0UmVmKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1dlYWtPYmplY3RSZWYqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFrT2JqZWN0UmVmPih2bSkp
IEpTV2Vha09iamVjdFJlZih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHZtLCB0YXJnZXQpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmgJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha1NldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNXZWFr
U2V0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEpTV2Vha1NldCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtT
ZXQ+KHZtLmhlYXApKSBKU1dlYWtTZXQodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTV2Vha1Nl
dCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtTZXQ+KHZtKSkg
SlNXZWFrU2V0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXaXRoU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXaXRoU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIEpTV2l0aFNjb3BlKiBKU1dpdGhTY29wZTo6Y3Jl
YXRlKAogICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSog
bmV4dCwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+d2l0aFNjb3BlU3RydWN0dXJlKCk7Ci0gICAgSlNXaXRoU2NvcGUqIHdpdGhT
Y29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2l0aFNjb3BlPih2bS5oZWFwKSkg
SlNXaXRoU2NvcGUodm0sIHN0cnVjdHVyZSwgb2JqZWN0LCBuZXh0KTsKKyAgICBKU1dpdGhTY29w
ZSogd2l0aFNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXaXRoU2NvcGU+KHZt
KSkgSlNXaXRoU2NvcGUodm0sIHN0cnVjdHVyZSwgb2JqZWN0LCBuZXh0KTsKICAgICB3aXRoU2Nv
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gd2l0aFNjb3BlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IE1hcENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWFw
UHJvdG90eXBlKiBtYXBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAg
ICB7Ci0gICAgICAgIE1hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE1hcENvbnN0cnVjdG9yPih2bS5oZWFwKSkgTWFwQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIE1hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcENvbnN0cnVjdG9yPih2bSkpIE1hcENvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IG1hcFByb3RvdHlwZSwgc3BlY2llc1N5bWJvbCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBNYXBJdGVyYXRvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwSXRlcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBNYXBJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTWFw
SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1hcEl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIE1hcEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE1hcFByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcFByb3RvdHlwZT4odm0uaGVhcCkpIE1hcFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+KHZtKSkgTWFwUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgTWF0aE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TWF0aE9iamVjdD4odm0uaGVhcCkpIE1hdGhPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIE1hdGhPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1hdGhPYmplY3Q+KHZtKSkgTWF0aE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIE1vZHVsZVByb2dyYW1FeAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bS5oZWFwKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU+KHZtKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UpOwog
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
IGZpbmFsIDogcHViCiBwdWJsaWM6CiAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOYXRpdmVFcnJvclByb3RvdHlw
ZSogcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPih2bSkpIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgcHJvdG90eXBlLCBlcnJvclR5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgewotICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBOYXRp
dmVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9y
UHJvdG90eXBlPih2bSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpz
X2luZm8KIE5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0s
IFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5rLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGU7Ci0gICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOworICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxOYXRpdmVFeGVjdXRhYmxlPih2bSkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIFdURk1vdmUo
Y2FsbFRodW5rKSwgV1RGTW92ZShjb25zdHJ1Y3RUaHVuayksIG5hbWUpOwogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbEdldHRlckZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBOdWxsR2V0dGVyRnVuY3Rpb24qIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgLy8gU2luY2Ug
TnVsbEdldHRlckZ1bmN0aW9uIGlzIHBlciBKU0dsb2JhbE9iamVjdCwgd2UgdXNlIHB1dC13aXRo
b3V0LXRyYW5zaXRpb24gaW4gSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24uCi0gICAg
ICAgIE51bGxHZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDwgTnVsbEdldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgIE51bGxHZXR0ZXJGdW5jdGlvbih2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPCBOdWxsR2V0dGVyRnVuY3Rpb24+KHZtKSkgIE51bGxH
ZXR0ZXJGdW5jdGlvbih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCBTdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlv
bi5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBOdWxsU2V0dGVyRnVuY3Rpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICB7Ci0gICAgICAgIE51bGxTZXR0
ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdWxsU2V0
dGVyRnVuY3Rpb24+KHZtLmhlYXApKSAgTnVsbFNldHRlckZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUs
IGVjbWFNb2RlKTsKKyAgICAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bGxTZXR0ZXJGdW5jdGlvbj4odm0pKSAgTnVsbFNldHRl
ckZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGVjbWFNb2RlKTsKICAgICAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKHZtLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDcgKzM1LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIE51bWJlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUsIEdl
dHRlclNldHRlciopCiAgICAgewotICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIE51bWJlckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJD
b25zdHJ1Y3Rvcj4odm0pKSBOdW1iZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUpOwogICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIE51bWJlck9iamVjdCogbnVtYmVy
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0Pih2bS5oZWFwKSkgTnVt
YmVyT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJPYmplY3QqIG51bWJlciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlck9iamVjdD4odm0pKSBOdW1iZXJPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG51bWJlci0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgICByZXR1cm4gbnVtYmVyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIE51bWJlclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPih2bS5oZWFwKSkgTnVtYmVy
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlclByb3RvdHlwZT4odm0pKSBO
dW1iZXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFBy
b3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtKSkgT2JqZWN0Q29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBvYmplY3RQcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKIAogT2JqZWN0UHJvdG90
eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIE9iamVjdFByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0UHJvdG90eXBlPih2
bS5oZWFwKSkgT2JqZWN0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIE9iamVjdFByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0UHJvdG90
eXBlPih2bSkpIE9iamVjdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBwcm90b3R5cGU7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICB7CiAg
ICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4
ZWN1dGFibGU+KHZtLmhlYXApKSBQcm9ncmFtRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJj
ZSk7CisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1dGFibGU+KHZtKSkgUHJvZ3JhbUV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UpOwogICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjEgKzM2LDIxIEBAIGNvbnN0IENsYXNzSW5mbyBQcm9w
ZXJ0eVRhYmxlOjpzX2luZm8gPSAKIAogUHJvcGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y3Jl
YXRlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KQogewotICAgIFByb3BlcnR5VGFi
bGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvcGVydHlUYWJsZT4odm0u
aGVhcCkpIFByb3BlcnR5VGFibGUodm0sIGluaXRpYWxDYXBhY2l0eSk7CisgICAgUHJvcGVydHlU
YWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPih2
bSkpIFByb3BlcnR5VGFibGUodm0sIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgdGFibGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CiAKIFByb3BlcnR5VGFibGUqIFBy
b3BlcnR5VGFibGU6OmNsb25lKFZNJiB2bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiB7
Ci0gICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm9wZXJ0eVRhYmxlPih2bS5oZWFwKSkgUHJvcGVydHlUYWJsZSh2bSwgb3RoZXIpOworICAgIFBy
b3BlcnR5VGFibGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvcGVydHlU
YWJsZT4odm0pKSBQcm9wZXJ0eVRhYmxlKHZtLCBvdGhlcik7CiAgICAgdGFibGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CiAKIFByb3BlcnR5VGFibGUqIFByb3Bl
cnR5VGFibGU6OmNsb25lKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQ
cm9wZXJ0eVRhYmxlJiBvdGhlcikKIHsKLSAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZtLmhlYXApKSBQcm9wZXJ0eVRh
YmxlKHZtLCBpbml0aWFsQ2FwYWNpdHksIG90aGVyKTsKKyAgICBQcm9wZXJ0eVRhYmxlKiB0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZtKSkgUHJvcGVy
dHlUYWJsZSh2bSwgaW5pdGlhbENhcGFjaXR5LCBvdGhlcik7CiAgICAgdGFibGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gUHJveHlDb25z
dHJ1Y3Rvcjo6c19pbmZvCiAKIFByb3h5Q29uc3RydWN0b3IqIFByb3h5Q29uc3RydWN0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFByb3h5Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgUHJv
eHlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm94eUNvbnN0cnVjdG9yPih2bSkpIFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVj
dCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBQcm94eU9iamVjdDo6
c3RydWN0dXJlRm9yVGFyZ2V0KGdsb2JhbE9iamVjdCwgdGFyZ2V0KTsKLSAgICAgICAgUHJveHlP
YmplY3QqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlPYmplY3Q+KHZt
LmhlYXApKSBQcm94eU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJveHlPYmplY3Qq
IHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlPYmplY3Q+KHZtKSkgUHJv
eHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gcHJveHk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2
b2tlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlSZXZva2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0
IENsYXNzSW5mbyBQcm94eVJldm9rZTo6c19pbmZvID0geyAKIAogUHJveHlSZXZva2UqIFByb3h5
UmV2b2tlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJveHlPYmplY3Qq
IHByb3h5KQogewotICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxQcm94eVJldm9rZT4odm0uaGVhcCkpIFByb3h5UmV2b2tlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQ
cm94eVJldm9rZT4odm0pKSBQcm94eVJldm9rZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXZva2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7CiAgICAgcmV0dXJuIHJldm9rZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZmxlY3RPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgUmVmbGVjdE9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVmbGVjdE9iamVjdD4odm0u
aGVhcCkpIFJlZmxlY3RPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZmxlY3RPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZmxlY3RPYmplY3Q+KHZt
KSkgUmVmbGVjdE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzaXplX3QgUmVnRXhwOjplc3RpbWF0ZWRT
aXplKEpTQ2VsbCogY2VsCiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGVXaXRob3V0Q2FjaGluZyhW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgT3B0aW9uU2V0PFlhcnI6OkZsYWdz
PiBmbGFncykKIHsKLSAgICBSZWdFeHAqIHJlZ0V4cCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFJlZ0V4cD4odm0uaGVhcCkpIFJlZ0V4cCh2bSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwor
ICAgIFJlZ0V4cCogcmVnRXhwID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwPih2
bSkpIFJlZ0V4cCh2bSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogICAgIHJlZ0V4cC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJldHVybiByZWdFeHA7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ0V4
cENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhw
UHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llcykKICAgICB7
Ci0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPih2bS5oZWFwKSkgUmVnRXhwQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPih2bSkpIFJl
Z0V4cENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZSwgc3BlY2llcyk7CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ0V4cE9iamVjdCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwLCBib29sIGFyZUxlZ2FjeUZlYXR1
cmVzRW5hYmxlZCA9IHRydWUpCiAgICAgewotICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4odm0uaGVhcCkpIFJlZ0V4
cE9iamVjdCh2bSwgc3RydWN0dXJlLCByZWdFeHAsIGFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCk7
CisgICAgICAgIFJlZ0V4cE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwT2JqZWN0Pih2bSkpIFJlZ0V4cE9iamVjdCh2bSwgc3RydWN0dXJlLCByZWdFeHAs
IGFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVnRXhwUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPih2bS5oZWFw
KSkgUmVnRXhwUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cFByb3RvdHlw
ZT4odm0pKSBSZWdFeHBQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxOSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPi4K
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBSZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgYXV0byBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZT4odm0pKSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVu
dHM6OmNyZWF0ZQogCiAgICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKAogICAgICAg
ICBOb3ROdWxsLAotICAgICAgICBhbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzPih2bS5oZWFw
KSkKKyAgICAgICAgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50cz4odm0pKQogICAgICAgICBT
Y29wZWRBcmd1bWVudHModm0sIHN0cnVjdHVyZSwgc3RvcmFnZSwgdG90YWxMZW5ndGgpOwogICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxlZSwgdGFibGUsIHNjb3BlKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTMsMTQgKzUzLDE0IEBAIHZvaWQgU2NvcGVkQXJndW1lbnRzVGFibGU6
OmRlc3Ryb3koSlNDZWwKIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1bWVudHNUYWJs
ZTo6Y3JlYXRlKFZNJiB2bSkKIHsKICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogcmVzdWx0ID0K
LSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+
KHZtLmhlYXApKSBTY29wZWRBcmd1bWVudHNUYWJsZSh2bSk7CisgICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50c1RhYmxlPih2bSkpIFNjb3BlZEFyZ3VtZW50
c1RhYmxlKHZtKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBTY29wZWRBcmd1bWVudHNUYWJsZSogU2NvcGVkQXJndW1lbnRzVGFibGU6
OnRyeUNyZWF0ZShWTSYgdm0sIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICB2b2lkKiBidWZmZXIg
PSB0cnlBbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+KHZtLmhlYXApOworICAgIHZv
aWQqIGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxTY29wZWRBcmd1bWVudHNUYWJsZT4odm0pOwog
ICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
U2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYnVmZmVyKSBTY29w
ZWRBcmd1bWVudHNUYWJsZSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2V0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSwgR2V0
dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogICAgIHsKLSAgICAgICAgU2V0Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0Q29uc3RydWN0b3I+
KHZtLmhlYXApKSBTZXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU2V0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0Q29u
c3RydWN0b3I+KHZtKSkgU2V0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc2V0UHJvdG90eXBlLCBzcGVjaWVzU3ltYm9s
KTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IFNldEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTZXRJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIFNldEl0ZXJhdG9yUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTZXRJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0SXRlcmF0b3JQcm90b3R5cGU+KHZtKSkg
U2V0SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IFNldFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0
UHJvdG90eXBlPih2bS5oZWFwKSkgU2V0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNl
dFByb3RvdHlwZT4odm0pKSBTZXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFk
b3dSZWFsbVByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAgICAgIFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4o
dm0pKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1JlYWxtUHJvdG90eXBlKTsKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDcgKzU5
LDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKFNoYWRvd1JlYWxtT2JqZWN0KQogCiBTaGFkb3dS
ZWFsbU9iamVjdCogU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCiB7
Ci0gICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bS5oZWFwKSkgU2hhZG93UmVhbG1PYmplY3Qodm0sIHN0
cnVjdHVyZSk7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bSkpIFNoYWRvd1JlYWxtT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3Rv
bU1ldGhvZFRhYmxlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIG1ldGhvZFRhYmxlKTsKICAgICBvYmplY3QtPm1fZ2xvYmFsT2JqZWN0LnNldCh2bSwg
b2JqZWN0LCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgU2hhZG93UmVhbG1Qcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxt
UHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbVByb3RvdHlwZT4odm0pKSBTaGFkb3dSZWFsbVByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6ZmluaXNoQ3JlYXRpb24KIAogU3BhcnNlQXJyYXlWYWx1ZU1hcCog
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlKFZNJiB2bSkKIHsKLSAgICBTcGFyc2VBcnJheVZh
bHVlTWFwKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTcGFyc2VBcnJheVZh
bHVlTWFwPih2bS5oZWFwKSkgU3BhcnNlQXJyYXlWYWx1ZU1hcCh2bSk7CisgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcCogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3BhcnNlQXJy
YXlWYWx1ZU1hcD4odm0pKSBTcGFyc2VBcnJheVZhbHVlTWFwKHZtKTsKICAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlKQogICAgIHsKLSAgICAgICAgU3RyaWN0
RXZhbEFjdGl2YXRpb24qIHNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0
RXZhbEFjdGl2YXRpb24+KHZtLmhlYXApKSBTdHJpY3RFdmFsQWN0aXZhdGlvbih2bSwgc3RydWN0
dXJlLCBjdXJyZW50U2NvcGUpOworICAgICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbiogc2NvcGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4odm0pKSBT
dHJpY3RFdmFsQWN0aXZhdGlvbih2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUpOwogICAgICAg
ICBzY29wZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gc2NvcGU7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNCw3ICszNCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlLCBHZXR0ZXJT
ZXR0ZXIqKQogICAgIHsKLSAgICAgICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KHZtLmhlYXApKSBT
dHJpbmdDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3RyaW5nQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3Ry
dWN0b3I+KHZtKSkgU3RyaW5nQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nUHJvdG90eXBlKTsKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZT4odm0pKSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDEzICszOSwx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNF
bXB0eVN0cmluZyh2bSk7Ci0gICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3RyaW5nT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4odm0pKSBTdHJpbmdPYmplY3Qodm0sIHN0cnVj
dHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CiAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAgIHsK
LSAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJpbmdPYmplY3Q+KHZtLmhlYXApKSBTdHJpbmdPYmplY3Qodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U3RyaW5nT2JqZWN0Pih2bSkpIFN0cmluZ09iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIG9iamVj
dDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAKIFN0
cmluZ1Byb3RvdHlwZSogU3RyaW5nUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBTdHJpbmdQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4odm0uaGVhcCkpIFN0cmluZ1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBT
dHJpbmdQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0
cmluZ1Byb3RvdHlwZT4odm0pKSBTdHJpbmdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
cHJvdG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICBz
aXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQp
OwogICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0
ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0
KHZlY3RvciwgMCwgYnl0ZXMpOwotICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bS5oZWFwKSkgU3RydWN0dXJlQ2hh
aW4odm0sIHZtLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOworICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVy
ZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwog
ICAgIHJldHVybiBjaGFpbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYg
CiAgICAgICAgIG9iamVjdC0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+
KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCB0eXBlSW5m
bywgY2xhc3NJbmZvLCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBpbmxpbmVDYXBhY2l0
eSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmU+KHZtKSkgU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
dHlwZUluZm8sIGNsYXNzSW5mbywgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgaW5saW5l
Q2FwYWNpdHkpOwogICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPnR5cGUoKSA9PSBTdHJ1Y3R1cmVUeXBlKTsKICAgICByZXR1cm4gc3RydWN0
dXJlOwpAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0
ZShWTSYgCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0pCiB7CiAgICAgQVNTRVJUKCF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5o
ZWFwKSkgU3RydWN0dXJlKHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtKSkgU3Ry
dWN0dXJlKHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CiAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVh
dGlvbih2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CkBA
IC03OSw5ICs3OSw5IEBAIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiAK
ICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZTsKICAgICBpZiAocHJldmlvdXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQotICAgICAg
ICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0
dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwganNDYXN0PEJyYW5kZWRTdHJ1Y3R1
cmUqPihwcmV2aW91cyksIGRlZmVycmVkKTsKKyAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0pKSBCcmFuZGVkU3RydWN0
dXJlKHZtLCBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHByZXZpb3VzKSwgZGVmZXJyZWQpOwog
ICAgIGVsc2UKLSAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8U3RydWN0dXJlPih2bS5oZWFwKSkgU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQp
OworICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1
Y3R1cmU+KHZtKSkgU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOwogCiAgICAgbmV3
U3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOwogICAgIHJldHVybiBuZXdT
dHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydQog
CiBTdHJ1Y3R1cmVSYXJlRGF0YSogU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogcHJldmlvdXMpCiB7Ci0gICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlUmFyZURhdGE+KHZtLmhlYXApKSBT
dHJ1Y3R1cmVSYXJlRGF0YSh2bSwgcHJldmlvdXMpOworICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBy
YXJlRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZVJhcmVEYXRhPih2
bSkpIFN0cnVjdHVyZVJhcmVEYXRhKHZtLCBwcmV2aW91cyk7CiAgICAgcmFyZURhdGEtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmFyZURhdGE7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgU3ltYm9sOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGlubGluZSBT
eW1ib2xPYmplY3QqIFN5bWJvbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3ltYm9sKiBzeW1ib2wpCiB7Ci0gICAgU3ltYm9sT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xPYmplY3Q+KHZtLmhlYXApKSBT
eW1ib2xPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+c3ltYm9sT2JqZWN0U3RydWN0dXJlKCkpOwor
ICAgIFN5bWJvbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3lt
Ym9sT2JqZWN0Pih2bSkpIFN5bWJvbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5zeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3ltYm9sKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgU3RyaW5nIFN5bWJv
bDo6ZGVzY3JpcHRpb24oKSBjb25zdAogCiBTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2bSkK
IHsKLSAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJv
bD4odm0uaGVhcCkpIFN5bWJvbCh2bSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtKSkgU3ltYm9sKHZtKTsKICAgICBzeW1ib2wtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gc3ltYm9sOwogfQogCiBTeW1ib2wqIFN5bWJv
bDo6Y3JlYXRlV2l0aERlc2NyaXB0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bikKIHsKLSAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5
bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSwgZGVzY3JpcHRpb24pOworICAgIFN5bWJvbCogc3lt
Ym9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bSkpIFN5bWJvbCh2bSwg
ZGVzY3JpcHRpb24pOwogICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBzeW1ib2w7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShW
TSYgdm0sIFN5bWJvbEltcAogICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IHZtLnN5bWJvbEltcGxU
b1N5bWJvbE1hcC5nZXQoJnVpZCkpCiAgICAgICAgIHJldHVybiBzeW1ib2w7CiAKLSAgICBTeW1i
b2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkp
IFN5bWJvbCh2bSwgdWlkKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFN5bWJvbD4odm0pKSBTeW1ib2wodm0sIHVpZCk7CiAgICAgc3ltYm9sLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN5bWJv
bENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9s
UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBTeW1i
b2xDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
eW1ib2xDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFN5bWJvbENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBTeW1ib2xDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xDb25zdHJ1Y3Rvcj4odm0pKSBTeW1ib2xDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBwcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sT2JqZWN0LmgJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBTeW1ib2xP
YmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAg
ICAgU3ltYm9sKiBzeW1ib2wgPSBTeW1ib2w6OmNyZWF0ZSh2bSk7Ci0gICAgICAgIFN5bWJvbE9i
amVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2
bS5oZWFwKSkgU3ltYm9sT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0p
KSBTeW1ib2xPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIHN5bWJvbCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogICAgIHN0
YXRpYyBTeW1ib2xPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
eW1ib2wqIHN5bWJvbCkKICAgICB7Ci0gICAgICAgIFN5bWJvbE9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2bS5oZWFwKSkgU3ltYm9sT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xPYmplY3QqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0pKSBTeW1ib2xPYmplY3Qodm0s
IHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN5bWJvbCk7
CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sUHJvdG90eXBlPih2bS5oZWFwKSkgU3ltYm9s
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTeW1ib2xQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbFByb3RvdHlwZT4odm0pKSBT
eW1ib2xQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNyArNDYxLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQogICAgIHsKLSAgICAgICAgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9s
VGFibGU+KHZtLmhlYXApKSBTeW1ib2xUYWJsZSh2bSk7CisgICAgICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbFRhYmxlPih2bSkp
IFN5bWJvbFRhYmxlKHZtKTsKICAgICAgICAgc3ltYm9sVGFibGUtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVu
ZGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBUZW1wb3JhbENhbGVuZGFyKiBUZW1wb3JhbENhbGVu
ZGFyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FsZW5kYXJJRCBpZGVu
dGlmaWVyKQogewotICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFy
KHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1h
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtKSkgVGVt
cG9yYWxDYWxlbmRhcih2bSwgc3RydWN0dXJlLCBpZGVudGlmaWVyKTsKICAgICBmb3JtYXQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWMKIAogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKiBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKQogewotICAgIFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0ZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cAogCiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlPih2
bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBU
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlPih2bSkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxE
dXJhdGlvbjo6c19pbmZvCiAKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpEdXJhdGlvbiYmIGR1
cmF0aW9uKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFRlbXBvcmFsRHVyYXRpb24+KHZtLmhlYXApKSBUZW1wb3JhbER1cmF0aW9uKHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uPih2bSkpIFRlbXBvcmFsRHVyYXRpb24odm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlvbikpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1NSw3
IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWMKIAogVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKiBk
dXJhdGlvblByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRl
bXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkdXJhdGlvblByb3RvdHlwZSk7
CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTMsNyArOTQsNyBAQCBjb25z
dCBDbGFzc0luZm8gVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwCiAKIFRlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUqIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGU+KHZt
KSkgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvdG90eXBlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3Bw
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbEluc3RhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTcsNyArNTgsNyBAQCBUZW1wb3JhbEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudChWTSYg
dm0sCiBUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCiB7CiAgICAg
QVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOwotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0uaGVhcCkpIFRlbXBvcmFsSW5z
dGFudCh2bSwgc3RydWN0dXJlLCBleGFjdFRpbWUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0pKSBUZW1wb3JhbEluc3Rh
bnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjMsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0CiAKIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGluc3RhbnRQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDcgKzc4LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZQogCiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUq
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0pKSBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzU0
LDcgQEAgVGVtcG9yYWxOb3c6OlRlbXBvcmFsTm93KFZNJiB2bSwgU3RydWN0dQogCiBUZW1wb3Jh
bE5vdyogVGVtcG9yYWxOb3c6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIFRlbXBvcmFsTm93KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxU
ZW1wb3JhbE5vdz4odm0uaGVhcCkpIFRlbXBvcmFsTm93KHZtLCBzdHJ1Y3R1cmUpOworICAgIFRl
bXBvcmFsTm93KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE5v
dz4odm0pKSBUZW1wb3JhbE5vdyh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgVGVtcG9yYWxPYmplY3Q6OlRlbXBvcmFs
T2JqZWN0KFZNJiB2bSwgUwogCiBUZW1wb3JhbE9iamVjdCogVGVtcG9yYWxPYmplY3Q6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFRlbXBvcmFsT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE9iamVjdD4odm0uaGVh
cCkpIFRlbXBvcmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgIFRlbXBvcmFsT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbE9iamVjdD4odm0pKSBU
ZW1wb3JhbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZTo6c19pbmYKIAogVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1l
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1l
JiYgcGxhaW5UaW1lKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWUodm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0pKSBUZW1wb3JhbFBs
YWluVGltZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBsYWluVGltZSkpOwogICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydQogCiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgcGxhaW5UaW1lUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eQogCiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlPih2bS5o
ZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU+KHZtKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gcHJvdG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxNCArMzUsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsVGltZVpv
bmU6OnNfaW5mbwogCiBUZW1wb3JhbFRpbWVab25lKiBUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVG
cm9tSUQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGltZVpvbmVJRCBpZGVudGlmaWVy
KQogewotICAgIFRlbXBvcmFsVGltZVpvbmUqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFRlbXBvcmFsVGltZVpvbmU+KHZtLmhlYXApKSBUZW1wb3JhbFRpbWVab25lKHZtLCBz
dHJ1Y3R1cmUsIFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDA+KCksIGlkZW50aWZp
ZXIgfSk7CisgICAgVGVtcG9yYWxUaW1lWm9uZSogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8VGVtcG9yYWxUaW1lWm9uZT4odm0pKSBUZW1wb3JhbFRpbWVab25lKHZtLCBzdHJ1
Y3R1cmUsIFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDA+KCksIGlkZW50aWZpZXIg
fSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsK
IH0KIAogVGVtcG9yYWxUaW1lWm9uZSogVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09m
ZnNldChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQ2NF90IHV0Y09mZnNldCkKIHsK
LSAgICBUZW1wb3JhbFRpbWVab25lKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbFRpbWVab25lPih2bS5oZWFwKSkgVGVtcG9yYWxUaW1lWm9uZSh2bSwgc3RydWN0
dXJlLCBUaW1lWm9uZSB7IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDwxPigpLCB1dGNPZmZzZXQgfSk7
CisgICAgVGVtcG9yYWxUaW1lWm9uZSogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxUaW1lWm9uZT4odm0pKSBUZW1wb3JhbFRpbWVab25lKHZtLCBzdHJ1Y3R1cmUs
IFRpbWVab25lIHsgc3RkOjppbl9wbGFjZV9pbmRleF90PDE+KCksIHV0Y09mZnNldCB9KTsKICAg
ICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWMKIAogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKQogewot
ICAgIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I+KHZtLmhlYXApKSBU
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcj4odm0pKSBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cAogCiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlPih2bSkpIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgV2Vha01hcENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQog
ICAgIHsKLSAgICAgICAgV2Vha01hcENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYWtNYXBD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha01hcENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBDb25zdHJ1Y3Rv
cj4odm0pKSBXZWFrTWFwQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha01hcFByb3RvdHlwZT4odm0uaGVhcCkpIFdlYWtNYXBQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtNYXBQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBQcm90b3R5cGU+KHZtKSkg
V2Vha01hcFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWFr
T2JqZWN0UmVmUHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAg
ICAgICBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2Vha09iamVjdFJlZkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2Vha09i
amVjdFJlZkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vh
a09iamVjdFJlZkNvbnN0cnVjdG9yPih2bSkpIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90
b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgV2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrT2JqZWN0UmVmUHJvdG90eXBlPih2bS5oZWFwKSkgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha09iamVjdFJl
ZlByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha09i
amVjdFJlZlByb3RvdHlwZT4odm0pKSBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFdlYWtTZXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAg
ICAgIFdlYWtTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWFrU2V0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWFrU2V0Q29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrU2V0Q29uc3RydWN0b3I+KHZtKSkgV2Vh
a1NldENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYWtTZXRQcm90b3R5cGU+KHZtLmhlYXApKSBXZWFrU2V0UHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrU2V0UHJvdG90eXBlPih2bSkpIFdlYWtTZXRQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgSlNEb2xsYXJWTUNhbGxGcmFtZSog
ZnJhbWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0RvbGxhclZNQ2FsbEZyYW1lPih2
bS5oZWFwKSkgSlNEb2xsYXJWTUNhbGxGcmFtZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNE
b2xsYXJWTUNhbGxGcmFtZSogZnJhbWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Rv
bGxhclZNQ2FsbEZyYW1lPih2bSkpIEpTRG9sbGFyVk1DYWxsRnJhbWUodm0sIHN0cnVjdHVyZSk7
CiAgICAgICAgIGZyYW1lLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbEZyYW1lLCByZXF1ZXN0ZWRG
cmFtZUluZGV4KTsKICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIH0KQEAgLTIzMyw3ICsyMzMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFbGVtZW50Pih2bS5oZWFwKSkgRWxlbWVudCh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEVsZW1lbnQ+KHZtKSkgRWxlbWVudCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZWxl
bWVudC0+ZmluaXNoQ3JlYXRpb24odm0sIHJvb3QpOwogICAgICAgICByZXR1cm4gZWxlbWVudDsK
ICAgICB9CkBAIC0zMTIsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBS
b290KiByb290ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Um9vdD4odm0uaGVhcCkpIFJv
b3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFJvb3QqIHJvb3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxSb290Pih2bSkpIFJvb3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHJvb3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgfQpAQCAtMzYx
LDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgU2ltcGxlT2JqZWN0KiBz
aW1wbGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaW1wbGVPYmplY3Q+KHZt
LmhlYXApKSBTaW1wbGVPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFNpbXBsZU9iamVj
dCogc2ltcGxlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2ltcGxlT2JqZWN0
Pih2bSkpIFNpbXBsZU9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgc2ltcGxlT2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBzaW1wbGVPYmplY3Q7CiAgICAg
fQpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW1wdXJlR2V0dGVyKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGRlbGVnYXRlKQog
ICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAg
SW1wdXJlR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbXB1cmVH
ZXR0ZXI+KHZtLmhlYXApKSBJbXB1cmVHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIElt
cHVyZUdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW1wdXJlR2V0
dGVyPih2bSkpIEltcHVyZUdldHRlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5m
aW5pc2hDcmVhdGlvbih2bSwgZGVsZWdhdGUpOwogICAgICAgICByZXR1cm4gZ2V0dGVyOwogICAg
IH0KQEAgLTUyMCw3ICs1MjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEN1c3RvbUdldHRlciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBDdXN0b21HZXR0ZXIqIGdldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdldHRlcj4odm0uaGVhcCkpIEN1
c3RvbUdldHRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyKiBnZXR0ZXIg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXI+KHZtKSkgQ3VzdG9tR2V0
dGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC01OTgsNyArNTk4LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwog
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGNyZWF0ZVByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFy
cmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5Pih2bS5oZWFwKSkg
UnVudGltZUFycmF5KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgUnVudGltZUFy
cmF5KiBydW50aW1lQXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJy
YXk+KHZtKSkgUnVudGltZUFycmF5KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cnVudGltZUFycmF5LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIHZtLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRpbWVBcnJheSwgZGVzdHJveSk7CiAgICAg
ICAgIHJldHVybiBydW50aW1lQXJyYXk7CkBAIC03ODQsNyArNzg0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdGF0aWNDdXN0b21BY2Nlc3NvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgICAgICBTdGF0aWNDdXN0b21BY2Nlc3NvciogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTdGF0aWNDdXN0b21BY2Nlc3Nvcj4odm0uaGVhcCkpIFN0YXRpY0N1c3Rv
bUFjY2Vzc29yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTdGF0aWNDdXN0b21BY2Nlc3Nvciog
YWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdGF0aWNDdXN0b21BY2Nlc3Nv
cj4odm0pKSBTdGF0aWNDdXN0b21BY2Nlc3Nvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgYWNj
ZXNzb3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGFjY2Vzc29yOwogICAg
IH0KQEAgLTg4NCw3ICs4ODQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0YXRpY0N1c3RvbVZh
bHVlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFN0YXRpY0N1c3RvbVZh
bHVlKiBhY2Nlc3NvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0YXRpY0N1c3RvbVZh
bHVlPih2bS5oZWFwKSkgU3RhdGljQ3VzdG9tVmFsdWUodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IFN0YXRpY0N1c3RvbVZhbHVlKiBhY2Nlc3NvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFN0YXRpY0N1c3RvbVZhbHVlPih2bSkpIFN0YXRpY0N1c3RvbVZhbHVlKHZtLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBhY2Nlc3Nvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
YWNjZXNzb3I7CiAgICAgfQpAQCAtOTE3LDcgKzkxNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdp
dGhvdXRDb3JyZWN0U2xvdFN0YXR1cyogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM+KHZt
LmhlYXApKSBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1cyogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM+KHZtKSkgT2Jq
ZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBhY2Nlc3Nvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gYWNjZXNzb3I7CiAgICAgfQpAQCAtOTc1LDcgKzk3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgRE9NSklUTm9kZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01K
SVROb2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2
bS5oZWFwKSkgRE9NSklUTm9kZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRE9NSklUTm9kZSog
Z2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUTm9kZT4odm0pKSBET01K
SVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdldHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgICAgICBET01KSVRHZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERPTUpJVEdldHRlcj4odm0uaGVhcCkpIERPTUpJVEdldHRlcih2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgRE9NSklUR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxET01KSVRHZXR0ZXI+KHZtKSkgRE9NSklUR2V0dGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsK
ICAgICB9CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdl
dHRlck5vRWZmZWN0cyogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01K
SVRHZXR0ZXJOb0VmZmVjdHMqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERP
TUpJVEdldHRlck5vRWZmZWN0cz4odm0uaGVhcCkpIERPTUpJVEdldHRlck5vRWZmZWN0cyh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgRE9NSklUR2V0dGVyTm9FZmZlY3RzKiBnZXR0ZXIgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXJOb0VmZmVjdHM+KHZtKSkgRE9NSklU
R2V0dGVyTm9FZmZlY3RzKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0xMjIwLDcgKzEy
MjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdldHRlckNvbXBsZXgqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAg
ICAgRE9NSklUR2V0dGVyQ29tcGxleCogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8RE9NSklUR2V0dGVyQ29tcGxleD4odm0uaGVhcCkpIERPTUpJVEdldHRlckNvbXBsZXgodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZtKSkgRE9NSklUR2V0
dGVyQ29tcGxleCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlv
bih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0x
MzQ1LDcgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEZ1bmN0aW9uT2JqZWN0
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgICAgIERPTUpJVEZ1bmN0aW9uT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxET01KSVRGdW5jdGlvbk9iamVjdD4odm0uaGVhcCkpIERPTUpJVEZ1bmN0
aW9uT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBET01KSVRGdW5jdGlvbk9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklURnVuY3Rpb25PYmplY3Q+
KHZtKSkgRE9NSklURnVuY3Rpb25PYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgfQpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBET01K
SVRDaGVja0pTQ2FzdE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01KSVRDaGVja0pTQ2FzdE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUQ2hlY2tKU0Nhc3RPYmpl
Y3Q+KHZtLmhlYXApKSBET01KSVRDaGVja0pTQ2FzdE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPERPTUpJVENoZWNrSlNDYXN0T2JqZWN0Pih2bSkpIERPTUpJVENoZWNrSlNDYXN0
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KQEAgLTE0ODks
NyArMTQ4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIERPTUpJVEdldHRlckJhc2VK
U09iamVjdCogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVy
QmFzZUpTT2JqZWN0Pih2bS5oZWFwKSkgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QqIGdldHRlciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckJhc2VKU09iamVjdD4odm0pKSBET01K
SVRHZXR0ZXJCYXNlSlNPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGdldHRlci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZ2V0dGVyOwogICAgIH0KQEAgLTE1OTcs
NyArMTU5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAg
SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI+KHZtLmhlYXApKSBKU1Rlc3RDdXN0b21HZXR0
ZXJTZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRl
ciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyPih2bSkpIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcih2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtMTg2OCw3ICsxODY4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAg
ICBXYXNtU3RyZWFtaW5nUGFyc2VyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXYXNtU3RyZWFtaW5nUGFyc2VyPih2bS5oZWFwKSkgV2FzbVN0cmVhbWluZ1BhcnNlcih2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgV2FzbVN0cmVhbWluZ1BhcnNlciogcmVzdWx0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2FzbVN0cmVhbWluZ1BhcnNlcj4odm0pKSBXYXNtU3RyZWFt
aW5nUGFyc2VyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xOTQ5LDcgKzE5NDksNyBA
QCBwdWJsaWM6CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
ICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgV2Fz
bVN0cmVhbWluZ0NvbXBpbGVyKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
YXNtU3RyZWFtaW5nQ29tcGlsZXI+KHZtLmhlYXApKSBXYXNtU3RyZWFtaW5nQ29tcGlsZXIodm0s
IHN0cnVjdHVyZSwgY29tcGlsZXJNb2RlLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGltcG9ydE9i
amVjdCk7CisgICAgICAgIFdhc21TdHJlYW1pbmdDb21waWxlciogcmVzdWx0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8V2FzbVN0cmVhbWluZ0NvbXBpbGVyPih2bSkpIFdhc21TdHJlYW1p
bmdDb21waWxlcih2bSwgc3RydWN0dXJlLCBjb21waWxlck1vZGUsIGdsb2JhbE9iamVjdCwgcHJv
bWlzZSwgaW1wb3J0T2JqZWN0KTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNEb2xsYXJWTSogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgICAgICBKU0RvbGxhclZNKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTRG9sbGFyVk0+KHZtLmhlYXApKSBKU0RvbGxhclZNKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBKU0RvbGxhclZNKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTRG9sbGFyVk0+KHZtKSkgSlNEb2xsYXJWTSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtSUNDYWxs
ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9X
YXNtSUNDYWxsZWUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUb1dhc21JQ0NhbGxlZTo6c19pbmZvCiBKU1RvV2Fz
bUlDQ2FsbGVlKiBKU1RvV2FzbUlDQ2FsbGVlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbikKIHsKICAgICBh
dXRvKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmpzVG9XYXNtSUNDYWxsZWVTdHJ1Y3R1cmUo
KTsKLSAgICBKU1RvV2FzbUlDQ2FsbGVlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1RvV2FzbUlDQ2FsbGVlPih2bS5oZWFwKSkgSlNUb1dhc21JQ0NhbGxlZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTVG9XYXNtSUNDYWxsZWUqIHJlc3VsdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVG9XYXNtSUNDYWxsZWU+KHZtKSkgSlNUb1dhc21J
Q0NhbGxlZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJlc3VsdC0+bV9mdW5jdGlvbi5zZXQodm0sIHJlc3VsdCwgZnVu
Y3Rpb24pOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05NSw3ICs5NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5OjpzX2lu
Zm8gPSAKIAogSlNXZWJBc3NlbWJseSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
YXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseT4o
dm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseT4odm0pKSBKU1dlYkFz
c2VtYmx5KHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBj
b25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6CiAKIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZShWTSYgdm0sIFJlZjxXYXNt
OjpDb2RlQmxvY2s+IGNvZGVCbG9jaywgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1v
ZHVsZUluZm9ybWF0aW9uKQogewotICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKHZtLCBXVEZNb3ZlKGNvZGVCbG9jayksIG1vZHVsZUluZm9ybWF0aW9uKTsKKyAg
ICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrPih2bSkpIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sodm0sIFdURk1vdmUoY29kZUJs
b2NrKSwgbW9kdWxlSW5mb3JtYXRpb24pOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5RXhjZXB0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBXYXNtOjpUYWcmIHRhZywgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgcGF5
bG9hZCkKICAgICB7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGV4Y2VwdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KHZtLmhl
YXApKSBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKHZtLCBzdHJ1Y3R1cmUsIHRhZywgV1RGTW92ZShw
YXlsb2FkKSk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KHZtKSkgSlNX
ZWJBc3NlbWJseUV4Y2VwdGlvbih2bSwgc3RydWN0dXJlLCB0YWcsIFdURk1vdmUocGF5bG9hZCkp
OwogICAgICAgICBleGNlcHRpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5R2xvYmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNXZWJBc3NlbWJseUdsb2JhbCogSlNXZWJB
c3NlbWJseUdsb2JhbAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRv
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlHbG9i
YWw+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5R2xvYmFsKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
Z2xvYmFsKSk7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1dlYkFzc2VtYmx5R2xvYmFsPih2bSkpIEpTV2ViQXNzZW1ibHlHbG9iYWwodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShnbG9iYWwpKTsKICAgICBpbnN0YW5jZS0+Z2xvYmFsKCktPnNldE93bmVy
KGluc3RhbmNlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBpbnN0YW5jZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3QKICAgICB9OwogCiAgICAgLy8gRklYTUU6IFRoZXNlIG9iamVjdHMgY291
bGQgYmUgcHJldHR5IGJpZyB3ZSBzaG91bGQgdHJ5IHRvIHRocm93IE9PTSBoZXJlLgotICAgIGF1
dG8qIGpzSW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0sIGluc3RhbmNlU3Ry
dWN0dXJlLCAKKyAgICBhdXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNXZWJBc3NlbWJseUluc3RhbmNlPih2bSkpIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSh2bSwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIAogICAgICAgICBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53
YXNtQ29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCAmdm0udG9wRW50cnlGcmFtZSwgdm0uYWRkcmVz
c09mU29mdFN0YWNrTGltaXQoKSwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKICAgICBq
c0luc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwganNNb2R1bGUsIG1vZHVsZVJlY29yZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBK
U1dlYkFzc2VtYmx5TWVtb3J5KiBKU1dlYkFzc2VtYmx5TWVtb3J5CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPndlYkFzc2VtYmx5RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUV2YWxFcnJvcihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7CiAKLSAgICBhdXRvKiBtZW1vcnkgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eU1lbW9yeSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBtZW1vcnkgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bSkpIEpTV2ViQXNzZW1ibHlNZW1v
cnkodm0sIHN0cnVjdHVyZSk7CiAgICAgbWVtb3J5LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIG1lbW9yeTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFz
c2VtYmx5TW9kdWxlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8q
IG1vZHVsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+
KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TW9kdWxlKHZtLCBzdHJ1Y3R1cmUsIHJlc3VsdC52YWx1
ZSgpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8qIG1vZHVsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+KHZtKSkgSlNXZWJBc3NlbWJseU1vZHVs
ZSh2bSwgc3RydWN0dXJlLCByZXN1bHQudmFsdWUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBt
b2R1bGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gbW9kdWxlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFi
bGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IEpTV2ViQXNzZW1ibHlUYWJsZSogSlNXZWJBc3NlbWJseVRhYmxlOjoKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5VGFibGU+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5VGFi
bGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZSh0YWJsZSkpOworICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseVRhYmxlPih2bSkpIEpTV2Vi
QXNzZW1ibHlUYWJsZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHRhYmxlKSk7CiAgICAgaW5zdGFu
Y2UtPnRhYmxlKCktPnNldE93bmVyKGluc3RhbmNlKTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBpbnN0YW5jZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWcuY3BwCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNXZWJB
c3NlbWJseVRhZzo6c19pbmZvCiBKU1dlYkFzc2VtYmx5VGFnKiBKU1dlYkFzc2VtYmx5VGFnOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgV2FzbTo6VGFnJiB0YWcpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byoganNUYWcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1dlYkFzc2VtYmx5VGFnPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseVRhZyh2bSwgc3RydWN0dXJl
LCB0YWcpOworICAgIGF1dG8qIGpzVGFnID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNX
ZWJBc3NlbWJseVRhZz4odm0pKSBKU1dlYkFzc2VtYmx5VGFnKHZtLCBzdHJ1Y3R1cmUsIHRhZyk7
CiAgICAganNUYWctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4ganNUYWc7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw3ICs3MCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBA
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclAKIAogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU+KHZtKSkgV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IqIFdl
YkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkK
IHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rv
cj4odm0pKSBXZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3QKIAogV2ViQXNz
ZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
RXhjZXB0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDcgKzQzNiw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWIKIFdlYkFzc2VtYmx5RnVuY3Rpb24qIFdlYkFz
c2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6Q2FsbGVlJiBqc0Vu
dHJ5cG9pbnQsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlv
biB3YXNtVG9XYXNtRW50cnlwb2ludExvYWRMb2NhdGlvbiwgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXgpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgV2FzbUZ1bmN0aW9uSW50
cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7Ci0g
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseUZ1bmN0aW9uPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGpzRW50cnlwb2ludCwgd2Fz
bVRvV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICBXZWJB
c3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5RnVuY3Rpb24+KHZtKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGpzRW50cnlwb2ludCwgd2FzbVRvV2FzbUVudHJ5
cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNo
Q3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UpOwogICAgIHJl
dHVybiBmdW5jdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEsNyArMTcxLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseUdsb2Jh
bENvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUqIHRoaXNQ
cm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlHbG9iYWxDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0
b3I+KHZtKSkgV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAg
ICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
R2xvYmFsUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMSw3ICsxMjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlHbG9iCiAKIFdlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlKiBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0g
ICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlH
bG9iYWxQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZT4odm0pKSBXZWJBc3NlbWJseUdsb2JhbFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC04Niw3ICs4Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJB
c3NlbWIKIAogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdAogCiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
KiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU+KHZtLmhl
YXApKSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I+KHZtLmhlYXAp
KSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhp
c1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90CiAKIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiBXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
Pih2bSkpIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTEsNyArMTUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAg
YXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I+KHZtKSkgV2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw3ICsxMTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04od2ViQXNzZW1ibHlNZW1vCiAKIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlPih2
bSkpIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xODgsNyArMTg4LDcgQEAgSlNXZWJBc3NlbWJseU1vZHVsZSogV2ViQXNz
ZW1ibHlNb2R1bGVDbwogCiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I+KHZtKSkgV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eQogCiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZT4odm0pKSBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmNyZWEKIAogV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQqIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24pCiB7Ci0gICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KHZt
LmhlYXApKSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkp
OworICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPih2bSkpIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CiAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIG1vZHVsZUluZm9ybWF0aW9uKTsKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03MCw3ICs3MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIK
IAogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
Pih2bSkpIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Myw3ICs0Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clAKIAogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVj
dDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NSw3ICsxNDUsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
ciogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsK
LSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNzcsNyArMTc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHdlYkFzc2VtYmx5VGFibAogCiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU+KHZtKSkgV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3
ICs5OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2Vi
QXNzZW1ibHlUYWdDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlKiB0
aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5VGFnQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yPih2
bSkpIFdlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRhZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFz
c2VtYmx5VGFnUHJvdG90eXBlOgogCiBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSogV2ViQXNzZW1i
bHlUYWdQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlUYWdQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhZ1By
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZT4odm0pKSBXZWJBc3NlbWJseVRh
Z1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiBXZWJBc3NlbWJseVcKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFmdW5jdGlvbi0+aW5oZXJpdHM8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+
KHZtKSwgIldlIHNob3VsZCBuZXZlciBkb3VibGUgd3JhcCBhIHdyYXBwZXIgZnVuY3Rpb24uIik7
CiAgICAgU3RyaW5nIG5hbWUgPSAiIjsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsK
LSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24geyBzaWduYXR1cmVJbmRleCwg
Jmluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRJbmRleCktPndh
c21Ub0VtYmVkZGVyU3R1YiB9ICk7CisgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHJl
c3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uPih2bSkpIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiB7
IHNpZ25hdHVyZUluZGV4LCAmaW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb25JbmZv
KGltcG9ydEluZGV4KS0+d2FzbVRvRW1iZWRkZXJTdHViIH0gKTsKICAgICBjb25zdCBXYXNtOjpT
aWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2ln
bmF0dXJlSW5kZXgpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUs
IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIG5hbWUsIGZ1bmN0aW9uLCBpbnN0YW5jZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1MCBAQAor
MjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVm
YWN0b3IgYWxsb2NhdGVDZWxsKCkgYW5kIHRyeUFsbG9jYXRlQ2VsbCgpIHRvIHRha2UgVk0mIGlu
c3RlYWQgb2YgSGVhcCYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMjgKKyAgICAgICAgcmRhcjovLzg1MzI5NjgwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFzeW5j
SXRlcmF0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZTxKU0NsYXNzPjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlND
bGFzcz46OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dpbmRvd1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQcm90b3R5
cGVEZWNsYXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFN0YXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uczo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
VHJhY2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsVHJhY2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklU
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RET01KSVQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1
bHRUb0pTT046OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmNyZWF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05JbmRp
cmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRp
cmVjdEluaGVyaXRhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERvbWFpblNl
Y3VyaXR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3REb21haW5TZWN1cml0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNl
dHRpbmc6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbkRPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllc0NhbGxl
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
dGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXNDYWxsZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SXRlcmFibGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExp
a2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1hcExpa2U6OmNyZWF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb246OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpjcmVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXNDYWxsZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRP
bmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5
U2V0TGlrZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RTZXRMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNldExpa2U6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0U3RyaW5naWZpZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmc6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzRE9N
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUpOgor
ICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNJ
bnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAy
MDIxLTExLTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJBdXRobl0gU3RvcCBzZXJpYWxpemluZyBCdWZmZXJTb3VyY2UgYW5kIFZlY3Rvcjx1aW50
OF90PiBkdXBsaWNhdGVzIG9mIGlkZW50aWZpZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0RPTUFzeW5jSXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01Bc3luY0l0ZXJhdG9yUHJv
dG90eXBlLCBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OkJhc2UpOwotICAgICAgICBKU0RP
TUFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSlNET01B
c3luY0l0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0RPTUFzeW5j
SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEpTRE9NQXN5bmNJdGVyYXRv
clByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Nyw3ICs1Nyw3IEBA
IHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46
OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01CdWlsdGluQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgSlNET01CdWlsdGluQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcj4odm0pKSBK
U0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPiog
SlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IEpTRE9NQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0RPTUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01Db25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBKU0RPTUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01Db25zdHJ1Y3Rvcj4odm0pKSBKU0RPTUNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90
Q2FsbGFibGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIEFsZXhleSBTaHZheWthIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2
NSw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RP
TUNvbnN0cnVjdG9yTm90Q2FsbGFibGU8SlNDbGFzcz4qIEpTRE9NQ29uc3RydWN0b3JOb3RDYWxs
YWJsZTxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIEpTRE9NQ29uc3Ry
dWN0b3JOb3RDYWxsYWJsZSogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZT4odm0uaGVhcCkpIEpTRE9NQ29uc3Ry
dWN0b3JOb3RDYWxsYWJsZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgSlNET01Db25z
dHJ1Y3Rvck5vdENhbGxhYmxlKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlPih2bSkpIEpTRE9NQ29uc3RydWN0
b3JOb3RDYWxsYWJsZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
Q2xhc3M+KiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0NsYXNzPjo6Y3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewotICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU+KHZtLmhlYXApKSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZSh2bSwgc3RydWN0dXJlKTsKKyAgICBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZSogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPih2bSkpIEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENh
bm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0RPTUl0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRlcmF0b3JQcm90b3R5
cGUsIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU6OkJhc2UpOwotICAgICAgICBKU0RPTUl0ZXJhdG9y
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
RE9NSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NSXRlcmF0b3JQcm90b3R5cGU+
KHZtKSkgSlNET01JdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IGlubGluZSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPiogSlNE
T01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKLSAgICBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbiogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPih2bS5o
ZWFwKSkgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24odm0sIHN0cnVjdHVyZSk7CisgICAgSlNE
T01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbj4odm0pKSBKU0RPTUxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9w
ZXJ0aWVzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93UHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNET01XaW5kb3dQcm9wZXJ0aWVzKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogICAgIHsKLSAgICAgICAgSlNET01XaW5kb3dQcm9wZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NV2luZG93UHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0
LnZtKCkuaGVhcCkpIEpTRE9NV2luZG93UHJvcGVydGllcyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIEpTRE9NV2luZG93UHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU0RPTVdpbmRvd1Byb3BlcnRpZXM+KGdsb2JhbE9iamVjdC52bSgp
KSkgSlNET01XaW5kb3dQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNGaWxlU3lzdGVt
RGlyZWN0b3J5SGFuZGxlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAg
IHsKLSAgICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPih2bS5oZWFwKSkgSlNGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3Ioc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwg
a2luZCk7CisgICAgICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4odm0pKSBKU0ZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcihzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBr
aW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIGlubGlu
ZSBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OkoKIAogSlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0KiBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8RE9NV3JhcHBlcldvcmxkPiYmIGltcGwpCiB7
Ci0gICAgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KiBwdHIgPSAgbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkg
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1w
bCkpOworICAgIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCogcHRyID0gIG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4odm0pKSBK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSk7CiAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHB0cjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCShyZXZp
c2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBKU1dpbmRvd1Byb3h5
OjpmaW5pc2hDcmVhdGlvbihWTSYgdgogSlNXaW5kb3dQcm94eSYgSlNXaW5kb3dQcm94eTo6Y3Jl
YXRlKFZNJiB2bSwgQWJzdHJhY3RET01XaW5kb3cmIHdpbmRvdywgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKIHsKICAgICBhdXRvJiBzdHJ1Y3R1cmUgPSAqU3RydWN0dXJlOjpjcmVhdGUodm0sIDAs
IGpzTnVsbCgpLCBUeXBlSW5mbyhQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwotICAgIGF1dG8mIHByb3h5ID0gKm5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTV2luZG93UHJveHk+KHZtLmhlYXApKSBKU1dpbmRvd1Byb3h5KHZtLCBzdHJ1Y3R1cmUs
IHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9ICpuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1dpbmRvd1Byb3h5Pih2bSkpIEpTV2luZG93UHJveHkodm0sIHN0cnVjdHVyZSwgd29ybGQpOwog
ICAgIHByb3h5LmZpbmlzaENyZWF0aW9uKHZtLCB3aW5kb3cpOwogICAgIHJldHVybiBwcm94eTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjg2NywxNCAr
Mjg2NywxNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYm
IGltcGwsIEpTV2luZG93UHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
ICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNz
TmFtZT4odm0uaGVhcCkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwp
LCBwcm94eSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNs
YXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1l
Pih2bSkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCBwcm94eSk7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSwgcHJveHkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB9XG5cbiIpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5o
ZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShK
U0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPCRpbXBsVHlwZT4mJiBp
bXBsLCBKU0M6OkpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4odm0uaGVhcCkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KHZtKSkgJHtj
bGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTI4
ODMsMTQgKzI4ODMsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBl
PiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0o
KSwgXCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdFwiKTtcbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
JGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0
LT52bSgpKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlv
bkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
ICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNz
TmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
JGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NO
YW1lPihnbG9iYWxPYmplY3QtPnZtKCkpKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOyAgCkBAIC0yOTAwLDcgKzI5MDAsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAgICAgfQogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAk
Y2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3Qt
PnZtKCkpKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB9XG5cbiIpOwpAQCAtNjc1OSw3ICs2NzU5LDcgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogCiAgICAgc3RhdGljICR7aXRlcmF0b3JOYW1lfSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCAke2NsYXNzTmFtZX0mIGl0ZXJhdGVkT2JqZWN0
LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JHtpdGVyYXRvck5hbWV9Pih2bS5oZWFwKSkg
JHtpdGVyYXRvck5hbWV9KHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOworICAgICAg
ICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JHtpdGVy
YXRvck5hbWV9Pih2bSkpICR7aXRlcmF0b3JOYW1lfShzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0
LCBraW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTc1MjIsNyArNzUyMiw3IEBAIHN1YiBHZW5lcmF0
ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3Rh
dGljICR7cHJvdG90eXBlQ2xhc3NOYW1lfSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4odm0uaGVhcCkpICR7Y2xhc3NO
YW1lfVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7CisgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPih2bSkp
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBET01XcmFwcGVkID0gRE9NV2luZG93OwogICAgIHN0YXRpYyBKU0RPTVdp
bmRvdyogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8
RE9NV2luZG93PiYmIGltcGwsIEpTV2luZG93UHJveHkqIHByb3h5KQogICAgIHsKLSAgICAgICAg
SlNET01XaW5kb3cqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01X
aW5kb3c+KHZtLmhlYXApKSBKU0RPTVdpbmRvdyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwp
LCBwcm94eSk7CisgICAgICAgIEpTRE9NV2luZG93KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTRE9NV2luZG93Pih2bSkpIEpTRE9NV2luZG93KHZtLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoaW1wbCksIHByb3h5KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
cHJveHkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGlj
IEpTRE9NV2luZG93UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBKU0RPTVdpbmRvd1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0RPTVdpbmRvd1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTRE9NV2luZG93UHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTRE9NV2luZG93UHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NV2luZG93
UHJvdG90eXBlPih2bSkpIEpTRE9NV2luZG93UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRE9NV3JhcHBlZCA9IERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlOwogICAgIHN0YXRpYyBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
ZjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4mJiBpbXBsLCBKU0M6OkpTUHJveHkqIHByb3h5
KQogICAgIHsKLSAgICAgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Pih2bS5oZWFwKSkgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSh2bSwgc3RydWN0dXJlLCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlPih2bSkpIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZT4odm0pKSBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRTdGFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNFeHBvc2VkU3RhclByb3Rv
dHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNFeHBvc2VkU3Rh
clByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9z
ZWRTdGFyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNFeHBvc2VkU3RhclByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0V4cG9zZWRTdGFyUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFN0YXJQcm90b3R5
cGU+KHZtKSkgSlNFeHBvc2VkU3RhclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNFeHBvc2VkU3Rhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdyYXBwZWQg
PSBFeHBvc2VkU3RhcjsKICAgICBzdGF0aWMgSlNFeHBvc2VkU3RhciogY3JlYXRlKEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxF
eHBvc2VkU3Rhcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNFeHBvc2VkU3RhciogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9zZWRTdGFyPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTRXhwb3NlZFN0YXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNFeHBvc2VkU3RhciogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9zZWRTdGFyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBK
U0V4cG9zZWRTdGFyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlPih2bS5oZWFwKSkg
SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dQcm90b3R5cGU+KHZtKSkgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNET01XcmFwcGVyPEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz47CiAgICAgc3RhdGljIEpT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3coc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0o
KSkpIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdy
YXBwZWQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICAgICBzdGF0aWMgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5KiBw
cm94eSkKICAgICB7Ci0gICAgICAgIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4o
dm0uaGVhcCkpIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4odm0p
KSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVQcm90b3R5cGU+KHZtKSkgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdy
YXBwZWQgPSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3RhdGljIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5
KiBwcm94eSkKICAgICB7Ci0gICAgICAgIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih2bS5oZWFwKSkgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih2bSkpIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU+KHZtKSkgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBET01XcmFwcGVkID0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3RhdGlj
IEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiYmIGltcGwsIEpT
Qzo6SlNQcm94eSogcHJveHkpCiAgICAgewotICAgICAgICBKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU+KHZtLmhlYXApKSBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU+KHZtKSkgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSh2bSwgc3RydWN0dXJlLCBX
VEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgcHJveHkpOwog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlPih2bSkpIEpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpK
U05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnNQ
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZT4odm0pKSBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdENFUmVhY3Rpb25zPjsK
ICAgICBzdGF0aWMgSlNUZXN0Q0VSZWFjdGlvbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENFUmVhY3Rp
b25zPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDRVJlYWN0aW9ucyogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9ucz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDRVJlYWN0aW9ucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RDRVJlYWN0aW9ucyogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9ucz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0Q0VSZWFjdGlvbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qt
PnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKLSAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGU+KHZtKSkgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiYm
IGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
ZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KGdsb2JhbE9iamVjdC0+dm0o
KSkpIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDYWxsVHJhY2VyUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGU+
KHZtKSkgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbFRyYWNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0RPTVdyYXBwZXI8VGVzdENhbGxUcmFjZXI+OwogICAgIHN0YXRpYyBKU1Rlc3RDYWxs
VHJhY2VyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDYWxsVHJhY2VyPiYmIGltcGwpCiAgICAgewotICAg
ICAgICBKU1Rlc3RDYWxsVHJhY2VyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdENhbGxUcmFjZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q2Fs
bFRyYWNlcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAg
ICBKU1Rlc3RDYWxsVHJhY2VyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdENhbGxUcmFjZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdENhbGxUcmFjZXIo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGU+KHZtKSkgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFw
cGVyPFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj47CiAgICAgc3RhdGljIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Ioc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+
dm0oKSkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU+KHZtKSkgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+
OwogICAgIHN0YXRpYyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RDb25kaXRpb25hbEluY2x1ZGVzPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0
aWMgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU+
KHZtKSkgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+OwogICAgIHN0YXRpYyBKU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcx
LDcgKzQ3MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RET01KSVRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RET01KSVRQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3RET01KSVRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdERPTUpJVFByb3RvdHlwZT4odm0pKSBKU1Rlc3RET01KSVRQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdERPTUpJVDsKICAgICBzdGF0aWMgSlNUZXN0
RE9NSklUKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RET01KSVQ+JiYgaW1wbCkKICAgICB7Ci0gICAgICAg
IEpTVGVzdERPTUpJVCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RET01KSVQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RE9NSklUKHN0cnVjdHVy
ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdERPTUpJVCog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RET01KSVQ+KGdsb2Jh
bE9iamVjdC0+dm0oKSkpIEpTVGVzdERPTUpJVChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05Q
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVm
YXVsdFRvSlNPTlByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RGVmYXVsdFRv
SlNPTlByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3REZWZhdWx0VG9KU09OUHJvdG90eXBlPih2bSkpIEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTi5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRl
c3REZWZhdWx0VG9KU09OPjsKICAgICBzdGF0aWMgSlNUZXN0RGVmYXVsdFRvSlNPTiogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0
RGVmYXVsdFRvSlNPTiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3REZWZhdWx0VG9KU09OPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlZmF1bHRU
b0pTT04oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAg
SlNUZXN0RGVmYXVsdFRvSlNPTiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3REZWZhdWx0VG9KU09OPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3REZWZhdWx0
VG9KU09OKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlPih2bSkpIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZD47CiAgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogY3Jl
YXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
ICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAg
ICBzdGF0aWMgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmgJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2U+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPihn
bG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3Bw
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlw
ZT4odm0pKSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ7CiAgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQ+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWxQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlPih2
bSkpIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBE
T01XcmFwcGVkID0gVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw7CiAgICAgc3RhdGljIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWw+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWwqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0
OwogICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZT4odm0pKSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZT47CiAgICAgc3RhdGljIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZShzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERv
bWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWlu
U2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RE
b21haW5TZWN1cml0eVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOworICAgICAgICBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZT4o
dm0pKSBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERvbWFpblNlY3VyaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdERvbWFpblNlY3VyaXR5PjsKICAg
ICBzdGF0aWMgSlNUZXN0RG9tYWluU2VjdXJpdHkqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERvbWFpblNl
Y3VyaXR5PiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3REb21haW5TZWN1cml0eSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REb21haW5TZWN1cml0eT4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REb21haW5TZWN1cml0eShzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3REb21haW5TZWN1
cml0eSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REb21haW5T
ZWN1cml0eT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0RG9tYWluU2VjdXJpdHkoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
Pih2bS5oZWFwKSkgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGU+KHZtKSkgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8
VGVzdEVuYWJsZWRCeVNldHRpbmc+OwogICAgIHN0YXRpYyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RFbmFibGVkQnlTZXR0aW5nPiYmIGltcGwpCiAgICAgewotICAg
ICAgICBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RW5hYmxlZEZvckNvbnRleHRQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JD
b250ZXh0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRl
c3RFbmFibGVkRm9yQ29udGV4dD47CiAgICAgc3RhdGljIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RFbmFibGVkRm9yQ29udGV4dD4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KGds
b2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0RXZlbnRDb25z
dHJ1Y3RvcjsKICAgICBzdGF0aWMgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3Ioc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAg
ICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCkpKSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAg
ICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZT4o
dm0uaGVhcCkpIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlPih2
bSkpIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAyODU2ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTVGVzdEV2ZW50VGFyZ2V0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudFRhcmdldD4mJiBpbXBs
KQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0oKSwgIkFsbG9jYXRlZCBtYXNxdWVy
YWRpbmcgb2JqZWN0Iik7Ci0gICAgICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpIEpTVGVzdEV2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3Qt
PnZtKCkpKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAg
IHN0YXRpYyBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZT4odm0pKSBKU1Rlc3RFeGNl
cHRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFeGNlcHRpb24uaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRl
c3RFeGNlcHRpb24+OwogICAgIHN0YXRpYyBKU1Rlc3RFeGNlcHRpb24qIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdEV4Y2VwdGlvbj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0RXhjZXB0aW9uKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV4Y2VwdGlvbj4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFeGNlcHRpb24oc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RXhjZXB0aW9uKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV4Y2VwdGlvbj4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0RXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlPih2bSkpIEpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdD47CiAgICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCogY3Jl
YXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiYmIGltcGwpCiAgICAgewotICAg
ICAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdChzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290PihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5h
bE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU+
KHZtKSkgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU+OwogICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwpCiAgICAg
ewotICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGU+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0R2xvYmFsT2JqZWN0PjsKICAgICBzdGF0aWMgSlNU
ZXN0R2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+JiYgaW1wbCkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdEdsb2JhbE9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0R2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEdsb2JhbE9iamVjdCogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0o
KSkpIEpTVGVzdEdsb2JhbE9iamVjdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlPih2bS5oZWFwKSkgSlNU
ZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU+KHZtKSkgSlNUZXN0
R2xvYmFsT2JqZWN0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBw
ZXI8VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU+KHZtKSkgSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
PjsKICAgICBzdGF0aWMgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+JiYgaW1wbCkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CisgICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU+KHZtKSkgSlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTExMjYsNyArMTEyNiw3
IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlSXRlcmF0
b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNUZXN0
SW50ZXJmYWNlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAg
ICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPFRl
c3RJbnRlcmZhY2VJdGVyYXRvcj4odm0uaGVhcCkpIFRlc3RJbnRlcmZhY2VJdGVyYXRvcihzdHJ1
Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKKyAgICAgICAgYXV0byogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4odm0p
KSBUZXN0SW50ZXJmYWNlSXRlcmF0b3Ioc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7
CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEludGVyZmFjZT47CiAgICAgc3RhdGljIEpTVGVzdElu
dGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0SW50ZXJmYWNlPiYmIGltcGwpCiAgICAgewotICAg
ICAgICBKU1Rlc3RJbnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEludGVy
ZmFjZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBK
U1Rlc3RJbnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RJbnRlcmZhY2Uoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNO
b25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGU+KHZtKSkgSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNET01XcmFwcGVyPFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT47CiAgICAgc3Rh
dGljIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAg
c3RhdGljIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZT4odm0uaGVhcCkpIEpT
VGVzdEl0ZXJhYmxlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlPih2bSkpIEpTVGVzdEl0ZXJhYmxlUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTIyMyw3ICsyMjMs
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICAgICBzdGF0aWMgVGVzdEl0ZXJhYmxlSXRlcmF0
b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNUZXN0
SXRlcmFibGUmIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAg
ICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8VGVz
dEl0ZXJhYmxlSXRlcmF0b3I+KHZtLmhlYXApKSBUZXN0SXRlcmFibGVJdGVyYXRvcihzdHJ1Y3R1
cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKKyAgICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPFRlc3RJdGVyYWJsZUl0ZXJhdG9yPih2bSkpIFRl
c3RJdGVyYWJsZUl0ZXJhdG9yKHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwogICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEl0ZXJhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNET01XcmFwcGVyPFRlc3RJdGVyYWJsZT47CiAgICAgc3RhdGljIEpTVGVzdEl0ZXJhYmxlKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RJdGVyYWJsZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0
SXRlcmFibGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SXRl
cmFibGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SXRlcmFibGUoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0SXRlcmFibGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SXRlcmFibGU+KGds
b2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEl0ZXJhYmxlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlPih2bSkpIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpOworICAgICAgICBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkg
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ioc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICBy
ZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Qcm90b3R5cGU+KHZtKSkgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKICAg
ICBzdGF0aWMgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+
KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihzdHJ1Y3R1
cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdFByb3RvdHlwZT4odm0pKSBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0PjsKICAgICBzdGF0aWMgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdChzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdEluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM+OwogICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCiAgICAg
ewotICAgICAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1
cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNU
ZXN0TWFwTGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TWFwTGlrZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RNYXBMaWtlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TWFwTGlrZVBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RNYXBM
aWtlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE1hcExpa2VQcm90b3R5cGU+KHZtKSkgSlNUZXN0TWFwTGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
YXBMaWtlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE1hcExpa2U+OwogICAgIHN0YXRpYyBKU1Rlc3RN
YXBMaWtlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RNYXBMaWtlPiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RNYXBMaWtlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE1hcExpa2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TWFwTGlrZShzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RNYXBM
aWtlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1hcExpa2U+
KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE1hcExpa2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNO
b25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwogICAgIHN0YXRp
YyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAg
ICAgICBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnM+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBz
dGF0aWMgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9N
V3JhcHBlcjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKICAgICBzdGF0
aWMgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYgaW1wbCkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU+KHZtLmhl
YXApKSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uPjsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24qIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24oc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGU+KHZtKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgJ
KHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01X
cmFwcGVyPFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAgICAgc3Rh
dGljIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkp
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7
CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
clByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcj47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiYmIGltcGwpCiAgICAg
ewotICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcihz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkp
KSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU+
KHZtKSkgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4m
JiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24q
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+JiYgaW1w
bCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPihn
bG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcihzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAko
cmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPjsKICAgICBzdGF0aWMgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcihzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgp
KSkgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJv
dG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+OwogICAg
IHN0YXRpYyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZEdldHRlckNhbGxXaXRoPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGg+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+KGdsb2JhbE9iamVjdC0+
dm0oKSkpIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5
cGU+KHZtKSkgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcj47CiAgICAgc3RhdGlj
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllci5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNE
T01XcmFwcGVyPFRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPjsKICAgICBzdGF0aWMgSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5o
CShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYg
aW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAg
IEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3Qt
PnZtKCkpKSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFs
T2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZT4odm0p
KSBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+JiYgaW1wbCkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
RE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAgICAgc3RhdGljIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj47CiAgICAgc3RhdGljIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGU+KHZt
LmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlcj47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAg
ICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhlYXApKSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucz47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZT4odm0pKSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODU2ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmpl
Y3QtPnZtKCkpKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVz
cGFjZU9iamVjdC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTU9iamVjdDsK
ICAgICBzdGF0aWMgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdE5hbWVzcGFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
SlNUZXN0TmFtZXNwYWNlT2JqZWN0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAg
IEpTVGVzdE5hbWVzcGFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5h
bWVzcGFjZU9iamVjdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROb2RlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5vZGVQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3ROb2RlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0Tm9kZVByb3RvdHlwZT4odm0pKSBKU1Rlc3ROb2RlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTQyNyw3ICs0MjcsNyBAQCBJR05PUkVf
V0FSTklOR1NfRU5ECiAKICAgICBzdGF0aWMgVGVzdE5vZGVJdGVyYXRvciogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Rlc3ROb2RlJiBpdGVyYXRlZE9i
amVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgYXV0byogaW5zdGFuY2Ug
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPFRlc3ROb2RlSXRlcmF0b3I+KHZtLmhl
YXApKSBUZXN0Tm9kZUl0ZXJhdG9yKHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwor
ICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
VGVzdE5vZGVJdGVyYXRvcj4odm0pKSBUZXN0Tm9kZUl0ZXJhdG9yKHN0cnVjdHVyZSwgaXRlcmF0
ZWRPYmplY3QsIGtpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBET01XcmFwcGVkID0gVGVzdE5vZGU7CiAgICAgc3RhdGljIEpTVGVzdE5vZGUqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE5vZGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5vZGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9kZT4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3ROb2RlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5vZGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Tm9kZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0Tm9kZShz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODU2LDcgKzE4NTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0T2JqUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0T2JqUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IEpTVGVzdE9ialByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RPYmpQcm90b3R5cGU+KHZtKSkgSlNUZXN0T2JqUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
RE9NV3JhcHBlcjxUZXN0T2JqPjsKICAgICBzdGF0aWMgSlNUZXN0T2JqKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RPYmo+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE9iaiogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0T2JqKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIEpTVGVzdE9iaiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE9iaihzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyODU2
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRp
YyBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWxQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZT4odm0pKSBKU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaAkocmV2
aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsPjsKICAgICBzdGF0aWMgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiYmIGltcGwpCiAgICAgewotICAg
ICAgICBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbChzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
OwogICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBz
dGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJv
dG90eXBlPih2bS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGU+KHZtKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+
OwogICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPiYmIGlt
cGwpCiAgICAgewotICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KGdsb2JhbE9iamVjdC0+dm0o
KSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODU2ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGU+
KHZtKSkgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgJKHJldmlz
aW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNl
PjsKICAgICBzdGF0aWMgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
bHVnaW5JbnRlcmZhY2U+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFBsdWdpbkludGVy
ZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQbHVnaW5J
bnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0UGx1Z2luSW50ZXJmYWNl
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dFBsdWdpbkludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFBsdWdpbklu
dGVyZmFjZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlPih2bSkpIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIERPTVdyYXBwZWQgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OwogICAgIHN0YXRpYyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFJlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNU
ZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlPih2bSkp
IEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlNYXBMaWtlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5oCShyZXZpc2lvbiAy
ODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlNYXBMaWtlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdFJlYWRPbmx5TWFwTGlrZT47CiAg
ICAgc3RhdGljIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UmVhZE9u
bHlNYXBMaWtlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RSZWFkT25seU1hcExpa2Uq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVhZE9ubHlNYXBM
aWtlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFJlYWRPbmx5TWFwTGlrZShzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RSZWFk
T25seU1hcExpa2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
UmVhZE9ubHlNYXBMaWtlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RSZWFkT25seU1hcExp
a2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0
aWMgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RSZWFkT25seVNl
dExpa2VQcm90b3R5cGU+KHZtKSkgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlT
ZXRMaWtlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0
UmVhZE9ubHlTZXRMaWtlPjsKICAgICBzdGF0aWMgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RSZWFkT25seVNldExpa2U+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RSZWFkT25seVNldExpa2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
UmVhZE9ubHlTZXRMaWtlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RSZWFkT25seVNldExpa2U+KGdsb2JhbE9iamVjdC0+dm0oKSkp
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3RQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5
cGU+KHZtLmhlYXApKSBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZT4odm0pKSBKU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuaAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3Q+OwogICAgIHN0YXRpYyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlPih2bSkpIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT47
CiAgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiYmIGltcGwpCiAgICAg
ewotICAgICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworICAgICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICBy
ZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NTY4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRM
aWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0U2V0TGlr
ZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0
U2V0TGlrZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RTZXRMaWtlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0U2V0TGlrZVByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RTZXRMaWtlUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNldExpa2VQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0U2V0TGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2V0TGlrZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBKU0RPTVdyYXBwZXI8VGVzdFNldExpa2U+OwogICAgIHN0YXRpYyBKU1Rlc3RTZXRMaWtlKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RTZXRMaWtlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RT
ZXRMaWtlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNldExp
a2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U2V0TGlrZShzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RTZXRMaWtlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNldExpa2U+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdFNldExpa2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1By
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1By
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwogICAgIHN0YXRpYyBKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KGds
b2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0U3RyaW5n
aWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
VGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0U3RyaW5n
aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNU
ZXN0U3RyaW5naWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0U3RyaW5naWZpZXJQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRl
c3RTdHJpbmdpZmllcj47CiAgICAgc3RhdGljIEpTVGVzdFN0cmluZ2lmaWVyKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RTdHJpbmdpZmllcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5n
aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5n
aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U3RyaW5naWZpZXIoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0U3RyaW5n
aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5n
aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFN0cmluZ2lmaWVyKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uUHJvdG90eXBlPih2bSkpIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCShyZXZpc2lv
biAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg1Njg4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0
YXRpYyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZT4odm0pKSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaAkocmV2aXNpb24gMjg1
Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbj47CiAgICAgc3RhdGljIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24qIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+JiYgaW1wbCkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAg
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbihzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1By
b3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZT4odm0pKSBKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaAkocmV2aXNpb24gMjg1Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXM+OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4o
Z2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGlj
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZT4o
dm0uaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJv
dG90eXBlPih2bSkpIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oCShy
ZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBw
ZXI8VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz47CiAgICAgc3RhdGljIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworICAgICAgICBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmcoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0
aWMgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGU+KHZtKSkgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBK
U0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OwogICAgIHN0YXRp
YyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZShzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+
dm0oKSkpIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNO
b25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmgJKHJldmlzaW9uIDI4
NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZT47CiAgICAgc3RhdGljIEpTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAg
ICBzdGF0aWMgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0VHlwZWRlZnNQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RUeXBlZGVm
cz47CiAgICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RUeXBlZGVm
cz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0VHlwZWRlZnMqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNUZXN0VHlwZWRlZnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKKyAgICAgICAgSlNUZXN0VHlwZWRlZnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVz
dFR5cGVkZWZzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIERPTVdyYXBwZWQgPSBXb3JrZXJHbG9iYWxTY29wZTsKICAgICBzdGF0aWMg
SlNXb3JrZXJHbG9iYWxTY29wZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5KiBw
cm94eSkKICAgICB7Ci0gICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNXb3JrZXJHbG9iYWxTY29wZT4odm0uaGVhcCkpIEpT
V29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7CisgICAgICAg
IEpTV29ya2VyR2xvYmFsU2NvcGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNXb3JrZXJHbG9iYWxTY29wZT4odm0pKSBKU1dvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBw
cm94eSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMg
SlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU+
KHZtKSkgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24g
Mjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIERPTVdyYXBwZWQgPSBXb3JrbGV0R2xvYmFsU2NvcGU7CiAgICAgc3RhdGlj
IEpTV29ya2xldEdsb2JhbFNjb3BlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5
KiBwcm94eSkKICAgICB7Ci0gICAgICAgIEpTV29ya2xldEdsb2JhbFNjb3BlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTV29ya2xldEdsb2JhbFNjb3BlPih2bS5oZWFw
KSkgSlNXb3JrbGV0R2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIEpTV29ya2xldEdsb2JhbFNjb3BlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTV29ya2xldEdsb2JhbFNjb3BlPih2bSkpIEpTV29ya2xldEdsb2JhbFNjb3Bl
KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKHZtLCBwcm94eSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNzUsNyArNzUs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAg
ICBzdGF0aWMgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTV29ya2xldEdsb2JhbFNjb3BlUHJv
dG90eXBlPih2bS5oZWFwKSkgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNXb3JrbGV0R2xvYmFs
U2NvcGVQcm90b3R5cGU+KHZtKSkgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5oCShyZXZpc2lvbiAyODU2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUg
cHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBu
ZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJhcnJheSIuCiAgICAg
ICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZTxSdW50aW1lQXJyYXk+KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBSdW50
aW1lQXJyYXkqIHJ1bnRpbWVBcnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRp
bWVBcnJheT4odm0uaGVhcCkpIFJ1bnRpbWVBcnJheSh2bSwgZG9tU3RydWN0dXJlKTsKKyAgICAg
ICAgUnVudGltZUFycmF5KiBydW50aW1lQXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxSdW50aW1lQXJyYXk+KHZtKSkgUnVudGltZUFycmF5KHZtLCBkb21TdHJ1Y3R1cmUpOwogICAg
ICAgICBydW50aW1lQXJyYXktPmZpbmlzaENyZWF0aW9uKHZtLCBhcnJheSk7CiAgICAgICAgIHJl
dHVybiBydW50aW1lQXJyYXk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKICAgICB7CiAgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICAgICAgUnVudGltZU1ldGhvZCogcnVudGltZU1l
dGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KHZtLmhlYXAp
KSBSdW50aW1lTWV0aG9kKHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZCk7CisgICAgICAgIFJ1bnRpbWVN
ZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1l
TWV0aG9kPih2bSkpIFJ1bnRpbWVNZXRob2Qodm0sIHN0cnVjdHVyZSwgbWV0aG9kKTsKICAgICAg
ICAgcnVudGltZU1ldGhvZC0+ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwogICAgICAgICByZXR1
cm4gcnVudGltZU1ldGhvZDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuaAkocmV2aXNpb24gMjg1Njg4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPEluc3RhbmNlPiYmIGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgUnVu
dGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU9i
amVjdD4odm0uaGVhcCkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbnN0
YW5jZSkpOworICAgICAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0Pih2bSkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVy
ZSwgV1RGTW92ZShpbnN0YW5jZSkpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgT2JqQ1J1bnRpbWVPYmpl
Y3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8T2JqY0luc3Rh
bmNlPiYmIGluc3QpCiAgICAgewotICAgICAgICBPYmpDUnVudGltZU9iamVjdCogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KHZtLmhlYXApKSBP
YmpDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAg
T2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9i
akNSdW50aW1lT2JqZWN0Pih2bSkpIE9iakNSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdU
Rk1vdmUoaW5zdCkpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsx
NzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAg
ICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAi
aSIuCiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRl
ZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIE9iakNSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KHZtLmhlYXApKSBPYmpDUnVudGltZU1l
dGhvZCh2bSwgZG9tU3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBPYmpDUnVudGltZU1ldGhv
ZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNSdW50aW1l
TWV0aG9kPih2bSkpIE9iakNSdW50aW1lTWV0aG9kKHZtLCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7
CiAgICAgICAgIHJ1bnRpbWVNZXRob2QtPmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJ1bnRpbWVNZXRob2Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHJldmlzaW9uIDI4NTY4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA1LDcg
KzEwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIFN0cnVjdHVyZSog
ZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpjRmFs
bGJhY2tPYmplY3RJbXA+KGV4ZWMpOwotICAgICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGZh
bGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wPih2bS5oZWFwKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGdsb2JhbE9iamVjdCwgZG9t
U3RydWN0dXJlLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKiBmYWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9i
amNGYWxsYmFja09iamVjdEltcD4odm0pKSBPYmpjRmFsbGJhY2tPYmplY3RJbXAoZ2xvYmFsT2Jq
ZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBmYWxs
YmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IGZhbGxiYWNrT2JqZWN0OwogICAgIH0K
</data>
<flag name="commit-queue"
          id="468944"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444049</attachid>
            <date>2021-11-11 22:46:06 -0800</date>
            <delta_ts>2021-11-12 03:37:54 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233028.patch</filename>
            <type>text/plain</type>
            <size>536566</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4MyBA
QAorMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgYWxsb2NhdGVDZWxsKCkgYW5kIHRyeUFsbG9jYXRlQ2VsbCgpIHRvIHRha2UgVk0m
IGluc3RlYWQgb2YgSGVhcCYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMjgKKyAgICAgICAgcmRhcjovLzg1MzI5NjgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWxsb2NhdGVDZWxsKCkgYW5kIHRy
eUFsbG9jYXRlQ2VsbCgpIGNhbiBmZXRjaCBIZWFwJiBmcm9tIFZNJiB0aGVtc2VsdmVzLiAgVGhp
cworICAgICAgICBhbGxvd3MgdXMgdG8gbWFrZSBhbGwgdGhlIGNsaWVudCBjb2RlIG1vcmUgdGVy
c2UsIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgICByZWRpcmVjdCB0aGUgdW5k
ZXJseWluZyBoZWFwIHRvIGFsbG9jYXRlIGZyb20gbGF0ZXIgZm9yIGdsb2JhbCBHQyB3b3JrLgor
ICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgd2lsbCBoZWxwIG1ha2UgdGhlIGdsb2JhbCBHQyBw
YXRjaCBsZXNzIG9mIGEgbWVnYSBwYXRjaCBhbmQKKyAgICAgICAgZWFzaWVyIHRvIHJldmlldyBs
YXRlci4KKworICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIEFQ
SS9KU0FQSVZhbHVlV3JhcHBlci5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD46OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFj
a0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
R2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDYWxsYmFja0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRnVuY3Rpb25Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRXZhbENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0
SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEpTQ01lbW9yeUZvb3RwcmludDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTRmlsZURlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Bc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0dl
bmVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkF0b21pY3NPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6QmlnSW50T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpCcmFuZGVk
U3RydWN0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRQcm9ncmFtQ29kZUJsb2NrOjpkZWNvZGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRNb2R1bGVDb2RlQmxvY2s6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZEV2YWxDb2RlQmxvY2s6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZEZ1bmN0aW9uQ29kZUJsb2NrOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNy
ZWF0ZUVtcHR5KToKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlND
OjpEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb24uY3BwOgorICAgICAgICAoSlNDOjpFeGNlcHRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1w
bCk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHA6CisgICAgICAgIChK
U0M6OkludGxMaXN0Rm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExpc3RG
b3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6CisgICAgICAgIChKU0M6OkludGxMb2Nh
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bExv
Y2FsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRs
U2VnbWVudHMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JdGVyYXRv
clByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyk6CisgICAgICAg
ICogcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FzeW5jRnVu
Y3Rpb246OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNC
aWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6Cisg
ICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxlZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjphbGxv
Y2F0ZUNlbGwpOgorICAgICAgICAoSlNDOjp0cnlBbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpK
U0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXdQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
PFZpZXdDbGFzcz46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTxWaWV3Q2xhc3M+Ojpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVh
dGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbW11dGFibGVC
dXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHA6CisgICAgICAgIChK
U0M6OkpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJv
bWlzZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU01hcC5jcHA6CisgICAgICAgIChKU0M6OkpTTWFwOjpjbG9uZSk6CisgICAgICAg
ICogcnVudGltZS9KU01hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTTWFwSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpjcmVhdGVXaXRoQnV0dGVyZmx5KToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
Y3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogcnVudGltZS9KU1NldC5jcHA6CisgICAgICAgIChK
U0M6OkpTU2V0OjpjbG9uZSk6CisgICAgICAgICogcnVudGltZS9KU1NldC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0SXRlcmF0b3I6
OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTU2V0SXRlcmF0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU291cmNlQ29kZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlRW1wdHlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmdJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9KU1dlYWtNYXAuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha09iamVjdFJl
Zi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXZWFrU2V0Lmg6CisgICAgICAgICogcnVudGltZS9K
U1dpdGhTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2l0aFNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL01hcEl0
ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFi
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlByb3BlcnR5VGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6
OmNsb25lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpQcm94eUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
eHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJveHlSZXZva2U6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdF
eHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5j
cHA6CisgICAgICAgIChKU0M6OlNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgICogcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpTY29wZWRB
cmd1bWVudHNUYWJsZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbE9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpTeW1ib2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2Fs
ZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsTm93OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbE9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcDoKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcDoKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaDoKKyAgICAgICAgKiB0ZXN0UmVn
RXhwLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKiB0b29s
cy9KU0RvbGxhclZNLmg6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNUb1dhc21JQ0NhbGxlZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5OjpjcmVh
dGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5R2xvYmFsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUdsb2JhbDo6dHJ5
Q3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJs
eU1vZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0
dWIpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseVRhZy5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWc6OmNy
ZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseUdsb2JhbENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFn
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6
Y3JlYXRlKToKKwogMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIFZNOjp3cml0ZUJhcnJpZXIoKSBhbmQgVk06Om11dGF0b3JGZW5jZSgpLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsNyArNTAwLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAg
ICAgICBHbG9iYWxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEds
b2JhbE9iamVjdD4odm0uaGVhcCkpIEdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9i
YWxPYmplY3Q+KHZtKSkgR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtLCBhcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDTWVt
b3J5Rm9vdHByaW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBKU0NNZW1vcnlGb290cHJpbnQq
IGZvb3RwcmludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ01lbW9yeUZvb3Rwcmlu
dD4odm0uaGVhcCkpIEpTQ01lbW9yeUZvb3RwcmludCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNDTWVtb3J5Rm9vdHByaW50KiBmb290cHJpbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0NNZW1vcnlGb290cHJpbnQ+KHZtKSkgSlNDTWVtb3J5Rm9vdHByaW50KHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBmb290cHJpbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIGZvb3RwcmludDsKICAgICB9CkBAIC0xNzczLDcgKzE3NzMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTRmlsZURlc2NyaXB0b3IqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEZJTEUqJiYgZGVzY3JpcHRvcikKICAgICB7CiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgp
KTsKLSAgICAgICAgYXV0byogZmlsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmls
ZURlc2NyaXB0b3I+KHZtLmhlYXApKSBKU0ZpbGVEZXNjcmlwdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBhdXRvKiBmaWxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaWxlRGVz
Y3JpcHRvcj4odm0pKSBKU0ZpbGVEZXNjcmlwdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBm
aWxlLT5maW5pc2hDcmVhdGlvbih2bSwgZGVzY3JpcHRvcik7CiAgICAgICAgIHJldHVybiBmaWxl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxMS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KHZtLmhlYXApKSBHbG9iYWxP
YmplY3Qodm0sIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KHZt
KSkgR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3Q7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0FQSUdsb2JhbE9iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FQSUdsb2JhbE9iamVjdD4odm0uaGVh
cCkpIEpTQVBJR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FQSUdsb2JhbE9iamVjdD4odm0pKSBK
U0FQSUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVZhbHVlV3JhcHBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAw
MSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNBUElWYWx1ZVdyYXBw
ZXIqIGNyZWF0ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBKU0FQSVZh
bHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJVmFs
dWVXcmFwcGVyPih2bS5oZWFwKSkgSlNBUElWYWx1ZVdyYXBwZXIodm0pOworICAgICAgICBKU0FQ
SVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQVBJ
VmFsdWVXcmFwcGVyPih2bSkpIEpTQVBJVmFsdWVXcmFwcGVyKHZtKTsKICAgICAgICAgd3JhcHBl
ci0+ZmluaXNoQ3JlYXRpb24odm0sIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNz
UmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2sp
IAogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
SlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTQ2FsbGJhY2tDb25zdHJ1
Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYsIGNhbGxiYWNrKTsKKyAgICAg
ICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4odm0pKSBKU0NhbGxiYWNrQ29uc3RydWN0
b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBjYWxsYmFjayk7CiAgICAgICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIGNsYXNzUmVmKTsKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbigKIEpTQ2FsbGJhY2tGdW5jdGlvbiogSlNDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZSgpOwotICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KHZtLmhlYXApKSBKU0NhbGxi
YWNrRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbGJhY2spOworICAgIEpTQ2FsbGJhY2tGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVu
Y3Rpb24+KHZtKSkgSlNDYWxsYmFja0Z1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxiYWNrKTsK
ICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwogICAgIHJldHVybiBmdW5j
dGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBA
IFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEpTQ2FsbGJhY2tPYmoKIHRlbXBsYXRlPD4KIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6Y3JlYXRlKFZNJiB2bSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7Ci0gICAgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qIGNhbGxi
YWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4+KHZtLmhlYXApKSBKU0NhbGxiYWNrT2JqZWN0KHZtLCBjbGFzc1JlZiwg
c3RydWN0dXJlKTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PiogY2FsbGJh
Y2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pj4odm0pKSBKU0NhbGxiYWNrT2JqZWN0KHZtLCBjbGFzc1JlZiwgc3RydWN0
dXJlKTsKICAgICBjYWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biBjYWxsYmFja09iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEz
OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCAhc3RydWN0dXJlLT5nbG9i
YWxPYmplY3QoKSB8fCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIEpTQ2FsbGJhY2tPYmplY3QqIGNhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4odm0uaGVhcCkpIEpTQ2FsbGJhY2tPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBkYXRhKTsKKyAgICAgICAgSlND
YWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0NhbGxiYWNrT2JqZWN0Pih2bSkpIEpTQ2FsbGJhY2tPYmplY3QoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGNsYXNzUmVmLCBkYXRhKTsKICAgICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBjYWxsYmFja09iamVjdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxi
YWNrRnVuY3Rpb24ubW0JKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NTksNyAr
NTU5LDcgQEAgT2JqQ0NhbGxiYWNrRnVuY3Rpb246Ok9iakNDYWxsYmFja0Z1bmN0aQogT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24qIE9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBz
dGQ6OnVuaXF1ZV9wdHI8T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBsKQogewogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmpjQ2FsbGJhY2tGdW5jdGlvblN0
cnVjdHVyZSgpOwotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNDYWxsYmFja0Z1bmN0aW9uPih2bS5oZWFwKSkgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNG
dW5jdGlvbiwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3RvciwgV1RGTW92ZShp
bXBsKSk7CisgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KHZtKSkgT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbiwg
b2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3RvciwgV1RGTW92ZShpbXBsKSk7CiAg
ICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCAwLCBuYW1lKTsKICAgICByZXR1cm4gZnVu
Y3Rpb247CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNBUElXcmFw
cGVyR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3JhcHBlckdsb2JhbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBTdHJ1Y3R1cmUqIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyCiB0ZW1wbGF0ZTw+CiBKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlckdsb2JhbE9iamVjdD4qIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xv
YmFsT2JqZWN0Pjo6Y3JlYXRlKFZNJiB2bSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxP
YmplY3Q+KiBjYWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4odm0uaGVhcCkpIEpTQ2FsbGJh
Y2tPYmplY3Qodm0sIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAgIEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+
KHZtKSkgSlNDYWxsYmFja09iamVjdCh2bSwgY2xhc3NSZWYsIHN0cnVjdHVyZSk7CiAgICAgY2Fs
bGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gY2FsbGJhY2tPYmpl
Y3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpT
Q0NhbAogSlNDQ2FsbGJhY2tGdW5jdGlvbiogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBU
eXBlIHR5cGUsIEpTQ0NsYXNzKiBqc2NDbGFzcywgR1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJl
LCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1l
dGVycykKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2xpYkNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBKU0NDYWxsYmFja0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0NDYWxsYmFja0Z1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIHR5cGUsIGpzY0NsYXNz
LCBXVEZNb3ZlKGNsb3N1cmUpLCByZXR1cm5UeXBlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICBKU0NDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KHZtKSkgSlNDQ2FsbGJhY2tGdW5jdGlvbih2bSwgc3Ry
dWN0dXJlLCB0eXBlLCBqc2NDbGFzcywgV1RGTW92ZShjbG9zdXJlKSwgcmV0dXJuVHlwZSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCAwLCBu
YW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVy
b24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0
ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYgb3RoZXIpCiAgICAg
ewotICAgICAgICBFdmFsQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEV2YWxDb2RlQmxvY2s+KHZtLmhlYXApKQorICAgICAgICBFdmFsQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxDb2RlQmxvY2s+KHZtKSkK
ICAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZtLmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUu
Z2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBFdmFsQ29kZUJs
b2NrKiBjcmVhdGUoVk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAg
ICB7Ci0gICAgICAgIEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0uaGVhcCkpCisgICAgICAgIEV2YWxDb2RlQmxvY2sq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0p
KQogICAgICAgICAgICAgRXZhbENvZGVCbG9jayh2bSwgdm0uZXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAg
ICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgU3RydWN0dXJlKiBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpjcgogCiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjpjcmVhdGUoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bS5oZWFwKSkgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZSh2bSwgY29kZUJsb2NrKTsKKyAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uodm0sIGNvZGVCbG9jayk7
CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNv
ZGVCbG9jay5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJp
Y2hAdXdhdGVybG9vLmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQ
YXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQogICAgIHsKLSAgICAgICAg
RnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RnVuY3Rpb25Db2RlQmxvY2s+KHZtLmhlYXApKQorICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4o
dm0pKQogICAgICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLmZ1bmN0aW9uQ29kZUJs
b2NrU3RydWN0dXJlLmdldCgpLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsKICAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsKICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewotICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4o
dm0uaGVhcCkpCisgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2bSkpCiAgICAgICAgICAgICBG
dW5jdGlvbkNvZGVCbG9jayh2bSwgdm0uZnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCks
IG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgaWYg
KCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRD
b2RlQmxvY2ssIHNjb3BlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3
endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0m
IHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVyKQog
ICAgIHsKLSAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkKKyAg
ICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSkpCiAgICAgICAgICAgICBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS5tb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LmdldCgpLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHZtLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsKICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewotICAgICAgICBNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dy
YW1Db2RlQmxvY2s+KHZtLmhlYXApKQorICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s+KHZtKSkKICAgICAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLm1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1l
cm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBj
cmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVy
KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkKKyAgICAgICAgUHJv
Z3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9n
cmFtQ29kZUJsb2NrPih2bSkpCiAgICAgICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS5w
cm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsK
ICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBDb3B5UGFyc2VkQmxvY2ssIG90
aGVyKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgUHJvZ3JhbUV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewotICAgICAgICBQcm9ncmFtQ29k
ZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dyYW1Db2Rl
QmxvY2s+KHZtLmhlYXApKQorICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dyYW1Db2RlQmxvY2s+KHZtKSkKICAgICAgICAg
ICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLnByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0
KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAg
aWYgKCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEV2YWxD
b2RlQmxvY2suaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVh
dGUoVk0mIHZtLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlu
a2VkRXZhbENvZGVCbG9jaz4odm0uaGVhcCkpIFVubGlua2VkRXZhbENvZGVCbG9jayh2bSwgdm0u
dW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBpbmZvLCBjb2RlR2VuZXJhdGlv
bk1vZGUpOworICAgICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSkpIFVubGlua2Vk
RXZhbENvZGVCbG9jayh2bSwgdm0udW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLmdldCgp
LCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogY3JlYXRlKFZNJiB2bSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJ
bmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KHZt
LmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBjb2RlVHlwZSwgaW5mbywgY29kZUdlbmVyYXRpb25N
b2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPih2bSkpIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLnVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
dHJ1Y3R1cmUuZ2V0KCksIGNvZGVUeXBlLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9
IGZhbHNlKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+KHZtLmhlYXApKQorICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0pKQogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVu
bGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3Zl
KHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0mIHZtLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0uaGVhcCkpIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0udW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3Ry
dWN0dXJlLmdldCgpLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgICAgICBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSkpIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0udW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3Ry
dWN0dXJlLmdldCgpLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2suaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIHsK
LSAgICAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0uaGVhcCkpIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0udW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlLmdldCgpLCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgICAgICBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bSkpIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayh2bSwg
dm0udW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBpbmZvLCBjb2RlR2Vu
ZXJhdGlvbk1vZGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNvbnN0IENsYXNzSW5mbyBEZWJ1Z2dlclNjb3BlOjpz
X2luZm8gPSAKIERlYnVnZ2VyU2NvcGUqIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZShWTSYgdm0sIEpT
U2NvcGUqIHNjb3BlKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc2NvcGUtPmdsb2Jh
bE9iamVjdCh2bSktPmRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKTsKLSAgICBEZWJ1Z2dlclNjb3Bl
KiBkZWJ1Z2dlclNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGVidWdnZXJTY29w
ZT4odm0uaGVhcCkpIERlYnVnZ2VyU2NvcGUodm0sIHN0cnVjdHVyZSwgc2NvcGUpOworICAgIERl
YnVnZ2VyU2NvcGUqIGRlYnVnZ2VyU2NvcGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxE
ZWJ1Z2dlclNjb3BlPih2bSkpIERlYnVnZ2VyU2NvcGUodm0sIHN0cnVjdHVyZSwgc2NvcGUpOwog
ICAgIGRlYnVnZ2VyU2NvcGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZGVidWdn
ZXJTY29wZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNJbmplY3RlZFNjcmlwdEhvc3Q+KHZtLmhlYXApKSBKU0luamVjdGVkU2NyaXB0SG9zdCh2
bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0luamVjdGVk
U2NyaXB0SG9zdD4odm0pKSBKU0luamVjdGVkU2NyaXB0SG9zdCh2bSwgc3RydWN0dXJlLCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlPih2bS5oZWFwKSkgSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU+KHZtKSkgSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmPEphdmFTY3JpcHRDYWxsRnJhbWU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAg
IEpTSmF2YVNjcmlwdENhbGxGcmFtZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTSmF2YVNjcmlwdENhbGxGcmFtZT4odm0uaGVhcCkpIEpTSmF2YVNjcmlwdENh
bGxGcmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPih2bSkpIEpTSmF2YVNjcmlwdENhbGxGcmFtZSh2bSwgc3Ry
dWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGU+KHZtKSkgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yPih2bSkpIEFnZ3JlZ2F0
ZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QWdncmVnYXRlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBBZ2dyZWdh
dGVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgQWdncmVnYXRlRXJyb3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlPih2bSkpIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFycmF5Q29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2ll
c1N5bWJvbCkKICAgICB7Ci0gICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFy
cmF5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEFycmF5Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rv
cj4odm0pKSBBcnJheUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1
Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgYXJyYXlQcm90b3R5cGUsIHNw
ZWNpZXNTeW1ib2wpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFycmF5SXRlcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBB
cnJheUl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcnJheUl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEFycmF5SXRlcmF0b3JQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCkBA
IC02MSw3ICs2MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZTo6c19pbmZvID0K
IAogQXJyYXlQcm90b3R5cGUqIEFycmF5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBcnJh
eVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlQ
cm90b3R5cGU+KHZtLmhlYXApKSBBcnJheVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBB
cnJheVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJy
YXlQcm90b3R5cGU+KHZtKSkgQXJyYXlQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gcHJv
dG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTYsNyBAQCB2
b2lkIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6ZmluCiAKIEFzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZSogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFzeW5jRnJv
bVN5bmNJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEFzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvdG90eXBlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICs0MCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0
aW9uUHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0pKSBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkp
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGU+KHZtKSkgQXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hr
b3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtKSkgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOwogICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
aAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IE9sZWtzYW5kciBTa2FjaGtvdiA8
Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZt
LmhlYXApKSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2
bSkpIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHJvdG90
eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgT2xl
a3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFz
eW5jR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQXN5bmNHZW5lcmF0b3JQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0dlbmVyYXRvclByb3RvdHlwZT4odm0pKSBBc3luY0dl
bmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2Fj
aGtvdkBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXN5bmNJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5
cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0l0ZXJhdG9yUHJvdG90eXBlPih2
bS5oZWFwKSkgQXN5bmNJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
QXN5bmNJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8QXN5bmNJdGVyYXRvclByb3RvdHlwZT4odm0pKSBBc3luY0l0ZXJhdG9yUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgQXRvbWljc09iamVjdDo6
QXRvbWljc09iamVjdChWTSYgdm0sIFN0cgogCiBBdG9taWNzT2JqZWN0KiBBdG9taWNzT2JqZWN0
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKLSAgICBBdG9taWNzT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBdG9taWNzT2JqZWN0Pih2bS5oZWFwKSkgQXRvbWljc09iamVjdCh2bSwg
c3RydWN0dXJlKTsKKyAgICBBdG9taWNzT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBdG9taWNzT2JqZWN0Pih2bSkpIEF0b21pY3NPYmplY3Qodm0sIHN0cnVjdHVy
ZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBCaWdJbnRDb25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJpZ0ludFByb3RvdHlwZSogYmln
SW50UHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAgICAgICAgQmlnSW50Q29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50Q29u
c3RydWN0b3I+KHZtLmhlYXApKSBCaWdJbnRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgQmlnSW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8QmlnSW50Q29uc3RydWN0b3I+KHZtKSkgQmlnSW50Q29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50
UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEJp
Z0ludE9iamVjdDo6c19pbmZvID0gewogQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQog
ewogICAgIEFTU0VSVChiaWdJbnQuaXNCaWdJbnQoKSk7Ci0gICAgQmlnSW50T2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBC
aWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwor
ICAgIEJpZ0ludE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qmln
SW50T2JqZWN0Pih2bSkpIEJpZ0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50KTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQmlnSW50UHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEJpZ0ludFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50UHJvdG90eXBlPih2bS5oZWFwKSkgQmlnSW50
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBCaWdJbnRQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludFByb3RvdHlwZT4odm0pKSBC
aWdJbnRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzMsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQm9vbGVhbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlw
ZSwgR2V0dGVyU2V0dGVyKikKICAgICB7Ci0gICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBCb29sZWFuQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEJv
b2xlYW5Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxCb29sZWFuQ29uc3RydWN0b3I+KHZtKSkgQm9vbGVhbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGJvb2xlYW5Qcm90
b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQm9vbGVhbk9iamVjdCog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBCb29s
ZWFuT2JqZWN0KiBib29sZWFuID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9vbGVhbk9i
amVjdD4odm0uaGVhcCkpIEJvb2xlYW5PYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEJv
b2xlYW5PYmplY3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFu
T2JqZWN0Pih2bSkpIEJvb2xlYW5PYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGJvb2xl
YW4tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGJvb2xlYW47CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBCb29sZWFuUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEJv
b2xlYW5Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJv
b2xlYW5Qcm90b3R5cGU+KHZtLmhlYXApKSBCb29sZWFuUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxCb29sZWFuUHJvdG90eXBlPih2bSkpIEJvb2xlYW5Qcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5jcHAJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1
Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIEJyYW5kZWRTdHJ1Y3R1
cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHYKIFN0cnVjdHVyZSogQnJhbmRlZFN0cnVjdHVyZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywgVW5pcXVlZFN0cmluZ0ltcGwqIGJy
YW5kVWlkLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJy
ZWQpCiB7CiAgICAgQVNTRVJUKHZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgQnJhbmRlZFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRl
ZFN0cnVjdHVyZT4odm0uaGVhcCkpIEJyYW5kZWRTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBicmFu
ZFVpZCwgZGVmZXJyZWQpOworICAgIEJyYW5kZWRTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJyYW5kZWRTdHJ1Y3R1cmU+KHZtKSkgQnJhbmRlZFN0
cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5kVWlkLCBkZWZlcnJlZCk7CiAgICAgbmV3U3RydWN0
dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUtPnR5cGUoKSA9PSBTdHJ1Y3R1cmVUeXBlKTsKICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDcgKzE5OTAsNyBAQCBwdWJsaWM6CiAK
ICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBj
b25zdAogICAgIHsKLSAgICAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KGRl
Y29kZXIudm0oKS5oZWFwKSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlz
KTsKKyAgICAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KGRlY29kZXIudm0o
KSkpIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayhkZWNvZGVyLCAqdGhpcyk7CiAgICAgICAgIGNv
ZGVCbG9jay0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICAgICAgQmFzZTo6ZGVj
b2RlKGRlY29kZXIsICpjb2RlQmxvY2spOwogICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucy5kZWNv
ZGUoZGVjb2RlciwgY29kZUJsb2NrLT5tX3ZhckRlY2xhcmF0aW9ucyk7CkBAIC0yMDE1LDcgKzIw
MTUsNyBAQCBwdWJsaWM6CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsKKyAgICAgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KGRlY29kZXIudm0oKSkp
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhkZWNvZGVyLCAqdGhpcyk7CiAgICAgICAg
IGNvZGVCbG9jay0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKICAgICAgICAgQmFzZTo6
ZGVjb2RlKGRlY29kZXIsICpjb2RlQmxvY2spOwogICAgICAgICBjb2RlQmxvY2stPm1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBtX21vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0OwpAQCAtMjAzOSw3ICsy
MDM5LDcgQEAgcHVibGljOgogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrPihkZWNvZGVyLnZtKCkuaGVhcCkpIFVubGlua2VkRXZhbENvZGVCbG9jayhkZWNvZGVy
LCAqdGhpcyk7CisgICAgICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRFdmFsQ29kZUJsb2NrPihkZWNvZGVyLnZt
KCkpKSBVbmxpbmtlZEV2YWxDb2RlQmxvY2soZGVjb2RlciwgKnRoaXMpOwogICAgICAgICBjb2Rl
QmxvY2stPmZpbmlzaENyZWF0aW9uKGRlY29kZXIudm0oKSk7CiAgICAgICAgIEJhc2U6OmRlY29k
ZShkZWNvZGVyLCAqY29kZUJsb2NrKTsKICAgICAgICAgbV92YXJpYWJsZXMuZGVjb2RlKGRlY29k
ZXIsIGNvZGVCbG9jay0+bV92YXJpYWJsZXMpOwpAQCAtMjA2Myw3ICsyMDYzLDcgQEAgcHVibGlj
OgogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPihkZWNvZGVyLnZtKCkuaGVhcCkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soZGVjb2Rl
ciwgKnRoaXMpOworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPihk
ZWNvZGVyLnZtKCkpKSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKGRlY29kZXIsICp0aGlzKTsK
ICAgICAgICAgY29kZUJsb2NrLT5maW5pc2hDcmVhdGlvbihkZWNvZGVyLnZtKCkpOwogICAgICAg
ICBCYXNlOjpkZWNvZGUoZGVjb2RlciwgKmNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybiBjb2Rl
QmxvY2s7CkBAIC0yMjQzLDcgKzIyNDMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVu
Y3Rpb25FeGVjdXRhCiAKIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0
CiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZGVjb2Rlci52
bSgpLmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShkZWNvZGVyLCAqdGhpcyk7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZGVjb2Rlci52bSgpKSkg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoZGVjb2RlciwgKnRoaXMpOwogICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uKGRlY29kZXIudm0oKSk7CiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZQogICAgIH0KICAgICAK
ICAgICBDbG9uZWRBcmd1bWVudHMqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPENsb25lZEFyZ3VtZW50cz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPENsb25lZEFyZ3VtZW50cz4odm0pKQogICAgICAgICBDbG9uZWRBcmd1
bWVudHModm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNv
bGVPYmplY3QuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBDb25zb2xlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxD
b25zb2xlT2JqZWN0Pih2bS5oZWFwKSkgQ29uc29sZU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgQ29uc29sZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
Q29uc29sZU9iamVjdD4odm0pKSBDb25zb2xlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1
cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1
c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEN1c3RvbUdldHRlclNl
dHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0
dGVyIGN1c3RvbVNldHRlcikKICAgICB7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3Vz
dG9tR2V0dGVyU2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q3VzdG9tR2V0dGVy
U2V0dGVyPih2bS5oZWFwKSkgQ3VzdG9tR2V0dGVyU2V0dGVyKHZtLCB2bS5jdXN0b21HZXR0ZXJT
ZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCksIGN1c3RvbUdldHRlciwgY3VzdG9tU2V0dGVyKTsKKyAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXJTZXR0ZXI+KHZtKSkgQ3VzdG9tR2V0dGVyU2V0dGVy
KHZtLCB2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCksIGN1c3RvbUdldHRlciwg
Y3VzdG9tU2V0dGVyKTsKICAgICAgICAgY3VzdG9tR2V0dGVyU2V0dGVyLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBjdXN0b21HZXR0ZXJTZXR0ZXI7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcs
NyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
KiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIg
Y3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKICAgICB7
Ci0gICAgICAgIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyPih2bS5o
ZWFwKSkgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKHZtLCBjdXN0b21HZXR0ZXIsIGN1c3RvbVNl
dHRlciwgZG9tQXR0cmlidXRlKTsKKyAgICAgICAgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBj
dXN0b21HZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXI+KHZtKSkgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKHZtLCBjdXN0b21H
ZXR0ZXIsIGN1c3RvbVNldHRlciwgZG9tQXR0cmlidXRlKTsKICAgICAgICAgY3VzdG9tR2V0dGVy
U2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBjdXN0b21HZXR0ZXJT
ZXR0ZXI7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNCw3ICszNCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBEYXRlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlLCBHZXR0ZXJT
ZXR0ZXIqKQogICAgIHsKLSAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIERhdGVD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4odm0p
KSBEYXRlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgZGF0ZVByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5z
dGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDE0ICs0MiwxNCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgZG91YmxlIGRhdGUpCiAgICAgewotICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPih2bS5oZWFwKSkg
RGF0ZUluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPih2bSkpIERhdGVJ
bnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KHZtLCBkYXRlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgRGF0ZUluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERhdGVJbnN0YW5jZT4odm0uaGVhcCkpIERhdGVJbnN0YW5jZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgRGF0ZUluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERhdGVJbnN0YW5jZT4odm0pKSBEYXRlSW5zdGFuY2Uodm0sIHN0cnVjdHVyZSk7CiAg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
RGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0
ZVByb3RvdHlwZT4odm0uaGVhcCkpIERhdGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIERhdGVQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PERhdGVQcm90b3R5cGU+KHZtKSkgRGF0ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgRGlyZWN0QXJndW1lbnRzKiBEaXJlY3RBcmd1bWVudHM6
OmNyZWF0ZQogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgY2FwYWNpdHkpCiB7CiAgICAgRGlyZWN0QXJndW1lbnRzKiByZXN1bHQgPQot
ICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RBcmd1bWVudHM+KHZtLmhl
YXAsIGFsbG9jYXRpb25TaXplKGNhcGFjaXR5KSkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPERpcmVjdEFyZ3VtZW50cz4odm0sIGFsbG9jYXRpb25TaXplKGNhcGFjaXR5KSkp
CiAgICAgICAgIERpcmVjdEFyZ3VtZW50cyh2bSwgc3RydWN0dXJlLCBsZW5ndGgsIGNhcGFjaXR5
KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcg
KzQ1LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3Qo
KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtKSkgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCks
IGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVycm9yQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlw
ZSogZXJyb3JQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBFcnJvckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9y
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KHZtKSkgRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclBy
b3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVycm9ySW5z
dGFuY2UqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTVmFsdWUgY2F1c2UsIFNv
dXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVO
b3RoaW5nLCBFcnJvclR5cGUgZXJyb3JUeXBlID0gRXJyb3JUeXBlOjpFcnJvciwgYm9vbCB1c2VD
dXJyZW50RnJhbWUgPSB0cnVlKQogICAgIHsKLSAgICAgICAgRXJyb3JJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPih2bS5oZWFwKSkg
RXJyb3JJbnN0YW5jZSh2bSwgc3RydWN0dXJlLCBlcnJvclR5cGUpOworICAgICAgICBFcnJvcklu
c3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFu
Y2U+KHZtKSkgRXJyb3JJbnN0YW5jZSh2bSwgc3RydWN0dXJlLCBlcnJvclR5cGUpOwogICAgICAg
ICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgY2F1
c2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEVycm9yUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJvclByb3Rv
dHlwZT4odm0uaGVhcCkpIEVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBF
cnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJy
b3JQcm90b3R5cGU+KHZtKSkgRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAg
IHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sICJFcnJvciJfcyk7CiAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IGNvbnN0IENsYXNzSW5mbyBFeGNlcHRpb246OnNfaW5mbyA9IHsgIkUKIAogRXhjZXB0aW9uKiBF
eGNlcHRpb246OmNyZWF0ZShWTSYgdm0sIEpTVmFsdWUgdGhyb3duVmFsdWUsIFN0YWNrQ2FwdHVy
ZUFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgRXhjZXB0aW9uKiByZXN1bHQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFeGNlcHRpb24+KHZtLmhlYXApKSBFeGNlcHRpb24odm0pOworICAgIEV4
Y2VwdGlvbiogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXhjZXB0aW9uPih2
bSkpIEV4Y2VwdGlvbih2bSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgdGhyb3du
VmFsdWUsIGFjdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAg
ICB7Ci0gICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvcj4odm0pKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7
CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGU+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlPih2bSkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgewotICAg
ICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBGdW5jdGlvbkNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KHZt
KSkgRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBmdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2
bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJs
ZSwgaW50cmluc2ljLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOworICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlu
a2VkRXhlY3V0YWJsZSwgaW50cmluc2ljLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogICAg
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlKTsK
ICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzAsNyArMzAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRnVuY3Rp
b25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgRnVuY3Rpb25Qcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblByb3RvdHlwZT4odm0pKSBGdW5jdGlv
blByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBj
b25zdCBDbGFzc0luZm8gRnVuY3Rpb25SYXJlRGF0YTo6c19pbmZvCiAKIEZ1bmN0aW9uUmFyZURh
dGEqIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZShWTSYgdm0sIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKQogewotICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25SYXJlRGF0YT4odm0uaGVhcCkpIEZ1bmN0aW9uUmFyZURh
dGEodm0sIGV4ZWN1dGFibGUpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25SYXJlRGF0YT4odm0pKSBGdW5jdGlvblJh
cmVEYXRhKHZtLCBleGVjdXRhYmxlKTsKICAgICByYXJlRGF0YS0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiByYXJlRGF0YTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQ0LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgewotICAgICAgICBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJv
dG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bSkpIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtKSkgR2VuZXJhdG9y
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEdldHRlclNl
dHRlciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlcikKICAgICB7Ci0gICAgICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVy
Pih2bS5oZWFwKSkgR2V0dGVyU2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVy
KTsKKyAgICAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+KHZtKSkgR2V0dGVyU2V0dGVyKHZtLCBnbG9iYWxPYmpl
Y3QsIGdldHRlciwgc2V0dGVyKTsKICAgICAgICAgZ2V0dGVyU2V0dGVyLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBIYXNoTWFwQnVj
a2V0KiBjcmVhdGUoVk0mIHZtKQogICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldCogYnVja2V0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SGFzaE1hcEJ1Y2tldDxEYXRhPj4odm0uaGVh
cCkpIEhhc2hNYXBCdWNrZXQodm0sIHNlbGVjdFN0cnVjdHVyZSh2bSkpOworICAgICAgICBIYXNo
TWFwQnVja2V0KiBidWNrZXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxIYXNoTWFwQnVj
a2V0PERhdGE+Pih2bSkpIEhhc2hNYXBCdWNrZXQodm0sIHNlbGVjdFN0cnVjdHVyZSh2bSkpOwog
ICAgICAgICBidWNrZXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKCFidWNr
ZXQtPm5leHQoKSk7CiAgICAgICAgIEFTU0VSVCghYnVja2V0LT5wcmV2KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDcgKzQ3
LDcgQEAgaW5saW5lIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBl
eGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZT4odm0pKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlw
ZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCBJbnRlcm5hbEZ1bmN0aW9uKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhCiB7
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCBUeXBlSW5mbyhJbnRlcm5h
bEZ1bmN0aW9uVHlwZSwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3MgfCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSwgSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKTsKICAgICBnbG9iYWxP
YmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoZ2xvYmFs
T2JqZWN0LT52bSgpLCAiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3QiKTsKLSAgICBJbnRl
cm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGVy
bmFsRnVuY3Rpb24+KHZtLmhlYXApKSBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIG5h
dGl2ZUZ1bmN0aW9uKTsKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGVybmFsRnVuY3Rpb24+KHZtKSkgSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlLCBuYXRpdmVGdW5jdGlvbik7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtLCBsZW5ndGgsIG5hbWUsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0ZXhwciBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKIAogSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bSkpIEludGxDb2xsYXRvcih2bSwgc3RydWN0
dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5
IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw3ICs1OCw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcjoKIAogSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSkKIHsKLSAgICBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvckNvbnN0cnVj
dG9yPih2bSkpIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgY29sbGF0b3JQcm90b3R5cGUpOwogICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1NCw3IEBAIGNvbnN0IENsYXNz
SW5mbyBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OnMKIAogSW50bENvbGxhdG9yUHJvdG90eXBlKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bENvbGxhdG9yUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3JQcm90b3R5cGU+KHZtLmhl
YXApKSBJbnRsQ29sbGF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgSW50bENvbGxh
dG9yUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29s
bGF0b3JQcm90b3R5cGU+KHZtKSkgSW50bENvbGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcg
KzY4LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogSW50bERh
dGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bERh
dGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9y
bWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bSkp
IEludGxEYXRlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NCw3ICs1NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHIKIAogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSkKIHsKLSAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bSkpIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2Myw3IEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3QKIAogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlPih2bSkpIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lczo6
c19pbmZvCiAKIEludGxEaXNwbGF5TmFtZXMqIEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXM+KHZtLmhlYXApKSBJbnRsRGlzcGxh
eU5hbWVzKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXM+KHZtKSkgSW50bERpc3BsYXlOYW1lcyh2bSwg
c3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4g
b2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1YwogCiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iq
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlw
ZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcj4odm0pKSBJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUpOwogICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MSw3ICs1MSw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXAKIAogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSog
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0pKSBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFVMaXN0Rm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3Io
KShVCiAKIEludGxMaXN0Rm9ybWF0KiBJbnRsTGlzdEZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bExpc3RGb3JtYXQ+KHZtLmhlYXApKSBJbnRsTGlzdEZvcm1hdCh2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsTGlzdEZvcm1hdD4odm0pKSBJbnRsTGlzdEZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExp
c3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxMaXN0Rm9ybWF0Q29uc3Ry
dWN0bwogCiBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yKiBJbnRsTGlzdEZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bExpc3RGb3JtYXRQ
cm90b3R5cGUqIGxpc3RGb3JtYXRQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yPih2
bS5oZWFwKSkgSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxMaXN0Rm9y
bWF0Q29uc3RydWN0b3I+KHZtKSkgSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGxpc3RGb3JtYXRQcm90
b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw3ICs1Myw3IEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZToKIAogSW50bExpc3RGb3JtYXRQ
cm90b3R5cGUqIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsTGlzdEZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkpIEludGxMaXN0Rm9ybWF0
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxMaXN0Rm9ybWF0UHJvdG90eXBlPih2bSkpIEludGxMaXN0Rm9y
bWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogSW50
bExvY2FsZSogSW50bExvY2FsZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExv
Y2FsZT4odm0uaGVhcCkpIEludGxMb2NhbGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExvY2FsZT4odm0pKSBJbnRsTG9j
YWxlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTG9jYWxl
Q29uc3RydWN0b3I6OnMKIAogSW50bExvY2FsZUNvbnN0cnVjdG9yKiBJbnRsTG9jYWxlQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTG9jYWxlUHJv
dG90eXBlKiBsb2NhbGVQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJ
bnRsTG9jYWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlQ29uc3RydWN0b3I+KHZt
KSkgSW50bExvY2FsZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgbG9jYWxlUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3Ry
dWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04Nyw3ICs4OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2kK
IAogSW50bExvY2FsZVByb3RvdHlwZSogSW50bExvY2FsZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bExvY2FsZVByb3RvdHlwZT4odm0uaGVhcCkpIEludGxMb2Nh
bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bExvY2FsZVByb3RvdHlwZT4odm0pKSBJbnRsTG9jYWxlUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CiAK
IEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtKSkgSW50bE51
bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fn
b25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0
LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1YwogCiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSkKIHsKLSAgICBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I+KHZtKSkgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbnVtYmVyRm9ybWF0UHJvdG90
eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53
YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjEsNyArNjEsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdFByb3RvdHlwCiAK
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewotICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXAp
KSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5k
eUB2YW53YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykgMjAxNSBTdWtvbHNhayBTYWtz
aHV3b25nIChzdWtvbHNha0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTIyOSw3ICsyMjksNyBAQCBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
CiAKIEludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEludGxPYmplY3Qq
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXAp
KSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtKSkgSW50bE9iamVjdCh2bSwg
c3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgVUVudW1lcmF0aW9uRGVsZXRlciA9IElDVURl
bGV0ZXI8dQogCiBJbnRsUGx1cmFsUnVsZXMqIEludGxQbHVyYWxSdWxlczo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bFBsdXJhbFJ1bGVzKiBmb3JtYXQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXM+KHZtLmhlYXApKSBJ
bnRsUGx1cmFsUnVsZXModm0sIHN0cnVjdHVyZSk7CisgICAgSW50bFBsdXJhbFJ1bGVzKiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXM+KHZtKSkgSW50
bFBsdXJhbFJ1bGVzKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiBmb3JtYXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdAogCiBJbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3RvciogSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBs
dXJhbFJ1bGVzUHJvdG90eXBlKQogewotICAgIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I+KHZtKSkg
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwbHVyYWxSdWxlc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0IENsYXNz
SW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUKIAogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
KiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOworICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlPih2bSkpIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRJbnRlcm5hbAog
CiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBmb3JtYXQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBmb3JtYXQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bSkp
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CiAgICAgZm9ybWF0LT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUzLDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDbwogCiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0pKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcgogCiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkg
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlPih2bSkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9i
amVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDAsNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRJdGVyYXRvcjo6c19pCiAK
IEludGxTZWdtZW50SXRlcmF0b3IqIEludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVC
cmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiBidWZm
ZXIsIEpTU3RyaW5nKiBzdHJpbmcsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFy
aXR5KQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxTZWdtZW50SXRlcmF0b3I+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0eSk7
CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21l
bnRJdGVyYXRvcj4odm0pKSBJbnRsU2VnbWVudEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0eSk7CiAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxTZWdtZW50
SXRlcmF0b3JQcm90bwogCiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKiBJbnRsU2VnbWVu
dEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2Vn
bWVudEl0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEludGxTZWdtZW50
SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOCw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyOjpzX2lu
Zm8gPSAKIAogSW50bFNlZ21lbnRlciogSW50bFNlZ21lbnRlcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRlcj4odm0uaGVhcCkpIEludGxTZWdtZW50ZXIodm0sIHN0
cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bFNlZ21lbnRlcj4odm0pKSBJbnRsU2VnbWVudGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yCiAK
IEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvciogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bFNlZ21lbnRlclByb3RvdHlwZSog
c2VnbWVudGVyUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRlckNvbnN0cnVjdG9y
Pih2bSkpIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CiAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxT
ZWdtZW50ZXJQcm90b3R5cGU6OgogCiBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBJbnRsU2VnbWVu
dGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAg
ICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudGVy
UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2Vn
bWVudGVyUHJvdG90eXBlPih2bSkpIEludGxTZWdtZW50ZXJQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRz
LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDEsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSW50bFNlZ21lbnRzOjpzX2luZm8gPSB7CiAKIEludGxTZWdtZW50cyogSW50bFNlZ21lbnRz
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVC
cmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVj
dG9yPFVDaGFyPj4mJiBidWZmZXIsIEpTU3RyaW5nKiBzdHJpbmcsIEludGxTZWdtZW50ZXI6Okdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50cz4odm0uaGVhcCkpIEludGxTZWdtZW50cyh2bSwg
c3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRlciksIFdURk1vdmUoYnVmZmVyKSwgZ3JhbnVsYXJp
dHkpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxT
ZWdtZW50cz4odm0pKSBJbnRsU2VnbWVudHModm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzZWdtZW50
ZXIpLCBXVEZNb3ZlKGJ1ZmZlciksIGdyYW51bGFyaXR5KTsKICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBzdHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBj
b25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJvdG90eXBlOjpzCiAKIEludGxTZWdtZW50c1By
b3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsU2VnbWVudHNQcm90b3R5cGU+
KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0
byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzUHJvdG90
eXBlPih2bSkpIEludGxTZWdtZW50c1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9y
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBJdGVyYXRvclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEl0ZXJhdG9yUHJvdG90eXBlPih2bSkpIEl0
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMjg2LDcgKzI4Niw3IEBAIGlubGluZSBKU0FycmF5KiBKU0FycmF5OjpjcmVh
dGUoVk0mIHZtLCAKIAogaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJm
bHkoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7Ci0gICAgSlNBcnJheSogYXJyYXkg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5Pih2bS5oZWFwLCBkZWZlcnJhbENv
bnRleHQpKSBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgSlNBcnJheSog
YXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5Pih2bSwgZGVmZXJyYWxD
b250ZXh0KSkgSlNBcnJheSh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIGFycmF5LT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBKU0FycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPQot
ICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5QnVmZmVyPih2bS5oZWFw
KSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJheUJ1ZmZlcj4odm0p
KQogICAgICAgICBKU0FycmF5QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogcHJvdG90eXBlLCBH
ZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpCiAgICAgewogICAgICAgICBKU0dlbmVyaWNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yKiByZXN1bHQgPQotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpT
R2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yPih2bSkpIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSwgc3BlY2llc1N5
bWJvbCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgyLDcgKzI4Miw3
IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXQKIEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGUqIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKQogewogICAgIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUq
IHByb3RvdHlwZSA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXlC
dWZmZXJQcm90b3R5cGU+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0FycmF5QnVmZmVyUHJvdG90eXBlPih2bSkpCiAgICAgICAgIEpTQXJyYXlCdWZmZXJQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBzaGFyaW5nTW9kZSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNBcnJheUl0ZXJhdG9yOjpzX2luZm8gCiBKU0FycmF5SXRlcmF0b3IqIEpT
QXJyYXlJdGVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKQogewogICAgIEFTU0VSVChraW5kLmFz
VUludDMyKCkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMp
KTsKLSAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNBcnJheUl0ZXJhdG9yPih2bS5oZWFwKSkgSlNBcnJheUl0ZXJhdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0FycmF5SXRlcmF0b3I+KHZtKSkgSlNBcnJheUl0ZXJhdG9yKHZtLCBzdHJ1
Y3R1cmUpOwogICAgIGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgaXRlcmF0b3It
PmludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5zZXQodm0sIGl0ZXJhdG9yLCBp
dGVyYXRlZE9iamVjdCk7CiAgICAgaXRlcmF0b3ItPmludGVybmFsRmllbGQoRmllbGQ6OktpbmQp
LnNldCh2bSwgaXRlcmF0b3IsIGtpbmQpOwpAQCAtNDUsNyArNDUsNyBAQCBKU0FycmF5SXRlcmF0
b3IqIEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlCiAKIEpTQXJyYXlJdGVyYXRvciogSlNBcnJheUl0
ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0FycmF5SXRlcmF0b3I+KHZtLmhlYXApKSBKU0FycmF5SXRlcmF0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXJyYXlJdGVyYXRvcj4odm0pKSBKU0FycmF5SXRlcmF0b3Iodm0s
IHN0cnVjdHVyZSk7CiAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1
cm4gaXRlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxj
YWl0cEBpZ2FsaWEuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcg
KzQyLDcgQEAgSlNBc3luY0Z1bmN0aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLAogCiBKU0Fz
eW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CisgICAgSlNBc3luY0Z1bmN0aW9u
KiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBc3luY0Z1bmN0
aW9uPih2bSkpIEpTQXN5bmNGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVy
ZSk7CiAgICAgQVNTRVJUKGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVj
dCgpKTsKICAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJu
IGFzeW5jRnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNHZW5lcmF0b3I6OnNfaW5m
bwogCiBKU0FzeW5jR2VuZXJhdG9yKiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0FzeW5jR2VuZXJhdG9yKiBnZW5lcmF0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2VuZXJhdG9yPih2bS5oZWFwKSkg
SlNBc3luY0dlbmVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICBKU0FzeW5jR2VuZXJhdG9yKiBn
ZW5lcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2VuZXJhdG9yPih2
bSkpIEpTQXN5bmNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgZ2VuZXJhdG9yLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgT2xla3NhbmRyIFNrYWNoa292IDxn
c2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQyLDcgQEAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpKU0FzeW5jR2VuZXJhdAogCiBK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
SW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2Nv
cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biogYXN5bmNHZW5lcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biogYXN5bmNHZW5lcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24+KHZtKSkgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoYXN5bmNHZW5lcmF0b3ItPnN0cnVj
dHVyZSh2bSktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhc3luY0dlbmVyYXRvci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBhc3luY0dlbmVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI1LDcgKzEyNSw3IEBAIGlubGluZSBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW4KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgSlNCaWdJ
bnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFw
KSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxEaWdpdCo+KGRhdGEpLCBsZW5ndGgpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0pKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50
U3RydWN0dXJlLmdldCgpLCByZWludGVycHJldF9jYXN0PERpZ2l0Kj4oZGF0YSksIGxlbmd0aCk7
CiAgICAgYmlnSW50LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBA
IEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0Qm91bmRGdW5jdGlvbihpc0pTRnVuY3Rpb24sIGNh
bkNvbnN0cnVjdCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRCb3VuZEZ1bmN0aW9u
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0
aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1bmN0aW9uPih2bS5oZWFw
KSkgSlNCb3VuZEZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRBcmdzLCBuYW1lTWF5QmVOdWxsLCBs
ZW5ndGgpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgSlNCb3VuZEZ1bmN0aW9uKHZtLCBleGVj
dXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhp
cywgYm91bmRBcmdzLCBuYW1lTWF5QmVOdWxsLCBsZW5ndGgpOwogCiAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQ2FsbGVlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSkKICAgICB7Ci0g
ICAgICAgIEpTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Nh
bGxlZT4odm0uaGVhcCkpIEpTQ2FsbGVlKHZtLCBzY29wZSwgZ2xvYmFsT2JqZWN0LT5jYWxsZWVT
dHJ1Y3R1cmUoKSk7CisgICAgICAgIEpTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0NhbGxlZT4odm0pKSBKU0NhbGxlZSh2bSwgc2NvcGUsIGdsb2JhbE9iamVj
dC0+Y2FsbGVlU3RydWN0dXJlKCkpOwogICAgICAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIGNhbGxlZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBA
QCBlbnVtIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0QXJnUHJlc2Vuc2UgCiAgICAgRG9lc05vdEhh
dmVBcmcKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFw
Jiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIHRyeUFs
bG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3Qg
PSBzaXplb2YoVCkpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxs
KEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCA9IHNpemVvZihUKSk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoVk0mLCBzaXplX3QgPSBzaXplb2YoVCkp
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxsKFZNJiwgc2l6ZV90
ID0gc2l6ZW9mKFQpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChW
TSYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQqIHRyeUFsbG9jYXRlQ2VsbChWTSYsIEdDRGVmZXJyYWxDb250ZXh0Kiwg
c2l6ZV90ID0gc2l6ZW9mKFQpKTsKIAogI2RlZmluZSBERUNMQVJFX0VYUE9SVF9JTkZPICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgcHJvdGVj
dGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDI3ICsxODksMjcg
QEAgQUxXQVlTX0lOTElORSB2b2lkKiB0cnlBbGxvY2F0ZUNlbGxIZWxwZQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXAsIHNpemVfdCBzaXpl
KQordm9pZCogYWxsb2NhdGVDZWxsKFZNJiB2bSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJu
IHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxUPihoZWFwLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OkFzc2VydCk7CisgICAgcmV0dXJuIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxU
Pih2bS5oZWFwLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiB0cnlBbGxvY2F0ZUNlbGwoSGVhcCYg
aGVhcCwgc2l6ZV90IHNpemUpCit2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoVk0mIHZtLCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgcmV0dXJu
IHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxUPih2bS5oZWFwLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJh
bENvbnRleHQsIHNpemVfdCBzaXplKQordm9pZCogYWxsb2NhdGVDZWxsKFZNJiB2bSwgR0NEZWZl
cnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJu
IHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxUPihoZWFwLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxs
SGVscGVyPFQ+KHZtLmhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpBc3NlcnQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogdHJ5QWxs
b2NhdGVDZWxsKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQs
IHNpemVfdCBzaXplKQordm9pZCogdHJ5QWxsb2NhdGVDZWxsKFZNJiB2bSwgR0NEZWZlcnJhbENv
bnRleHQqIGRlZmVycmFsQ29udGV4dCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHRyeUFs
bG9jYXRlQ2VsbEhlbHBlcjxUPihoZWFwLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgcmV0dXJuIHRyeUFsbG9jYXRlQ2VsbEhl
bHBlcjxUPih2bS5oZWFwLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9t
R2V0dGVyRnUKICAgICBBU1NFUlQoZ2V0dGVyKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbUdldHRlckZ1bmN0aW9uQ2FsbCwgY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdl
dHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9u
Pih2bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1dGUpOwor
ICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4odm0pKSBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBnZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7CiAKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBp
bml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9j
YXRpb24uCiAgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZygiZ2V0ICIsIHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24q
IEpTQ3VzdG9tU2V0dGVyRnUKICAgICBBU1NFUlQoc2V0dGVyKTsKICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbVNldHRlckZ1bmN0aW9u
Q2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qt
PmN1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2V0dGVyKTsKKyAgICBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtKSkgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2V0
dGVyKTsKIAogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1
c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KICAgICBhdXRvIG5h
bWUgPSBtYWtlU3RyaW5nKCJzZXQgIiwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgSlNEYXRhVmlldyogSlNEYXRhVmll
dzo6Y3JlYXRlKAogICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlci5jb3B5UmVmKCksIGJ5dGVPZmZz
ZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsKICAgICBBU1NF
UlQoY29udGV4dCk7CiAgICAgSlNEYXRhVmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlldz4odm0uaGVhcCkpIEpTRGF0YVZpZXcodm0sIGNv
bnRleHQsIGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTRGF0YVZpZXc+KHZtKSkgSlNEYXRhVmlldyh2bSwgY29udGV4dCwgYnVmZmVyLmdldCgpKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
NyArMTA2LDcgQEAgSlNEYXRhVmlld1Byb3RvdHlwZTo6SlNEYXRhVmlld1Byb3RvdHlwZQogSlNE
YXRhVmlld1Byb3RvdHlwZSogSlNEYXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZSogcHJvdG90eXBl
ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlld1Byb3RvdHlw
ZT4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRGF0YVZp
ZXdQcm90b3R5cGU+KHZtKSkKICAgICAgICAgSlNEYXRhVmlld1Byb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJv
dG90eXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRp
b25SZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFN0cnVjdHVyZSogSlNGaW5hbGl6YXRpb25SZWdp
c3RyeTo6Y3JlYXQKIAogSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogSlNGaW5hbGl6YXRpb25SZWdp
c3RyeTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBjYWxs
YmFjaykKIHsKLSAgICBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KHZtLmhlYXApKSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTRmluYWxpemF0aW9uUmVn
aXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRp
b25SZWdpc3RyeT4odm0pKSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSwgY2FsbGJhY2spOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODksNyArODksNyBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0m
IHZtLCBKCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RG
dW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlLCBuYW1lKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
aG9zdEZ1bmN0aW9uU3RydWN0dXJlKCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0pKSBK
U0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAg
Ly8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVu
Y3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bSkpIEpTRnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0
cnVjdHVyZSh2bSktPmdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvcjo6c19p
bmZvID0geyAKIAogSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU0dlbmVyYXRvciogZ2VuZXJhdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3I+KHZtLmhlYXApKSBKU0dlbmVyYXRvcih2
bSwgc3RydWN0dXJlKTsKKyAgICBKU0dlbmVyYXRvciogZ2VuZXJhdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3I+KHZtKSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVy
ZSk7CiAgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDcgKzQyLDcgQEAgSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlv
bgogCiBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBs
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJh
dG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0
aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IHN0cnVjdHVyZSk7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bSkpIEpT
R2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOwogICAg
IEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkp
OwogICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvckZ1bmN0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtNjAsNyArNjAsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
PFZpZXdDCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I+KHZtLmhlYXApKQorICAg
ICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yPih2bSkpCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIG5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtKSkKICAgICAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOwogICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC03MSw3ICs3MSw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmUKICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiAgICAgUkVMRUFTRV9BU1NF
UlQoY29udGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAg
ICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2
bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc+KHZtKSkKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNv
bnRleHQpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC05MCw3ICs5MCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bSkpCiAgICAgICAgIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE2LDcgKzExNiw3IEBAIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmUKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
cmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0pKQogICAgICAgICBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldyh2bSwgY29udGV4dCk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lCiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZt
LCBzdHJ1Y3R1cmUsIGltcGwtPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCksIGltcGwtPmJ5dGVPZmZz
ZXQoKSwgaW1wbC0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZtLmhlYXApKQorICAgICAgICBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0pKQogICAgICAg
ICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7CiAgICAgcmVzdWx0LT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDcgKzUzLDcgQEAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGU8Vmlld0NsYQogICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUqIHByb3RvdHlwZSA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlPih2bS5oZWFwKSkK
KyAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGU+KHZtKSkKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gcHJvdG90eXBlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50U2NvcGUpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogcmVzdWx0ID0KLSAgICAg
ICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50Pih2bS5oZWFwKSkgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwg
cGFyZW50U2NvcGUpOworICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KHZtKSkgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQo
dm0sIHN0cnVjdHVyZSwgcGFyZW50U2NvcGUpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgcmVzdWx0LT5zeW1ib2xUYWJsZSgpLT5zZXRTY29wZVR5cGUoU3lt
Ym9sVGFibGU6OlNjb3BlVHlwZTo6R2xvYmFsTGV4aWNhbFNjb3BlKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwNCwxNCAr
MjYwNCwxNCBAQCBXYXRjaHBvaW50U2V0JiBKU0dsb2JhbE9iamVjdDo6ZW5zdXJlUmVmCiAKIEpT
R2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bSkpIEpTR2xvYmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiB9CiAKIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSkKIHsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KHZtLmhlYXApKSBKU0dsb2JhbE9iamVjdCh2bSwgc3RydWN0
dXJlLCBtZXRob2RUYWJsZSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bSkpIEpTR2xvYmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxlKTsKICAgICBnbG9iYWxPYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5o
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lt
bXV0YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIC8vIEJlY2F1c2Ugb2Yg
dGhlIGFib3ZlIG1heGltdW1MZW5ndGggcmVxdWlyZW1lbnQsIGFsbG9jYXRpb25TaXplIGNhbiBu
ZXZlciBvdmVyZmxvdy4KLSAgICAgICAgdm9pZCogYnVmZmVyID0gdHJ5QWxsb2NhdGVDZWxsPEpT
SW1tdXRhYmxlQnV0dGVyZmx5Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKTsKKyAg
ICAgICAgdm9pZCogYnVmZmVyID0gdHJ5QWxsb2NhdGVDZWxsPEpTSW1tdXRhYmxlQnV0dGVyZmx5
Pih2bSwgYWxsb2NhdGlvblNpemUobGVuZ3RoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghYnVm
ZmVyKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBidWZmZXIpIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5KHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTSW50ZXJu
YWxQcm9taXNlOjpzX2luZgogCiBKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFByb21pc2U6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTSW50ZXJuYWxQ
cm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFBy
b21pc2U+KHZtLmhlYXApKSBKU0ludGVybmFsUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBK
U0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
SW50ZXJuYWxQcm9taXNlPih2bSkpIEpTSW50ZXJuYWxQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIHByb21pc2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvbWlzZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00OSw3ICs0OSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IqIEpTSW50ZXJuYWwKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBwcm9taXNlQ29uc3RydWN0b3JJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvckNvZGVH
ZW5lcmF0b3Iodm0pOwotICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iodm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3I+KHZtKSkgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgcHJvbWlzZVByb3RvdHlwZSwgc3BlY2llc1N5bWJvbCk7CiAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eQogCiBKU0ludGVybmFsUHJvbWlz
ZVByb3RvdHlwZSogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTSW50ZXJuYWxQ
cm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTSW50ZXJuYWxQcm9taXNlUHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ludGVybmFsUHJv
bWlzZVByb3RvdHlwZT4odm0pKSBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogcmVzdWx0ID0gCiAgICAgICAgICAgICBuZXcgKAogICAgICAgICAgICAgICAgIE5v
dE51bGwsCi0gICAgICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTTGV4aWNhbEVudmlyb25tZW50
Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICAgICAgICAg
IGFsbG9jYXRlQ2VsbDxKU0xleGljYWxFbnZpcm9ubWVudD4odm0sIGFsbG9jYXRpb25TaXplKHN5
bWJvbFRhYmxlKSkpCiAgICAgICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCh2bSwgc3RydWN0
dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNCw3ICszNCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU01hcDo6c19pbmZvID0geyAi
TWFwIiwKIAogSlNNYXAqIEpTTWFwOjpjbG9uZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTTWFwKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwPih2bS5oZWFwKSkgSlNNYXAodm0sIHN0
cnVjdHVyZSk7CisgICAgSlNNYXAqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNNYXA+KHZtKSkgSlNNYXAodm0sIHN0cnVjdHVyZSk7CiAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIHRoaXMpOwogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNNYXAqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgSlNNYXAqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNNYXA+KHZtLmhlYXApKSBKU01hcCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNNYXAqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNYXA+KHZtKSkg
SlNNYXAodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QsIHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCShy
ZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNNYXBJdGVyYXRvcjo6c19pbmZvID0gCiAKIEpTTWFwSXRlcmF0b3IqIEpTTWFwSXRlcmF0
b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7Ci0gICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU01hcEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTTWFwSXRlcmF0b3I+KHZtKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBpdGVyYXRvcjsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFw
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgSlNNYXBJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTTWFwKiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAg
ICAgICAgSlNNYXBJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU01hcEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNNYXBJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU01hcEl0ZXJhdG9yPih2bSkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CiAg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQp
OwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIEpTTW9kdWxlRW52
aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBy
ZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAg
IGFsbG9jYXRlQ2VsbDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBKU01vZHVsZUVudmly
b25tZW50OjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLCBKU01vZHVsZUVudmlyb25tZW50OjphbGxv
Y2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQogICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KHZt
LCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOwogICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKICAgICByZXR1cm4g
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgSlNNb2R1bGVMb2FkZXIqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNN
b2R1bGVMb2FkZXIqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxl
TG9hZGVyPih2bS5oZWFwKSkgSlNNb2R1bGVMb2FkZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IEpTTW9kdWxlTG9hZGVyKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01v
ZHVsZUxvYWRlcj4odm0pKSBKU01vZHVsZUxvYWRlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZtKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBBYnN0cmFjdE1vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
LCBWZWN0b3I8c3RkOjpwYWlyPElkZW50aWZpZXIsIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uPj4mJiByZXNvbHV0aW9ucykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4odm0uaGVh
cCkpIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KHZtKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qodm0s
IHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LCBtb2R1bGVSZWNvcmQsIFdURk1vdmUocmVzb2x1dGlvbnMpKTsKICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgU3RydWN0dXJlKiBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dQogCiBKU01v
ZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQogewotICAgIEpTTW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlUmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVS
ZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBkZWNsYXJlZFZhcmlh
YmxlcywgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtKSkgSlNNb2R1bGVS
ZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBkZWNsYXJlZFZhcmlh
YmxlcywgbGV4aWNhbFZhcmlhYmxlcyk7CiAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdCwgdm0pOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihydW5TdGRGdW5jdGlvbiwgaW50
cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlKCk7
Ci0gICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU05hdGl2ZVN0ZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNOYXRpdmVTdGRGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUobmF0aXZl
U3RkRnVuY3Rpb24pKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtKSkgSlNOYXRpdmVT
dGRGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1v
dmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0s
IGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNP
Tk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBKU09OT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU09O
T2JqZWN0Pih2bS5oZWFwKSkgSlNPTk9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNP
Tk9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4o
dm0pKSBKU09OT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOTAsMTAgKzEyOTAsNyBAQCBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6
Y3JlCiB7CiAgICAgSlNGaW5hbE9iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAogICAgICAgICBO
b3ROdWxsLAotICAgICAgICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oCi0gICAgICAgICAg
ICB2bS5oZWFwLAotICAgICAgICAgICAgYWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVD
YXBhY2l0eSgpKQotICAgICAgICApCisgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0
Pih2bSwgYWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKSkKICAgICAp
IEpTRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKICAgICBmaW5hbE9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmaW5hbE9iamVjdDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlOjpz
X2luZm8gPSB7ICJQCiAKIEpTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2U+KHZtLmhlYXApKSBKU1Byb21pc2Uodm0sIHN0cnVj
dHVyZSk7CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNQcm9taXNlPih2bSkpIEpTUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKICAgICBwcm9taXNl
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHByb21pc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNyArNTgs
NyBAQCBKU1Byb21pc2VDb25zdHJ1Y3RvciogSlNQcm9taXNlQ29uc3RydWN0CiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gcHJvbWlzZUNvbnN0cnVjdG9yUHJv
bWlzZUNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7Ci0gICAgSlNQcm9taXNlQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBKU1Byb21pc2VDb25zdHJ1Y3Rvcih2bSwgZXhlY3V0YWJsZSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZUNvbnN0cnVjdG9y
Pih2bSkpIEpTUHJvbWlzZUNvbnN0cnVjdG9yKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm9taXNl
UHJvdG90eXBlLCBzcGVjaWVzU3ltYm9sKTsKICAgICBjb25zdHJ1Y3Rvci0+YWRkT3duSW50ZXJu
YWxTbG90cyh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VQcm90b3R5cGU6OnNfaW4KIAogSlNQcm9taXNl
UHJvdG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTUHJvbWlz
ZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNl
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIEpTUHJvbWlzZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNQcm9taXNlUHJvdG90eXBlPih2bSkpIEpTUHJvbWlzZVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAg
IG9iamVjdC0+YWRkT3duSW50ZXJuYWxTbG90cyh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gb2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyW2ld
LmNsZWFyKCk7CiAgICAgfQotICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4o
dm0uaGVhcCkpIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSwgc3RydWN0dXJlLCBpbmRleGVk
TGVuZ3RoLCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzQnVmZmVyLCBw
cm9wZXJ0eU5hbWVzU2l6ZSk7CisgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJh
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Pih2bSkpIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSwgc3RydWN0dXJlLCBpbmRleGVkTGVu
Z3RoLCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzQnVmZmVyLCBwcm9w
ZXJ0eU5hbWVzU2l6ZSk7CiAgICAgZW51bWVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3Bl
cnR5TmFtZXMucmVsZWFzZURhdGEoKSk7CiAgICAgcmV0dXJuIGVudW1lcmF0b3I7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCiAgICAg
ewotICAgICAgICBKU1Byb3h5KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
UHJveHk+KHZtLmhlYXApKSBKU1Byb3h5KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Byb3h5
KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtKSkgSlNQcm94
eSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJveHktPmZpbmlzaENyZWF0aW9uKHZtLCB0YXJn
ZXQpOwogICAgICAgICByZXR1cm4gcHJveHk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJveHkq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNQ
cm94eSogcHJveHkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3h5Pih2bS5oZWFw
KSkgSlNQcm94eSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNQcm94eSogcHJveHkgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3h5Pih2bSkpIEpTUHJveHkodm0sIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBw
cm94eTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWY8U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMpCiAgICAgewotICAg
ICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NjcmlwdEZl
dGNoUGFyYW1ldGVycz4odm0uaGVhcCkpIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICBhdXRvKiByZXN1bHQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NjcmlwdEZldGNoUGFyYW1ldGVycz4odm0pKSBKU1Nj
cmlwdEZldGNoUGFyYW1ldGVycyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
ICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRG
ZXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y3JpcHRGZXRjaGVyLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTU2NyaXB0RmV0Y2hlciogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxTY3JpcHRGZXRjaGVyPiYmIHNjcmlw
dEZldGNoZXIpCiAgICAgewotICAgICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1NjcmlwdEZldGNoZXI+KHZtLmhlYXApKSBKU1NjcmlwdEZldGNoZXIodm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSk7CisgICAgICAgIGF1dG8qIHJlc3Vs
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2NyaXB0RmV0Y2hlcj4odm0pKSBKU1Nj
cmlwdEZldGNoZXIodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSk7CiAgICAg
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1NldDo6
c19pbmZvID0geyAiU2V0IiwKIAogSlNTZXQqIEpTU2V0OjpjbG9uZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEpTU2V0
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0Pih2bS5oZWFwKSkg
SlNTZXQodm0sIHN0cnVjdHVyZSk7CisgICAgSlNTZXQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNTZXQ+KHZtKSkgSlNTZXQodm0sIHN0cnVjdHVyZSk7CiAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0sIHRoaXMpOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU1NldCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IHNpemUpCiAgICAgewotICAgICAgICBKU1NldCog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldD4odm0uaGVhcCkpIEpT
U2V0KHZtLCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICBKU1NldCogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldD4odm0pKSBKU1NldCh2bSwgc3RydWN0dXJlLCBz
aXplKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCwgdm0p
OwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1NldEl0ZXJhdG9y
OjpzX2luZm8gPSAKIAogSlNTZXRJdGVyYXRvciogSlNTZXRJdGVyYXRvcjo6Y3JlYXRlV2l0aElu
aXRpYWxWYWx1ZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBKU1NldEl0
ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0
b3I+KHZtLmhlYXApKSBKU1NldEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpTU2V0SXRl
cmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVyYXRv
cj4odm0pKSBKU1NldEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGl0ZXJhdG9yLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuaAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1NldEl0
ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTZXQqIGl0ZXJh
dGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAgICAgICBKU1NldEl0ZXJh
dG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0b3I+
KHZtLmhlYXApKSBKU1NldEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1NldEl0
ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0
b3I+KHZtKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NvdXJjZUNvZGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTb3VyY2VDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTU291cmNlQ29kZSogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFNvdXJjZUNvZGUmJiBzb3VyY2VDb2RlKQogICAgIHsKLSAgICAg
ICAgYXV0byogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTb3VyY2VDb2Rl
Pih2bS5oZWFwKSkgSlNTb3VyY2VDb2RlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc291cmNlQ29k
ZSkpOworICAgICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1NvdXJjZUNvZGU+KHZtKSkgSlNTb3VyY2VDb2RlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc291
cmNlQ29kZSkpOwogICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
U3RydWN0dXJlKiBKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKFZNJgogCiBKU1N0cmluZyogSlNT
dHJpbmc6OmNyZWF0ZUVtcHR5U3RyaW5nKFZNJiB2bSkKIHsKLSAgICBKU1N0cmluZyogbmV3U3Ry
aW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0
cmluZyh2bSwgKlN0cmluZ0ltcGw6OmVtcHR5KCkpOworICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0pKSBKU1N0cmluZyh2bSwg
KlN0cmluZ0ltcGw6OmVtcHR5KCkpOwogICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9CkBAIC00MDAsNyArNDAwLDcgQEAgZG91YmxlIEpT
U3RyaW5nOjp0b051bWJlcihKU0dsb2JhbE9iamVjdAogCiBpbmxpbmUgU3RyaW5nT2JqZWN0KiBT
dHJpbmdPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KHZtLmhlYXApKSBTdHJpbmdPYmplY3Qo
dm0sIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOworICAgIFN0cmluZ09i
amVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2
bSkpIFN0cmluZ09iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUo
KSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKICAgICByZXR1cm4g
b2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTQgKzE2OCwxNCBAQCBwcml2YXRlOgogICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3RoKCk7CiAgICAgICAgIEFTU0VSVChs
ZW5ndGggPiAwKTsKICAgICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAg
ICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICBKU1N0
cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZt
KSkgSlNTdHJpbmcodm0sIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5p
c2hDcmVhdGlvbih2bSwgbGVuZ3RoLCBjb3N0KTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsK
ICAgICB9CiAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKFZNJiB2bSwg
UmVmPFN0cmluZ0ltcGw+JiYgdmFsdWUpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSB2YWx1ZS0+bGVuZ3RoKCk7Ci0gICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCBXVEZN
b3ZlKHZhbHVlKSk7CisgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0pKSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1ZSkp
OwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBsZW5ndGgpOwogICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KQEAgLTU1Nyw3ICs1NTcsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gb3BlcmF0aW9ucyBpbiBKUyBmYWlsIHRvIGhhbmRsZSB0aGlzIHN0cmluZyBjb3JyZWN0
bHkuCiAgICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlTnVsbEZvclRlc3RpbmcoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0pOwor
ICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTUm9wZVN0cmluZz4odm0pKSBKU1JvcGVTdHJpbmcodm0pOwogICAgICAgICBuZXdTdHJp
bmctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKCFuZXdTdHJpbmctPmxlbmd0
aCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwpAQCAtNTY4LDcgKzU2
OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRl
KFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCiAgICAgewotICAgICAgICBKU1Jv
cGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0
cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSwgczEsIHMyKTsKKyAgICAgICAgSlNSb3Bl
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJp
bmc+KHZtKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIpOwogICAgICAgICBuZXdTdHJpbmctPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+bGVuZ3RoKCkpOwog
ICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkBAIC01NzYsNyArNTc2LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAgICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlKFZNJiB2bSwg
SlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICB7Ci0gICAgICAg
IEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNS
b3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIsIHMzKTsKKyAgICAg
ICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1JvcGVTdHJpbmc+KHZtKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIsIHMzKTsKICAgICAgICAg
bmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJpbmct
Pmxlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwpAQCAtNTg1
LDcgKzU4NSw3IEBAIHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1JvcGVT
dHJpbmcqIGNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBKU1N0cmluZyogYmFzZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgewotICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCwgZGVmZXJyYWxD
b250ZXh0KSkgSlNSb3BlU3RyaW5nKHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAg
IEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNS
b3BlU3RyaW5nPih2bSwgZGVmZXJyYWxDb250ZXh0KSkgSlNSb3BlU3RyaW5nKHZtLCBiYXNlLCBv
ZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb25TdWJzdHJp
bmdPZlJlc29sdmVkKHZtKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+bGVuZ3RoKCkpOwog
ICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5oCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
U3RyaW5nSXRlcmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0
cmluZyogaXRlcmF0ZWRTdHJpbmcpCiAgICAgewotICAgICAgICBKU1N0cmluZ0l0ZXJhdG9yKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nSXRlcmF0b3I+KHZt
LmhlYXApKSBKU1N0cmluZ0l0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1N0cmlu
Z0l0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5n
SXRlcmF0b3I+KHZtKSkgSlNTdHJpbmdJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZFN0cmluZyk7CiAgICAgICAgIHJl
dHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OkpTVGVtcGxhdGVPYgogCiBKU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvciogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZShWTSYgdm0sIFJl
ZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+JiYgZGVzY3JpcHRvciwgaW50IGVuZE9mZnNldCkK
IHsKLSAgICBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciogcmVzdWx0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+KHZtLmhlYXApKSBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcih2bSwgV1RGTW92ZShkZXNjcmlwdG9yKSwgZW5kT2Zmc2V0
KTsKKyAgICBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciogcmVzdWx0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+KHZtKSkgSlNUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3Iodm0sIFdURk1vdmUoZGVzY3JpcHRvciksIGVuZE9mZnNldCk7CiAg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBwcm90
b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAgICB7Ci0gICAgICAgIEpTVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvcj4odm0pKSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBzcGVjaWVzU3ltYm9sKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5Miw3ICs0OTIsNyBAQCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlKiBKU1R5cGVkQXJyYXlWCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlKiBwcm90b3R5cGUgPQotICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlPih2bS5oZWFwKSkKKyAgICAgICAgbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZT4odm0pKQogICAgICAgICBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNXZWFr
TWFwKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEpTV2Vha01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtN
YXA+KHZtLmhlYXApKSBKU1dlYWtNYXAodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpTV2Vha01h
cCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtNYXA+KHZtKSkg
SlNXZWFrTWFwKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmgJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha09iamVjdFJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBK
U1dlYWtPYmplY3RSZWYqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09i
amVjdCogdGFyZ2V0KQogICAgIHsKLSAgICAgICAgSlNXZWFrT2JqZWN0UmVmKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha09iamVjdFJlZj4odm0uaGVhcCkpIEpT
V2Vha09iamVjdFJlZih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNXZWFrT2JqZWN0UmVmKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha09iamVjdFJlZj4odm0p
KSBKU1dlYWtPYmplY3RSZWYodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha1NldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha1NldC5oCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtTZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTV2Vh
a1NldCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBKU1dlYWtTZXQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFr
U2V0Pih2bS5oZWFwKSkgSlNXZWFrU2V0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1dlYWtT
ZXQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWFrU2V0Pih2bSkp
IEpTV2Vha1NldCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhTY29wZS5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBKU1dpdGhTY29wZSogSlNXaXRoU2NvcGU6OmNy
ZWF0ZSgKICAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUq
IG5leHQsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPndpdGhTY29wZVN0cnVjdHVyZSgpOwotICAgIEpTV2l0aFNjb3BlKiB3aXRo
U2NvcGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dpdGhTY29wZT4odm0uaGVhcCkp
IEpTV2l0aFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIG9iamVjdCwgbmV4dCk7CisgICAgSlNXaXRoU2Nv
cGUqIHdpdGhTY29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2l0aFNjb3BlPih2
bSkpIEpTV2l0aFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIG9iamVjdCwgbmV4dCk7CiAgICAgd2l0aFNj
b3BlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHdpdGhTY29wZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1h
cFByb3RvdHlwZSogbWFwUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpCiAg
ICAgewotICAgICAgICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxNYXBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIE1hcENvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBDb25zdHJ1Y3Rvcj4odm0pKSBNYXBDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBtYXBQcm90b3R5cGUsIHNwZWNpZXNTeW1ib2wpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTWFwSXRlcmF0b3JQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgTWFwSXRlcmF0b3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcEl0ZXJhdG9yUHJvdG90eXBlPih2
bS5oZWFwKSkgTWFwSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE1h
cEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNYXBJdGVyYXRvclByb3RvdHlwZT4odm0pKSBNYXBJdGVyYXRvclByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNYXBQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+KHZtLmhlYXApKSBNYXBQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE1hcFByb3RvdHlwZSogcHJvdG90eXBlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwUHJvdG90eXBlPih2bSkpIE1hcFByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAw
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIE1hdGhPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE1hdGhPYmplY3Q+KHZtLmhlYXApKSBNYXRoT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBNYXRoT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNYXRoT2JqZWN0Pih2bSkpIE1hdGhPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBv
YmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBNb2R1bGVQcm9ncmFtRXgKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4odm0uaGVhcCkpIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlPih2bSkpIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlKTsK
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogCiAg
ICAgUGFyc2VyRXJyb3IgZXJyb3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YgogcHVibGljOgogICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3RvdHlwZSwgZXJyb3JUeXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIHsKLSAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgTmF0
aXZlRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE5hdGl2ZUVycm9yUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJv
clByb3RvdHlwZT4odm0pKSBOYXRpdmVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CiAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzYsNyArMzYsNyBAQCBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6
c19pbmZvCiBOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZt
LCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBl
eGVjdXRhYmxlOwotICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxO
YXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwgZnVuY3Rpb24s
IGNvbnN0cnVjdG9yKTsKKyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8TmF0aXZlRXhlY3V0YWJsZT4odm0pKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBXVEZNb3Zl
KGNhbGxUaHVuayksIFdURk1vdmUoY29uc3RydWN0VGh1bmspLCBuYW1lKTsKICAgICByZXR1cm4g
ZXhlY3V0YWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxH
ZXR0ZXJGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Niw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTnVsbEdldHRlckZ1bmN0aW9uKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIC8vIFNpbmNl
IE51bGxHZXR0ZXJGdW5jdGlvbiBpcyBwZXIgSlNHbG9iYWxPYmplY3QsIHdlIHVzZSBwdXQtd2l0
aG91dC10cmFuc2l0aW9uIGluIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uLgotICAg
ICAgICBOdWxsR2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8IE51bGxHZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpICBOdWxsR2V0dGVyRnVuY3Rpb24o
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIE51bGxHZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDwgTnVsbEdldHRlckZ1bmN0aW9uPih2bSkpICBOdWxs
R2V0dGVyRnVuY3Rpb24odm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hD
cmVhdGlvbih2bSwgMCwgU3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbFNldHRlckZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgTnVsbFNldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgewotICAgICAgICBOdWxsU2V0
dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVsbFNl
dHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgIE51bGxTZXR0ZXJGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBlY21hTW9kZSk7CisgICAgICAgIE51bGxTZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdWxsU2V0dGVyRnVuY3Rpb24+KHZtKSkgIE51bGxTZXR0
ZXJGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBlY21hTW9kZSk7CiAgICAgICAgIGZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbih2bSwgMCwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gZnVuY3Rpb247
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNSw3ICszNSw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlLCBH
ZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAgICAgICAgTnVtYmVyQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBOdW1iZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTnVtYmVyQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVy
Q29uc3RydWN0b3I+KHZtKSkgTnVtYmVyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlKTsKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBOdW1iZXJPYmplY3QqIG51bWJl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlck9iamVjdD4odm0uaGVhcCkpIE51
bWJlck9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KHZtKSkgTnVtYmVyT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBudW1iZXItPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgcmV0dXJuIG51bWJlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE51bWJlclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBOdW1iZXJQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJlclByb3RvdHlwZT4odm0uaGVhcCkpIE51bWJl
clByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KHZtKSkg
TnVtYmVyUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgT2JqZWN0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmplY3RQ
cm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIE9iamVjdENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0
cnVjdG9yPih2bS5oZWFwKSkgT2JqZWN0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIE9iamVjdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPE9iamVjdENvbnN0cnVjdG9yPih2bSkpIE9iamVjdENvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCwgb2JqZWN0UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAKIE9iamVjdFByb3Rv
dHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBPYmplY3RQcm90b3R5cGUq
IHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3RvdHlwZT4o
dm0uaGVhcCkpIE9iamVjdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBPYmplY3RQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3Rv
dHlwZT4odm0pKSBPYmplY3RQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gcHJvdG90eXBl
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgewog
ICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBQcm9ncmFtRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dyYW1F
eGVjdXRhYmxlPih2bS5oZWFwKSkgUHJvZ3JhbUV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UpOworICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFByb2dyYW1FeGVjdXRhYmxlPih2bSkpIFByb2dyYW1FeGVjdXRhYmxl
KGdsb2JhbE9iamVjdCwgc291cmNlKTsKICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDIxICszNiwyMSBAQCBjb25zdCBDbGFzc0luZm8gUHJv
cGVydHlUYWJsZTo6c19pbmZvID0gCiAKIFByb3BlcnR5VGFibGUqIFByb3BlcnR5VGFibGU6OmNy
ZWF0ZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSkKIHsKLSAgICBQcm9wZXJ0eVRh
YmxlKiB0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZt
LmhlYXApKSBQcm9wZXJ0eVRhYmxlKHZtLCBpbml0aWFsQ2FwYWNpdHkpOworICAgIFByb3BlcnR5
VGFibGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvcGVydHlUYWJsZT4o
dm0pKSBQcm9wZXJ0eVRhYmxlKHZtLCBpbml0aWFsQ2FwYWNpdHkpOwogICAgIHRhYmxlLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHRhYmxlOwogfQogCiBQcm9wZXJ0eVRhYmxlKiBQ
cm9wZXJ0eVRhYmxlOjpjbG9uZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQog
ewotICAgIFByb3BlcnR5VGFibGUqIHRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UHJvcGVydHlUYWJsZT4odm0uaGVhcCkpIFByb3BlcnR5VGFibGUodm0sIG90aGVyKTsKKyAgICBQ
cm9wZXJ0eVRhYmxlKiB0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5
VGFibGU+KHZtKSkgUHJvcGVydHlUYWJsZSh2bSwgb3RoZXIpOwogICAgIHRhYmxlLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHRhYmxlOwogfQogCiBQcm9wZXJ0eVRhYmxlKiBQcm9w
ZXJ0eVRhYmxlOjpjbG9uZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3Qg
UHJvcGVydHlUYWJsZSYgb3RoZXIpCiB7Ci0gICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPih2bS5oZWFwKSkgUHJvcGVydHlU
YWJsZSh2bSwgaW5pdGlhbENhcGFjaXR5LCBvdGhlcik7CisgICAgUHJvcGVydHlUYWJsZSogdGFi
bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPih2bSkpIFByb3Bl
cnR5VGFibGUodm0sIGluaXRpYWxDYXBhY2l0eSwgb3RoZXIpOwogICAgIHRhYmxlLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHRhYmxlOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFByb3h5Q29u
c3RydWN0b3I6OnNfaW5mbwogCiBQcm94eUNvbnN0cnVjdG9yKiBQcm94eUNvbnN0cnVjdG9yOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBQcm94eUNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBQcm94eUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIFBy
b3h5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UHJveHlDb25zdHJ1Y3Rvcj4odm0pKSBQcm94eUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmpl
Y3QoKSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gUHJveHlPYmplY3Q6
OnN0cnVjdHVyZUZvclRhcmdldChnbG9iYWxPYmplY3QsIHRhcmdldCk7Ci0gICAgICAgIFByb3h5
T2JqZWN0KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5T2JqZWN0Pih2
bS5oZWFwKSkgUHJveHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5T2JqZWN0Pih2bSkpIFBy
b3h5T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIHByb3h5
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJl
dm9rZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5UmV2b2tlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjb25z
dCBDbGFzc0luZm8gUHJveHlSZXZva2U6OnNfaW5mbyA9IHsgCiAKIFByb3h5UmV2b2tlKiBQcm94
eVJldm9rZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3h5T2JqZWN0
KiBwcm94eSkKIHsKLSAgICBQcm94eVJldm9rZSogcmV2b2tlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8UHJveHlSZXZva2U+KHZtLmhlYXApKSBQcm94eVJldm9rZSh2bSwgc3RydWN0dXJl
KTsKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UHJveHlSZXZva2U+KHZtKSkgUHJveHlSZXZva2Uodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV2b2tl
LT5maW5pc2hDcmVhdGlvbih2bSwgcHJveHkpOwogICAgIHJldHVybiByZXZva2U7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFJlZmxlY3RPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZmxlY3RPYmplY3Q+KHZt
LmhlYXApKSBSZWZsZWN0T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWZsZWN0T2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWZsZWN0T2JqZWN0Pih2
bSkpIFJlZmxlY3RPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVk
U2l6ZShKU0NlbGwqIGNlbAogCiBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmco
Vk0mIHZtLCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIE9wdGlvblNldDxZYXJyOjpGbGFn
cz4gZmxhZ3MpCiB7Ci0gICAgUmVnRXhwKiByZWdFeHAgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxSZWdFeHA+KHZtLmhlYXApKSBSZWdFeHAodm0sIHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsK
KyAgICBSZWdFeHAqIHJlZ0V4cCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cD4o
dm0pKSBSZWdFeHAodm0sIHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKICAgICByZWdFeHAtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVnRXhwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWdF
eHBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4
cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpCiAgICAg
ewotICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFJlZ0V4cENvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4odm0pKSBS
ZWdFeHBDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCByZWdFeHBQcm90b3R5cGUsIHNwZWNpZXMpOwogICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCwgYm9vbCBhcmVMZWdhY3lGZWF0
dXJlc0VuYWJsZWQgPSB0cnVlKQogICAgIHsKLSAgICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmplY3Q+KHZtLmhlYXApKSBSZWdF
eHBPYmplY3Qodm0sIHN0cnVjdHVyZSwgcmVnRXhwLCBhcmVMZWdhY3lGZWF0dXJlc0VuYWJsZWQp
OworICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFJlZ0V4cE9iamVjdD4odm0pKSBSZWdFeHBPYmplY3Qodm0sIHN0cnVjdHVyZSwgcmVnRXhw
LCBhcmVMZWdhY3lGZWF0dXJlc0VuYWJsZWQpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ0V4cFBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cFByb3RvdHlwZT4odm0uaGVh
cCkpIFJlZ0V4cFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgUmVnRXhwUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBQcm90b3R5
cGU+KHZtKSkgUmVnRXhwUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJv
dG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQWxleGV5IFNodmF5a2EgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4u
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBhdXRvIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgUmVnRXhwU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGF1dG8gcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGU+KHZtKSkgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAg
ICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1l
bnRzOjpjcmVhdGUKIAogICAgIFNjb3BlZEFyZ3VtZW50cyogcmVzdWx0ID0gbmV3ICgKICAgICAg
ICAgTm90TnVsbCwKLSAgICAgICAgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50cz4odm0uaGVh
cCkpCisgICAgICAgIGFsbG9jYXRlQ2VsbDxTY29wZWRBcmd1bWVudHM+KHZtKSkKICAgICAgICAg
U2NvcGVkQXJndW1lbnRzKHZtLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHRvdGFsTGVuZ3RoKTsKICAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsZWUsIHRhYmxlLCBzY29wZSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
ZEFyZ3VtZW50c1RhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUzLDE0ICs1MywxNCBAQCB2b2lkIFNjb3BlZEFyZ3VtZW50c1RhYmxl
OjpkZXN0cm95KEpTQ2VsCiBTY29wZWRBcmd1bWVudHNUYWJsZSogU2NvcGVkQXJndW1lbnRzVGFi
bGU6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9
Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50c1RhYmxl
Pih2bS5oZWFwKSkgU2NvcGVkQXJndW1lbnRzVGFibGUodm0pOworICAgICAgICBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTY29wZWRBcmd1bWVudHNUYWJsZT4odm0pKSBTY29wZWRBcmd1bWVu
dHNUYWJsZSh2bSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogU2NvcGVkQXJndW1lbnRzVGFibGUqIFNjb3BlZEFyZ3VtZW50c1RhYmxl
Ojp0cnlDcmVhdGUoVk0mIHZtLCB1aW50MzJfdCBsZW5ndGgpCiB7Ci0gICAgdm9pZCogYnVmZmVy
ID0gdHJ5QWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50c1RhYmxlPih2bS5oZWFwKTsKKyAgICB2
b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+KHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IFNjb3BlZEFyZ3VtZW50c1RhYmxlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgU2Nv
cGVkQXJndW1lbnRzVGFibGUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFNldENvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2V0UHJvdG90eXBlKiBzZXRQcm90b3R5cGUsIEdl
dHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKICAgICB7Ci0gICAgICAgIFNldENvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNldENvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgU2V0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFNldENv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNldENv
bnN0cnVjdG9yPih2bSkpIFNldENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNldFByb3RvdHlwZSwgc3BlY2llc1N5bWJv
bCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJh
dG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBTZXRJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U2V0SXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBTZXRJdGVyYXRvclByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU2V0SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNldEl0ZXJhdG9yUHJvdG90eXBlPih2bSkp
IFNldEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90
eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFNldFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNl
dFByb3RvdHlwZT4odm0uaGVhcCkpIFNldFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgU2V0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
ZXRQcm90b3R5cGU+KHZtKSkgU2V0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBw
cm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzQw
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hh
ZG93UmVhbG1Qcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAgICAgICBTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFNoYWRvd1JlYWxtQ29uc3RydWN0b3I+KHZtLmhlYXApKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtQ29uc3RydWN0b3I+
KHZtKSkgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzaGFkb3dSZWFsbVByb3RvdHlwZSk7CiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw3ICs1
OSw3IEBAIERFRklORV9WSVNJVF9DSElMRFJFTihTaGFkb3dSZWFsbU9iamVjdCkKIAogU2hhZG93
UmVhbG1PYmplY3QqIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQog
ewotICAgIFNoYWRvd1JlYWxtT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTaGFkb3dSZWFsbU9iamVjdD4odm0uaGVhcCkpIFNoYWRvd1JlYWxtT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIFNoYWRvd1JlYWxtT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbU9iamVjdD4odm0pKSBTaGFkb3dSZWFsbU9iamVjdCh2
bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0
b21NZXRob2RUYWJsZSh2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBtZXRob2RUYWJsZSk7CiAgICAgb2JqZWN0LT5tX2dsb2JhbE9iamVjdC5zZXQodm0s
IG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQ0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFNoYWRvd1JlYWxtUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFs
bVByb3RvdHlwZT4odm0uaGVhcCkpIFNoYWRvd1JlYWxtUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBTaGFkb3dSZWFsbVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1Qcm90b3R5cGU+KHZtKSkgU2hhZG93UmVhbG1Qcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCShy
ZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2b2lkIFNw
YXJzZUFycmF5VmFsdWVNYXA6OmZpbmlzaENyZWF0aW9uCiAKIFNwYXJzZUFycmF5VmFsdWVNYXAq
IFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZShWTSYgdm0pCiB7Ci0gICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcCogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3BhcnNlQXJyYXlW
YWx1ZU1hcD4odm0uaGVhcCkpIFNwYXJzZUFycmF5VmFsdWVNYXAodm0pOworICAgIFNwYXJzZUFy
cmF5VmFsdWVNYXAqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNwYXJzZUFy
cmF5VmFsdWVNYXA+KHZtKSkgU3BhcnNlQXJyYXlWYWx1ZU1hcCh2bSk7CiAgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0
RXZhbEFjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZhdGlvbiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSkKICAgICB7Ci0gICAgICAgIFN0cmlj
dEV2YWxBY3RpdmF0aW9uKiBzY29wZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmlj
dEV2YWxBY3RpdmF0aW9uPih2bS5oZWFwKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24odm0sIHN0cnVj
dHVyZSwgY3VycmVudFNjb3BlKTsKKyAgICAgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24qIHNjb3Bl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0RXZhbEFjdGl2YXRpb24+KHZtKSkg
U3RyaWN0RXZhbEFjdGl2YXRpb24odm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlKTsKICAgICAg
ICAgc2NvcGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgU3RyaW5nQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSwgR2V0dGVy
U2V0dGVyKikKICAgICB7Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPih2bS5oZWFwKSkg
U3RyaW5nQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFN0cmluZ0NvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0
cnVjdG9yPih2bSkpIFN0cmluZ0NvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZ1Byb3RvdHlwZSk7CiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTdHJpbmdJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nSXRlcmF0b3JQcm90
b3R5cGU+KHZtKSkgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zOSwxMyArMzks
MTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpz
RW1wdHlTdHJpbmcodm0pOwotICAgICAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4odm0uaGVhcCkpIFN0cmluZ09iamVjdCh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KHZtKSkgU3RyaW5nT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJpbmcpOwogICAg
ICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKICAgICB7
Ci0gICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3RyaW5nT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFN0cmluZ09iamVjdD4odm0pKSBTdHJpbmdPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CiAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NyArMTY5LDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogCiBT
dHJpbmdQcm90b3R5cGUqIFN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgU3RyaW5n
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdQ
cm90b3R5cGU+KHZtLmhlYXApKSBTdHJpbmdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
U3RyaW5nUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
dHJpbmdQcm90b3R5cGU+KHZtKSkgU3RyaW5nUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IHByb3RvdHlwZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNyZWF0ZShWCiAgICAg
c2l6ZV90IGJ5dGVzID0gQ2hlY2tlZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFN0cnVjdHVyZUlE
KTsKICAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5
dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIG1lbXNl
dCh2ZWN0b3IsIDAsIGJ5dGVzKTsKLSAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0uaGVhcCkpIFN0cnVjdHVyZUNo
YWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKKyAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1
cmVDaGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1
cmUuZ2V0KCksIHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKHZtLCBoZWFkKTsK
ICAgICByZXR1cm4gY2hhaW47CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0m
IAogICAgICAgICBvYmplY3QtPmRpZEJlY29tZVByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJl
Pih2bS5oZWFwKSkgU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgdHlwZUlu
Zm8sIGNsYXNzSW5mbywgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgaW5saW5lQ2FwYWNp
dHkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8U3RydWN0dXJlPih2bSkpIFN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IHR5cGVJbmZvLCBjbGFzc0luZm8sIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIGlubGlu
ZUNhcGFjaXR5KTsKICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT50eXBlKCkgPT0gU3RydWN0dXJlVHlwZSk7CiAgICAgcmV0dXJuIHN0cnVj
dHVyZTsKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVh
dGUoVk0mIAogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtKQogewogICAgIEFTU0VSVCghdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0u
aGVhcCkpIFN0cnVjdHVyZSh2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bSkpIFN0
cnVjdHVyZSh2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3Jl
YXRpb24odm0sIENyZWF0aW5nRWFybHlDZWxsKTsKICAgICByZXR1cm4gc3RydWN0dXJlOwogfQpA
QCAtNzksOSArNzksOSBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYg
CiAgICAgQVNTRVJUKHZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CiAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmU7CiAgICAgaWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKLSAgICAg
ICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVj
dHVyZT4odm0uaGVhcCkpIEJyYW5kZWRTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxCcmFuZGVkU3RydWN0
dXJlKj4ocHJldmlvdXMpLCBkZWZlcnJlZCk7CisgICAgICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEJyYW5kZWRTdHJ1Y3R1cmU+KHZtKSkgQnJhbmRlZFN0cnVj
dHVyZSh2bSwganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2aW91cyksIGRlZmVycmVkKTsK
ICAgICBlbHNlCi0gICAgICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVk
KTsKKyAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3Ry
dWN0dXJlPih2bSkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKTsKIAogICAgIG5l
d1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0sIHByZXZpb3VzKTsKICAgICByZXR1cm4gbmV3
U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZVN0cnUK
IAogU3RydWN0dXJlUmFyZURhdGEqIFN0cnVjdHVyZVJhcmVEYXRhOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHByZXZpb3VzKQogewotICAgIFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZVJhcmVEYXRhPih2bS5oZWFwKSkg
U3RydWN0dXJlUmFyZURhdGEodm0sIHByZXZpb3VzKTsKKyAgICBTdHJ1Y3R1cmVSYXJlRGF0YSog
cmFyZURhdGEgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVSYXJlRGF0YT4o
dm0pKSBTdHJ1Y3R1cmVSYXJlRGF0YSh2bSwgcHJldmlvdXMpOwogICAgIHJhcmVEYXRhLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJhcmVEYXRhOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIs
NyArNjIsNyBAQCB2b2lkIFN5bWJvbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBpbmxpbmUg
U3ltYm9sT2JqZWN0KiBTeW1ib2xPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN5bWJvbCogc3ltYm9sKQogewotICAgIFN5bWJvbE9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2bS5oZWFwKSkg
U3ltYm9sT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPnN5bWJvbE9iamVjdFN0cnVjdHVyZSgpKTsK
KyAgICBTeW1ib2xPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5
bWJvbE9iamVjdD4odm0pKSBTeW1ib2xPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+c3ltYm9sT2Jq
ZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN5bWJvbCk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTEwMywxNCArMTAzLDE0IEBAIFN0cmluZyBTeW1i
b2w6OmRlc2NyaXB0aW9uKCkgY29uc3QKIAogU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShWTSYgdm0p
CiB7Ci0gICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1i
b2w+KHZtLmhlYXApKSBTeW1ib2wodm0pOworICAgIFN5bWJvbCogc3ltYm9sID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bSkpIFN5bWJvbCh2bSk7CiAgICAgc3ltYm9sLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KIAogU3ltYm9sKiBTeW1i
b2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbihWTSYgdm0sIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24pCiB7Ci0gICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
eW1ib2w+KHZtLmhlYXApKSBTeW1ib2wodm0sIGRlc2NyaXB0aW9uKTsKKyAgICBTeW1ib2wqIHN5
bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0pKSBTeW1ib2wodm0s
IGRlc2NyaXB0aW9uKTsKICAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1
cm4gc3ltYm9sOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBAIFN5bWJvbCogU3ltYm9sOjpjcmVhdGUo
Vk0mIHZtLCBTeW1ib2xJbXAKICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSB2bS5zeW1ib2xJbXBs
VG9TeW1ib2xNYXAuZ2V0KCZ1aWQpKQogICAgICAgICByZXR1cm4gc3ltYm9sOwogCi0gICAgU3lt
Ym9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXAp
KSBTeW1ib2wodm0sIHVpZCk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTeW1ib2w+KHZtKSkgU3ltYm9sKHZtLCB1aWQpOwogICAgIHN5bWJvbC0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBzeW1ib2w7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTeW1i
b2xDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJv
bFByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAgICAgICAgU3lt
Ym9sQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U3ltYm9sQ29uc3RydWN0b3I+KHZtLmhlYXApKSBTeW1ib2xDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgU3ltYm9sQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sQ29uc3RydWN0b3I+KHZtKSkgU3ltYm9sQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgcHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbE9iamVjdC5oCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgpAQCAtMzksMTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3ltYm9s
T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAg
ICAgIFN5bWJvbCogc3ltYm9sID0gU3ltYm9sOjpjcmVhdGUodm0pOwotICAgICAgICBTeW1ib2xP
YmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4o
dm0uaGVhcCkpIFN5bWJvbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3ltYm9sT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xPYmplY3Q+KHZt
KSkgU3ltYm9sT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBzeW1ib2wpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICBz
dGF0aWMgU3ltYm9sT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3ltYm9sKiBzeW1ib2wpCiAgICAgewotICAgICAgICBTeW1ib2xPYmplY3QqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0uaGVhcCkpIFN5bWJvbE9i
amVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3ltYm9sT2JqZWN0KiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xPYmplY3Q+KHZtKSkgU3ltYm9sT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzeW1ib2wp
OwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN5bWJvbFByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbFByb3RvdHlwZT4odm0uaGVhcCkpIFN5bWJv
bFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3ltYm9sUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xQcm90b3R5cGU+KHZtKSkg
U3ltYm9sUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJv
bFRhYmxlPih2bS5oZWFwKSkgU3ltYm9sVGFibGUodm0pOworICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xUYWJsZT4odm0p
KSBTeW1ib2xUYWJsZSh2bSk7CiAgICAgICAgIHN5bWJvbFRhYmxlLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxl
bmRhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogVGVtcG9yYWxDYWxlbmRhciogVGVtcG9yYWxDYWxl
bmRhcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhbGVuZGFySUQgaWRl
bnRpZmllcikKIHsKLSAgICBUZW1wb3JhbENhbGVuZGFyKiBmb3JtYXQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRh
cih2bSwgc3RydWN0dXJlLCBpZGVudGlmaWVyKTsKKyAgICBUZW1wb3JhbENhbGVuZGFyKiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyPih2bSkpIFRl
bXBvcmFsQ2FsZW5kYXIodm0sIHN0cnVjdHVyZSwgaWRlbnRpZmllcik7CiAgICAgZm9ybWF0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjCiAKIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvciogVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSkKIHsKLSAgICBUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3I+KHZtKSkgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxD
YWxlbmRhclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXAKIAogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZT4o
dm0uaGVhcCkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZT4odm0pKSBUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
RHVyYXRpb246OnNfaW5mbwogCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBk
dXJhdGlvbikKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbER1cmF0aW9uPih2bS5oZWFwKSkgVGVtcG9yYWxEdXJhdGlvbih2bSwgc3RydWN0
dXJlLCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxEdXJhdGlvbj4odm0pKSBUZW1wb3JhbER1cmF0aW9uKHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTUs
NyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjCiAKIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3RvciogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSog
ZHVyYXRpb25Qcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uQ29u
c3RydWN0b3I+KHZtKSkgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZHVyYXRpb25Qcm90b3R5cGUp
OwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkzLDcgKzk0LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cAogCiBUZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlPih2
bSkpIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNw
cAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU3LDcgKzU4LDcgQEAgVGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQoVk0m
IHZtLAogVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lKQogewogICAg
IEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZtLmhlYXApKSBUZW1wb3JhbElu
c3RhbnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZtKSkgVGVtcG9yYWxJbnN0
YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGltZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDcgKzYzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdAogCiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCiB7Ci0gICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I+KHZtKSkgVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBpbnN0YW50UHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw3ICs3OCw3IEBAIGNvbnN0IENsYXNz
SW5mbyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUKIAogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewotICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU+KHZtKSkgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBwcm90b3R5cGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Myw3ICs1
NCw3IEBAIFRlbXBvcmFsTm93OjpUZW1wb3JhbE5vdyhWTSYgdm0sIFN0cnVjdHUKIAogVGVtcG9y
YWxOb3cqIFRlbXBvcmFsTm93OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBUZW1wb3JhbE5vdyogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VGVtcG9yYWxOb3c+KHZtLmhlYXApKSBUZW1wb3JhbE5vdyh2bSwgc3RydWN0dXJlKTsKKyAgICBU
ZW1wb3JhbE5vdyogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxO
b3c+KHZtKSkgVGVtcG9yYWxOb3codm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIFRlbXBvcmFsT2JqZWN0OjpUZW1wb3Jh
bE9iamVjdChWTSYgdm0sIFMKIAogVGVtcG9yYWxPYmplY3QqIFRlbXBvcmFsT2JqZWN0OjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBUZW1wb3JhbE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxPYmplY3Q+KHZtLmhl
YXApKSBUZW1wb3JhbE9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBUZW1wb3JhbE9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxPYmplY3Q+KHZtKSkg
VGVtcG9yYWxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9y
YWxQbGFpblRpbWU6OnNfaW5mCiAKIFRlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OlBsYWluVGlt
ZSYmIHBsYWluVGltZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lKHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkgVGVtcG9yYWxQ
bGFpblRpbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnUKIAogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCiB7Ci0gICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I+KHZtKSkgVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHBsYWluVGltZVByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHkKIAogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZT4odm0u
aGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlPih2bSkpIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFRpbWVa
b25lOjpzX2luZm8KIAogVGVtcG9yYWxUaW1lWm9uZSogVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRl
RnJvbUlEKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRpbWVab25lSUQgaWRlbnRpZmll
cikKIHsKLSAgICBUZW1wb3JhbFRpbWVab25lKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbFRpbWVab25lPih2bS5oZWFwKSkgVGVtcG9yYWxUaW1lWm9uZSh2bSwg
c3RydWN0dXJlLCBUaW1lWm9uZSB7IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDwwPigpLCBpZGVudGlm
aWVyIH0pOworICAgIFRlbXBvcmFsVGltZVpvbmUqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFRlbXBvcmFsVGltZVpvbmU+KHZtKSkgVGVtcG9yYWxUaW1lWm9uZSh2bSwgc3Ry
dWN0dXJlLCBUaW1lWm9uZSB7IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDwwPigpLCBpZGVudGlmaWVy
IH0pOwogICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBmb3JtYXQ7
CiB9CiAKIFRlbXBvcmFsVGltZVpvbmUqIFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENP
ZmZzZXQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50NjRfdCB1dGNPZmZzZXQpCiB7
Ci0gICAgVGVtcG9yYWxUaW1lWm9uZSogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxUaW1lWm9uZT4odm0uaGVhcCkpIFRlbXBvcmFsVGltZVpvbmUodm0sIHN0cnVj
dHVyZSwgVGltZVpvbmUgeyBzdGQ6OmluX3BsYWNlX2luZGV4X3Q8MT4oKSwgdXRjT2Zmc2V0IH0p
OworICAgIFRlbXBvcmFsVGltZVpvbmUqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsVGltZVpvbmU+KHZtKSkgVGVtcG9yYWxUaW1lWm9uZSh2bSwgc3RydWN0dXJl
LCBUaW1lWm9uZSB7IHN0ZDo6aW5fcGxhY2VfaW5kZXhfdDwxPigpLCB1dGNPZmZzZXQgfSk7CiAg
ICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjCiAKIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3RvciogVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
VGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSogdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSkKIHsK
LSAgICBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkg
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I+KHZtKSkgVGVtcG9yYWxUaW1lWm9uZUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9u
ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXAKIAogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSogVGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxUaW1lWm9u
ZVByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZT4odm0pKSBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFdlYWtNYXBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikK
ICAgICB7Ci0gICAgICAgIFdlYWtNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWFrTWFw
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtNYXBDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwQ29uc3RydWN0
b3I+KHZtKSkgV2Vha01hcENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBQcm90b3R5cGU+KHZtLmhlYXApKSBXZWFrTWFw
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrTWFwUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwUHJvdG90eXBlPih2bSkp
IFdlYWtNYXBQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJl
ZkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2Vha09iamVj
dFJlZkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKLSAg
ICAgICAgV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYWtP
YmplY3RSZWZDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha09iamVjdFJl
ZkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YWtPYmplY3RSZWZDb25zdHJ1Y3Rvcj4odm0pKSBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJv
dG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKLSAgICAgICAgV2Vha09iamVjdFJlZlByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha09iamVjdFJlZlByb3RvdHlwZT4odm0uaGVhcCkpIFdl
YWtPYmplY3RSZWZQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIFdlYWtPYmplY3RS
ZWZQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtP
YmplY3RSZWZQcm90b3R5cGU+KHZtKSkgV2Vha09iamVjdFJlZlByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBXZWFrU2V0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewotICAg
ICAgICBXZWFrU2V0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2Vha1NldENvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2Vha1NldENvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBXZWFrU2V0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha1NldENvbnN0cnVjdG9yPih2bSkpIFdl
YWtTZXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2Vha1NldFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxXZWFrU2V0UHJvdG90eXBlPih2bS5oZWFwKSkgV2Vha1NldFByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgV2Vha1NldFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha1NldFByb3RvdHlwZT4odm0pKSBXZWFrU2V0UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUq
IGZyYW1lID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEb2xsYXJWTUNhbGxGcmFtZT4o
dm0uaGVhcCkpIEpTRG9sbGFyVk1DYWxsRnJhbWUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEpT
RG9sbGFyVk1DYWxsRnJhbWUqIGZyYW1lID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNE
b2xsYXJWTUNhbGxGcmFtZT4odm0pKSBKU0RvbGxhclZNQ2FsbEZyYW1lKHZtLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBmcmFtZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxGcmFtZSwgcmVxdWVzdGVk
RnJhbWVJbmRleCk7CiAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICB9CkBAIC0yMzMsNyArMjMz
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RWxlbWVudD4odm0uaGVhcCkpIEVsZW1lbnQodm0sIHN0
cnVjdHVyZSk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxFbGVtZW50Pih2bSkpIEVsZW1lbnQodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGVs
ZW1lbnQtPmZpbmlzaENyZWF0aW9uKHZtLCByb290KTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgfQpAQCAtMzEyLDcgKzMxMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAg
Um9vdCogcm9vdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJvb3Q+KHZtLmhlYXApKSBS
b290KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBSb290KiByb290ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8Um9vdD4odm0pKSBSb290KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByb290
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiByb290OwogICAgIH0KQEAgLTM2
MSw3ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAgIFNpbXBsZU9iamVjdCog
c2ltcGxlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2ltcGxlT2JqZWN0Pih2
bS5oZWFwKSkgU2ltcGxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBTaW1wbGVPYmpl
Y3QqIHNpbXBsZU9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNpbXBsZU9iamVj
dD4odm0pKSBTaW1wbGVPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHNpbXBsZU9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gc2ltcGxlT2JqZWN0OwogICAg
IH0KQEAgLTQzOCw3ICs0MzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEltcHVyZUdldHRlciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBkZWxlZ2F0ZSkK
ICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAg
IEltcHVyZUdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW1wdXJl
R2V0dGVyPih2bS5oZWFwKSkgSW1wdXJlR2V0dGVyKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBJ
bXB1cmVHZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEltcHVyZUdl
dHRlcj4odm0pKSBJbXB1cmVHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGdldHRlci0+
ZmluaXNoQ3JlYXRpb24odm0sIGRlbGVnYXRlKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAg
ICB9CkBAIC01MjAsNyArNTIwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXIq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgQ3VzdG9tR2V0dGVyKiBnZXR0
ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXI+KHZtLmhlYXApKSBD
dXN0b21HZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIEN1c3RvbUdldHRlciogZ2V0dGVy
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q3VzdG9tR2V0dGVyPih2bSkpIEN1c3RvbUdl
dHRlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBnZXR0ZXI7CiAgICAgfQpAQCAtNTk4LDcgKzU5OCw3IEBAIElHTk9S
RV9XQVJOSU5HU19FTkQKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
ICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBjcmVhdGVQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSdW50aW1lQXJyYXkqIHJ1bnRpbWVB
cnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4odm0uaGVhcCkp
IFJ1bnRpbWVBcnJheShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIFJ1bnRpbWVB
cnJheSogcnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFy
cmF5Pih2bSkpIFJ1bnRpbWVBcnJheShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
IHJ1bnRpbWVBcnJheS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
ICAgICAgICB2bS5oZWFwLmFkZEZpbmFsaXplcihydW50aW1lQXJyYXksIGRlc3Ryb3kpOwogICAg
ICAgICByZXR1cm4gcnVudGltZUFycmF5OwpAQCAtNzg0LDcgKzc4NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RhdGljQ3VzdG9tQWNjZXNzb3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKLSAgICAgICAgU3RhdGljQ3VzdG9tQWNjZXNzb3IqIGFjY2Vzc29yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8U3RhdGljQ3VzdG9tQWNjZXNzb3I+KHZtLmhlYXApKSBTdGF0aWNDdXN0
b21BY2Nlc3Nvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgU3RhdGljQ3VzdG9tQWNjZXNzb3Iq
IGFjY2Vzc29yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RhdGljQ3VzdG9tQWNjZXNz
b3I+KHZtKSkgU3RhdGljQ3VzdG9tQWNjZXNzb3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGFj
Y2Vzc29yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBhY2Nlc3NvcjsKICAg
ICB9CkBAIC04ODQsNyArODg0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdGF0aWNDdXN0b21W
YWx1ZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBTdGF0aWNDdXN0b21W
YWx1ZSogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdGF0aWNDdXN0b21W
YWx1ZT4odm0uaGVhcCkpIFN0YXRpY0N1c3RvbVZhbHVlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBTdGF0aWNDdXN0b21WYWx1ZSogYWNjZXNzb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdGF0aWNDdXN0b21WYWx1ZT4odm0pKSBTdGF0aWNDdXN0b21WYWx1ZSh2bSwgc3RydWN0dXJl
KTsKICAgICAgICAgYWNjZXNzb3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IGFjY2Vzc29yOwogICAgIH0KQEAgLTkxNyw3ICs5MTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRX
aXRob3V0Q29ycmVjdFNsb3RTdGF0dXMqIGFjY2Vzc29yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzPih2
bS5oZWFwKSkgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVz
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXMqIGFjY2Vzc29yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzPih2bSkpIE9i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyh2bSwgc3RydWN0
dXJlKTsKICAgICAgICAgYWNjZXNzb3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIGFjY2Vzc29yOwogICAgIH0KQEAgLTk3NSw3ICs5NzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIERPTUpJVE5vZGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgRE9N
SklUTm9kZSogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUTm9kZT4o
dm0uaGVhcCkpIERPTUpJVE5vZGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIERPTUpJVE5vZGUq
IGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVE5vZGU+KHZtKSkgRE9N
SklUTm9kZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBnZXR0ZXI7CiAgICAgfQpAQCAtMTAxNiw3ICsxMDE2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBET01KSVRHZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICAgICAgRE9NSklUR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxET01KSVRHZXR0ZXI+KHZtLmhlYXApKSBET01KSVRHZXR0ZXIodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIERPTUpJVEdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RE9NSklUR2V0dGVyPih2bSkpIERPTUpJVEdldHRlcih2bSwgc3RydWN0dXJlKTsKICAg
ICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBnZXR0ZXI7
CiAgICAgfQpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBET01KSVRH
ZXR0ZXJOb0VmZmVjdHMqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgRE9N
SklUR2V0dGVyTm9FZmZlY3RzKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxE
T01KSVRHZXR0ZXJOb0VmZmVjdHM+KHZtLmhlYXApKSBET01KSVRHZXR0ZXJOb0VmZmVjdHModm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIERPTUpJVEdldHRlck5vRWZmZWN0cyogZ2V0dGVyID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyTm9FZmZlY3RzPih2bSkpIERPTUpJ
VEdldHRlck5vRWZmZWN0cyh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgZ2V0dGVyLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBnZXR0ZXI7CiAgICAgfQpAQCAtMTIyMCw3ICsx
MjIwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBET01KSVRHZXR0ZXJDb21wbGV4KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
ICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZtLmhlYXApKSBET01KSVRHZXR0ZXJDb21wbGV4KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBET01KSVRHZXR0ZXJDb21wbGV4KiBnZXR0ZXIgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXJDb21wbGV4Pih2bSkpIERPTUpJVEdl
dHRlckNvbXBsZXgodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRp
b24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBnZXR0ZXI7CiAgICAgfQpAQCAt
MTM0NSw3ICsxMzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBET01KSVRGdW5jdGlvbk9iamVj
dCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgICAgICBET01KSVRGdW5jdGlvbk9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RE9NSklURnVuY3Rpb25PYmplY3Q+KHZtLmhlYXApKSBET01KSVRGdW5j
dGlvbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgRE9NSklURnVuY3Rpb25PYmplY3Qq
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEZ1bmN0aW9uT2JqZWN0
Pih2bSkpIERPTUpJVEZ1bmN0aW9uT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgIH0KQEAgLTE0MjYsNyArMTQyNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRE9N
SklUQ2hlY2tKU0Nhc3RPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3Qq
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVENoZWNrSlNDYXN0T2Jq
ZWN0Pih2bS5oZWFwKSkgRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3Qodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIERPTUpJVENoZWNrSlNDYXN0T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxET01KSVRDaGVja0pTQ2FzdE9iamVjdD4odm0pKSBET01KSVRDaGVja0pTQ2Fz
dE9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CkBAIC0xNDg5
LDcgKzE0ODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERPTUpJVEdldHRlckJhc2VKU09iamVj
dCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3QqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRl
ckJhc2VKU09iamVjdD4odm0uaGVhcCkpIERPTUpJVEdldHRlckJhc2VKU09iamVjdCh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KiBnZXR0ZXIgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q+KHZtKSkgRE9N
SklUR2V0dGVyQmFzZUpTT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBnZXR0ZXItPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGdldHRlcjsKICAgICB9CkBAIC0xNTk3
LDcgKzE1OTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTVGVzdEN1c3RvbUdldHRlclNldHRl
ciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAg
IEpTVGVzdEN1c3RvbUdldHRlclNldHRlciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPih2bS5oZWFwKSkgSlNUZXN0Q3VzdG9tR2V0
dGVyU2V0dGVyKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0
ZXIqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVGVzdEN1c3RvbUdldHRl
clNldHRlcj4odm0pKSBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIodm0sIHN0cnVjdHVyZSk7CiAg
ICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTE4NjgsNyArMTg2OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKLSAgICAg
ICAgV2FzbVN0cmVhbWluZ1BhcnNlciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2FzbVN0cmVhbWluZ1BhcnNlcj4odm0uaGVhcCkpIFdhc21TdHJlYW1pbmdQYXJzZXIodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIFdhc21TdHJlYW1pbmdQYXJzZXIqIHJlc3VsdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdhc21TdHJlYW1pbmdQYXJzZXI+KHZtKSkgV2FzbVN0cmVh
bWluZ1BhcnNlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTk0OSw3ICsxOTQ5LDcg
QEAgcHVibGljOgogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
ICAgICBKU1Byb21pc2UqIHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7Ci0gICAgICAgIFdh
c21TdHJlYW1pbmdDb21waWxlciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
V2FzbVN0cmVhbWluZ0NvbXBpbGVyPih2bS5oZWFwKSkgV2FzbVN0cmVhbWluZ0NvbXBpbGVyKHZt
LCBzdHJ1Y3R1cmUsIGNvbXBpbGVyTW9kZSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbXBvcnRP
YmplY3QpOworICAgICAgICBXYXNtU3RyZWFtaW5nQ29tcGlsZXIqIHJlc3VsdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFdhc21TdHJlYW1pbmdDb21waWxlcj4odm0pKSBXYXNtU3RyZWFt
aW5nQ29tcGlsZXIodm0sIHN0cnVjdHVyZSwgY29tcGlsZXJNb2RlLCBnbG9iYWxPYmplY3QsIHBy
b21pc2UsIGltcG9ydE9iamVjdCk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTRG9sbGFyVk0qIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKLSAgICAgICAgSlNEb2xsYXJWTSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0RvbGxhclZNPih2bS5oZWFwKSkgSlNEb2xsYXJWTSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgSlNEb2xsYXJWTSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0RvbGxhclZNPih2bSkpIEpTRG9sbGFyVk0odm0sIHN0cnVjdHVyZSk7CiAgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbUlDQ2Fs
bGVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1Rv
V2FzbUlDQ2FsbGVlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNUb1dhc21JQ0NhbGxlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVG9XYXNtSUNDYWxsZWU6OnNfaW5mbwogSlNUb1dh
c21JQ0NhbGxlZSogSlNUb1dhc21JQ0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24pCiB7CiAgICAg
YXV0byogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5qc1RvV2FzbUlDQ2FsbGVlU3RydWN0dXJl
KCk7Ci0gICAgSlNUb1dhc21JQ0NhbGxlZSogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNUb1dhc21JQ0NhbGxlZT4odm0uaGVhcCkpIEpTVG9XYXNtSUNDYWxsZWUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICBKU1RvV2FzbUlDQ2FsbGVlKiByZXN1bHQgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1RvV2FzbUlDQ2FsbGVlPih2bSkpIEpTVG9XYXNt
SUNDYWxsZWUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXN1bHQtPm1fZnVuY3Rpb24uc2V0KHZtLCByZXN1bHQsIGZ1
bmN0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTUsNyArOTUsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseTo6c19p
bmZvID0gCiAKIEpTV2ViQXNzZW1ibHkqIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHk+
KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5KHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHk+KHZtKSkgSlNXZWJB
c3NlbWJseSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OgogCiBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUoVk0mIHZtLCBSZWY8V2Fz
bTo6Q29kZUJsb2NrPiBjb2RlQmxvY2ssIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBt
b2R1bGVJbmZvcm1hdGlvbikKIHsKLSAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eUNvZGVCbG9jayh2bSwgV1RGTW92ZShjb2RlQmxvY2spLCBtb2R1bGVJbmZvcm1hdGlvbik7Cisg
ICAgYXV0byogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJs
eUNvZGVCbG9jaz4odm0pKSBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKHZtLCBXVEZNb3ZlKGNvZGVC
bG9jayksIG1vZHVsZUluZm9ybWF0aW9uKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlFeGNlcHRpb24uaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUV4Y2Vw
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgV2FzbTo6VGFnJiB0YWcsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYmIHBh
eWxvYWQpCiAgICAgewotICAgICAgICBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKiBleGNlcHRpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPih2bS5o
ZWFwKSkgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbih2bSwgc3RydWN0dXJlLCB0YWcsIFdURk1vdmUo
cGF5bG9hZCkpOworICAgICAgICBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKiBleGNlcHRpb24gPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPih2bSkpIEpT
V2ViQXNzZW1ibHlFeGNlcHRpb24odm0sIHN0cnVjdHVyZSwgdGFnLCBXVEZNb3ZlKHBheWxvYWQp
KTsKICAgICAgICAgZXhjZXB0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBleGNlcHRpb247CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIEpTV2ViQXNzZW1ibHlHbG9iYWwqIEpTV2Vi
QXNzZW1ibHlHbG9iYWwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0
byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5R2xv
YmFsPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUdsb2JhbCh2bSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGdsb2JhbCkpOworICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNXZWJBc3NlbWJseUdsb2JhbD4odm0pKSBKU1dlYkFzc2VtYmx5R2xvYmFsKHZtLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoZ2xvYmFsKSk7CiAgICAgaW5zdGFuY2UtPmdsb2JhbCgpLT5zZXRPd25l
cihpbnN0YW5jZSk7CiAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1
cm4gaW5zdGFuY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpT
V2ViQXNzZW1ibHlJbnN0CiAgICAgfTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3RzIGNv
dWxkIGJlIHByZXR0eSBiaWcgd2Ugc2hvdWxkIHRyeSB0byB0aHJvdyBPT00gaGVyZS4KLSAgICBh
dXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0YW5jZVN0
cnVjdHVyZSwgCisgICAgYXV0byoganNJbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4odm0pKSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0s
IGluc3RhbmNlU3RydWN0dXJlLCAKICAgICAgICAgV2FzbTo6SW5zdGFuY2U6OmNyZWF0ZSgmdm0u
d2FzbUNvbnRleHQsIFdURk1vdmUobW9kdWxlKSwgJnZtLnRvcEVudHJ5RnJhbWUsIHZtLmFkZHJl
c3NPZlNvZnRTdGFja0xpbWl0KCksIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CiAgICAg
anNJbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGpzTW9kdWxlLCBtb2R1bGVSZWNvcmQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5
LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1lbW9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
SlNXZWJBc3NlbWJseU1lbW9yeSogSlNXZWJBc3NlbWJseU1lbW9yeQogICAgIGlmICghZ2xvYmFs
T2JqZWN0LT53ZWJBc3NlbWJseUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihj
cmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RGlz
YWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogCi0gICAgYXV0byogbWVtb3J5ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseU1lbW9yeT4odm0uaGVhcCkpIEpTV2ViQXNzZW1i
bHlNZW1vcnkodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogbWVtb3J5ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseU1lbW9yeT4odm0pKSBKU1dlYkFzc2VtYmx5TWVt
b3J5KHZtLCBzdHJ1Y3R1cmUpOwogICAgIG1lbW9yeS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJldHVybiBtZW1vcnk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgSlNXZWJBc3NlbWJseU1vZHVsZSogSlNXZWJB
c3NlbWJseU1vZHVsZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRv
KiBtb2R1bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TW9kdWxl
Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseU1vZHVsZSh2bSwgc3RydWN0dXJlLCByZXN1bHQudmFs
dWUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvKiBtb2R1bGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TW9kdWxlPih2bSkpIEpTV2ViQXNzZW1ibHlNb2R1
bGUodm0sIHN0cnVjdHVyZSwgcmVzdWx0LnZhbHVlKCkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
bW9kdWxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG1vZHVsZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRh
YmxlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBA
QCBKU1dlYkFzc2VtYmx5VGFibGUqIEpTV2ViQXNzZW1ibHlUYWJsZTo6CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseVRhYmxlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseVRh
YmxlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUodGFibGUpKTsKKyAgICBhdXRvKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlUYWJsZT4odm0pKSBKU1dl
YkFzc2VtYmx5VGFibGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZSh0YWJsZSkpOwogICAgIGluc3Rh
bmNlLT50YWJsZSgpLT5zZXRPd25lcihpbnN0YW5jZSk7CiAgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNwcAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTV2Vi
QXNzZW1ibHlUYWc6OnNfaW5mbwogSlNXZWJBc3NlbWJseVRhZyogSlNXZWJBc3NlbWJseVRhZzo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFdhc206OlRhZyYgdGFnKQogewogICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwotICAgIGF1dG8qIGpzVGFnID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNXZWJBc3NlbWJseVRhZz4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlUYWcodm0sIHN0cnVjdHVy
ZSwgdGFnKTsKKyAgICBhdXRvKiBqc1RhZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
V2ViQXNzZW1ibHlUYWc+KHZtKSkgSlNXZWJBc3NlbWJseVRhZyh2bSwgc3RydWN0dXJlLCB0YWcp
OwogICAgIGpzVGFnLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGpzVGFnOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBA
QCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQCiAKIFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
LSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlPih2bSkpIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yKiBX
ZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIHRoaXNQcm90b3R5cGUp
CiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
ZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlFeGNl
cHRpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0
b3I+KHZtKSkgV2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUpOwogICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90CiAKIFdlYkFz
c2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlKiBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
LSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJs
eUV4Y2VwdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlPih2bSkpIFdlYkFzc2VtYmx5
RXhjZXB0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw3ICs0MzYsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViCiBXZWJBc3NlbWJseUZ1bmN0aW9uKiBXZWJB
c3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UsIFdhc206OkNhbGxlZSYganNF
bnRyeXBvaW50LCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRp
b24gd2FzbVRvV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIFdhc206OlNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4KQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2
bS5nZXRIb3N0RnVuY3Rpb24oY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24sIFdhc21GdW5jdGlvbklu
dHJpbnNpYywgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwot
ICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24o
dm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBqc0VudHJ5cG9pbnQsIHdh
c21Ub1dhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CisgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
ZWJBc3NlbWJseUZ1bmN0aW9uPih2bSkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBqc0VudHJ5cG9pbnQsIHdhc21Ub1dhc21FbnRy
eXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAgICAgZnVuY3Rpb24tPmZpbmlz
aENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGluc3RhbmNlKTsKICAgICBy
ZXR1cm4gZnVuY3Rpb247CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcxLDcgKzE3MSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2ViQXNzZW1ibHlHbG9i
YWxDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlKiB0aGlz
UHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5R2xvYmFsQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVj
dG9yPih2bSkpIFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjEsNyArMTIxLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5R2xvYgogCiBXZWJBc3NlbWJseUds
b2JhbFByb3RvdHlwZSogV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
R2xvYmFsUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlHbG9iYWxQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODYsNyArODYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2Vi
QXNzZW1iCiAKIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcih2
bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcj4odm0pKSBXZWJBc3NlbWJs
eUluc3RhbmNlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCw3ICs3NCw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih3ZWJBc3NlbWJseUluc3QKIAogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZSogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlPih2bS5o
ZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBh
dXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlPih2bSkpIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVj
dDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtF
cnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDcgKzcwLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseUxpbmtF
cnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5
cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yPih2bS5oZWFw
KSkgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3I+KHZtKSkgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRo
aXNQcm90b3R5cGUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdAogCiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3Nl
bWJseUxpbmtFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZT4odm0pKSBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTUxLDcgKzE1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihjYWxsSlNXZWJBc3NlbWIKIAogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3RvciogV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAg
IGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTEsNyArMTExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHdlYkFzc2VtYmx5TWVtbwogCiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4o
dm0pKSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTg4LDcgKzE4OCw3IEBAIEpTV2ViQXNzZW1ibHlNb2R1bGUqIFdlYkFz
c2VtYmx5TW9kdWxlQ28KIAogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3RvciogV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8q
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHkKIAogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU+KHZtKSkgV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
NyBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhCiAKIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1v
ZHVsZUluZm9ybWF0aW9uKQogewotICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPih2
bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5
KTsKKyAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4odm0pKSBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkpOwogICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QsIHZtLCBtb2R1bGVJbmZvcm1hdGlvbik7CiAgICAgcmV0
dXJuIGluc3RhbmNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzAsNyArNzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1i
CiAKIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rv
cj4odm0pKSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDMsNyArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQCiAKIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFz
c2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlPih2bSkpIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYgogCiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IqIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7
Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJB
c3NlbWJseVRhYmxlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I+KHZtKSkgV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTc3LDcgKzE3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih3ZWJBc3NlbWJseVRhYmwKIAogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlPih2bSkpIFdl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgs
NyArOTgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1iCiAKIFdl
YkFzc2VtYmx5VGFnQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3I6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSog
dGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3Nl
bWJseVRhZ0NvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvcj4o
dm0pKSBXZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUYWdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseVRhZ1Byb3RvdHlwZToKIAogV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5VGFnUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUYWdQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWdQcm90b3R5cGU+KHZtKSkgV2ViQXNzZW1ibHlU
YWdQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogV2ViQXNzZW1ibHlXCiAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghZnVuY3Rpb24tPmluaGVyaXRzPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
Pih2bSksICJXZSBzaG91bGQgbmV2ZXIgZG91YmxlIHdyYXAgYSB3cmFwcGVyIGZ1bmN0aW9uLiIp
OwogICAgIFN0cmluZyBuYW1lID0gIiI7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24sIE5v
SW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7
Ci0gICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uPih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIHsgc2lnbmF0dXJlSW5kZXgs
ICZpbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0SW5kZXgpLT53
YXNtVG9FbWJlZGRlclN0dWIgfSApOworICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiBy
ZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbj4odm0pKSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24g
eyBzaWduYXR1cmVJbmRleCwgJmluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uSW5m
byhpbXBvcnRJbmRleCktPndhc21Ub0VtYmVkZGVyU3R1YiB9ICk7CiAgICAgY29uc3QgV2FzbTo6
U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNp
Z25hdHVyZUluZGV4KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxl
LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBuYW1lLCBmdW5jdGlvbiwgaW5zdGFuY2UpOwog
ICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNTAgQEAK
KzIwMjEtMTEtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZmFjdG9yIGFsbG9jYXRlQ2VsbCgpIGFuZCB0cnlBbGxvY2F0ZUNlbGwoKSB0byB0YWtlIFZNJiBp
bnN0ZWFkIG9mIEhlYXAmLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDI4CisgICAgICAgIHJkYXI6Ly84NTMyOTY4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Bc3lu
Y0l0ZXJhdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGU8SlNDbGFzcz46OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
Q2xhc3M+OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz46OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlUHJvdG90
eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RP
TVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdzo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnM6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
czo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVQ6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZh
dWx0VG9KU09OOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWw6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REb21haW5TZWN1cml0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REb21haW5T
ZWN1cml0eURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RG9tYWluU2VjdXJpdHk6OmNyZWF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkRm9yQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldERPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNl
cHRpb246OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb246OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXNDYWxs
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJdGVyYWJsZURPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzQ2FsbGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEl0ZXJhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmNyZWF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBM
aWtlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNYXBMaWtlOjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzQ2FsbGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2Jq
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RSZWFk
T25seU1hcExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RSZWFkT25seU1hcExpa2U6OmNyZWF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RSZWFkT25s
eVNldExpa2U6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTZXRMaWtlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uczo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFN0cmluZ2lmaWVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpjcmVh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0RP
TUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNj
b3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpj
SW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2Uv
cnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwog
MjAyMS0xMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViQXV0aG5dIFN0b3Agc2VyaWFsaXppbmcgQnVmZmVyU291cmNlIGFuZCBWZWN0b3I8dWlu
dDhfdD4gZHVwbGljYXRlcyBvZiBpZGVudGlmaWVycwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNET01Bc3luY0l0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NQXN5bmNJdGVyYXRvclBy
b3RvdHlwZSwgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpCYXNlKTsKLSAgICAgICAgSlNE
T01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRE9N
QXN5bmNJdGVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNET01Bc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZT4odm0pKSBKU0RPTUFzeW5jSXRlcmF0
b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0
aW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNyArNTcsNyBA
QCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01CdWls
dGluQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgSlNET01CdWlsdGluQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01CdWlsdGluQ29uc3RydWN0b3I+KHZtKSkg
SlNET01CdWlsdGluQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz4q
IEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICBKU0RPTUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNET01Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTRE9NQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgSlNET01Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQ29uc3RydWN0b3I+KHZtKSkgSlNET01Db25z
dHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5v
dENhbGxhYmxlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyAr
NjUsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNE
T01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlPEpTQ2xhc3M+KiBKU0RPTUNvbnN0cnVjdG9yTm90Q2Fs
bGFibGU8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBKU0RPTUNvbnN0
cnVjdG9yTm90Q2FsbGFibGUqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGU+KHZtLmhlYXApKSBKU0RPTUNvbnN0
cnVjdG9yTm90Q2FsbGFibGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgIEpTRE9NQ29u
c3RydWN0b3JOb3RDYWxsYWJsZSogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZT4odm0pKSBKU0RPTUNvbnN0cnVj
dG9yTm90Q2FsbGFibGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwogICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U0NsYXNzPiogSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNDbGFzcz46OmNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZSogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPih2bS5oZWFwKSkgSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUodm0sIHN0cnVjdHVyZSk7CisgICAgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZT4odm0pKSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZSh2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNET01J
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJvdG90
eXBlLCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlOjpCYXNlKTsKLSAgICAgICAgSlNET01JdGVyYXRv
clByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U0RPTUl0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSlNET01JdGVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNET01JdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUl0ZXJhdG9yUHJvdG90eXBl
Pih2bSkpIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz4qIEpT
RE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbj4odm0u
aGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIEpT
RE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHZtKSkgSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24odm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJv
cGVydGllcy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTRE9NV2luZG93UHJvcGVydGllcyogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKICAgICB7Ci0gICAgICAgIEpTRE9NV2luZG93UHJvcGVydGllcyogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTVdpbmRvd1Byb3BlcnRpZXM+KGdsb2JhbE9iamVj
dC52bSgpLmhlYXApKSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpOworICAgICAgICBKU0RPTVdpbmRvd1Byb3BlcnRpZXMqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3Qudm0o
KSkpIEpTRE9NV2luZG93UHJvcGVydGllcyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1E
aXJlY3RvcnlIYW5kbGVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZSYgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAg
ICB7Ci0gICAgICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4odm0uaGVhcCkpIEpTRmls
ZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3Qs
IGtpbmQpOworICAgICAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+KHZtKSkgSlNGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3Ioc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwg
a2luZCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJl
dHVybiBpbnN0YW5jZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBpbmxp
bmUgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpKCiAKIEpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdCogSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPERPTVdyYXBwZXJXb3JsZD4mJiBpbXBsKQog
ewotICAgIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCogcHRyID0gIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4odm0uaGVhcCkp
IEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGlt
cGwpKTsKKyAgICBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QqIHB0ciA9ICBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KHZtKSkg
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1w
bCkpOwogICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwdHI7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAkocmV2
aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSlNXaW5kb3dQcm94
eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIEpTV2luZG93UHJveHkmIEpTV2luZG93UHJveHk6OmNy
ZWF0ZShWTSYgdm0sIEFic3RyYWN0RE9NV2luZG93JiB3aW5kb3csIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCiB7CiAgICAgYXV0byYgc3RydWN0dXJlID0gKlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAw
LCBqc051bGwoKSwgVHlwZUluZm8oUHVyZUZvcndhcmRpbmdQcm94eVR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKLSAgICBhdXRvJiBwcm94eSA9ICpuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1dpbmRvd1Byb3h5Pih2bS5oZWFwKSkgSlNXaW5kb3dQcm94eSh2bSwgc3RydWN0dXJl
LCB3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSAqbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNXaW5kb3dQcm94eT4odm0pKSBKU1dpbmRvd1Byb3h5KHZtLCBzdHJ1Y3R1cmUsIHdvcmxkKTsK
ICAgICBwcm94eS5maW5pc2hDcmVhdGlvbih2bSwgd2luZG93KTsKICAgICByZXR1cm4gcHJveHk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI4NjcsMTQg
KzI4NjcsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPCRpbXBsVHlwZT4m
JiBpbXBsLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFz
c05hbWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSwgcHJveHkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4odm0pKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSwgcHJveHkp
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0sIHByb3h5KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYg
aW1wbCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAk
Y2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPih2bSkpICR7
Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94
eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0
cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CkBAIC0y
ODgzLDE0ICsyODgzLDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlw
ZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIGdsb2JhbE9iamVjdC0+bWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZt
KCksIFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3RcIik7XG4iKTsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
ICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVj
dC0+dm0oKSkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNpZiAoIU5lZWRzSW1wbGVtZW50YXRp
b25DbGFzcygkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFz
c05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
ICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNz
TmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsgIApAQCAtMjkwMCw3ICsyOTAwLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
JGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0
LT52bSgpKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTY3NTksNyArNjc1OSw3IEBAIElHTk9SRV9XQVJO
SU5HU19FTkQKIAogICAgIHN0YXRpYyAke2l0ZXJhdG9yTmFtZX0qIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgJHtjbGFzc05hbWV9JiBpdGVyYXRlZE9iamVj
dCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgYXV0byogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7aXRlcmF0b3JOYW1lfT4odm0uaGVhcCkp
ICR7aXRlcmF0b3JOYW1lfShzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKKyAgICAg
ICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7aXRl
cmF0b3JOYW1lfT4odm0pKSAke2l0ZXJhdG9yTmFtZX0oc3RydWN0dXJlLCBpdGVyYXRlZE9iamVj
dCwga2luZCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC03NTIyLDcgKzc1MjIsNyBAQCBzdWIgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyAke3Byb3RvdHlwZUNsYXNzTmFtZX0qIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSlcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+KHZtLmhlYXApKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4odm0p
KSAke2NsYXNzTmFtZX1Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBwdHI7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5o
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRE9NV3JhcHBlZCA9IERPTVdpbmRvdzsKICAgICBzdGF0aWMgSlNET01X
aW5kb3cqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
PERPTVdpbmRvdz4mJiBpbXBsLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKICAgICB7Ci0gICAgICAg
IEpTRE9NV2luZG93KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9N
V2luZG93Pih2bS5oZWFwKSkgSlNET01XaW5kb3codm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSwgcHJveHkpOworICAgICAgICBKU0RPTVdpbmRvdyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU0RPTVdpbmRvdz4odm0pKSBKU0RPTVdpbmRvdyh2bSwgc3RydWN0dXJl
LCBXVEZNb3ZlKGltcGwpLCBwcm94eSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0s
IHByb3h5KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRp
YyBKU0RPTVdpbmRvd1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgSlNET01XaW5kb3dQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNET01XaW5kb3dQcm90b3R5cGU+KHZtLmhlYXApKSBKU0RPTVdpbmRvd1Byb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0RPTVdpbmRvd1By
b3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTVdpbmRv
d1Byb3RvdHlwZT4odm0pKSBKU0RPTVdpbmRvd1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIERPTVdyYXBwZWQgPSBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKICAgICBzdGF0aWMgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5KiBwcm94
eSkKICAgICB7Ci0gICAgICAgIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZT4odm0uaGVhcCkpIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT4odm0pKSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKLSAgICAgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU+KHZtKSkgSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkU3Rhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTRXhwb3NlZFN0
YXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBv
c2VkU3RhclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNFeHBvc2VkU3RhclByb3RvdHlwZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9zZWRTdGFyUHJvdG90
eXBlPih2bSkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFN0YXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01XcmFwcGVk
ID0gRXhwb3NlZFN0YXI7CiAgICAgc3RhdGljIEpTRXhwb3NlZFN0YXIqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
RXhwb3NlZFN0YXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTRXhwb3NlZFN0YXIqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3Rhcj4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU0V4cG9zZWRTdGFyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTRXhwb3NlZFN0YXIqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3Rhcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkg
SlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU0V4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZT4odm0uaGVhcCkp
IEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93UHJvdG90eXBlPih2bSkpIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTRE9NV3JhcHBlcjxFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+OwogICAgIHN0YXRpYyBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3c+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAg
ICAgIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93PihnbG9iYWxPYmplY3QtPnZt
KCkpKSBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01X
cmFwcGVkID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiAgICAgc3RhdGljIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmIGltcGwsIEpTQzo6SlNQcm94eSog
cHJveHkpCiAgICAgewotICAgICAgICBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+
KHZtLmhlYXApKSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KHZt
KSkgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwp
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgcHJveHkpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZT4odm0uaGVh
cCkpIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlPih2bSkpIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01X
cmFwcGVkID0gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwogICAgIHN0YXRpYyBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiYmIGltcGwsIEpTQzo6SlNQcm94
eSogcHJveHkpCiAgICAgewotICAgICAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4odm0uaGVhcCkpIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4odm0pKSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh2bSwgc3RydWN0dXJlLCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgcHJveHkpOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlPih2bSkpIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgRE9NV3JhcHBlZCA9IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOwogICAgIHN0YXRp
YyBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4mJiBpbXBsLCBK
U0M6OkpTUHJveHkqIHByb3h5KQogICAgIHsKLSAgICAgICAgSlNTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlPih2bS5oZWFwKSkgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSh2bSwgc3Ry
dWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlPih2bSkpIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGU+KHZtLmhlYXApKSBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZT4odm0pKSBKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENF
UmVhY3Rpb25zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnNQ
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGU+KHZtKSkgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmgJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RDRVJlYWN0aW9ucz47
CiAgICAgc3RhdGljIEpTVGVzdENFUmVhY3Rpb25zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDRVJlYWN0
aW9ucz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q0VSZWFjdGlvbnM+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q0VSZWFjdGlvbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q0VSZWFjdGlvbnM+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdENFUmVhY3Rpb25zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlPih2bSkpIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjsKICAgICBzdGF0aWMgSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4m
JiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPihnbG9iYWxPYmplY3QtPnZt
KCkpKSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxP
YmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
Pih2bSkpIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RDYWxsVHJhY2VyPjsKICAgICBzdGF0aWMgSlNUZXN0Q2Fs
bFRyYWNlciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2FsbFRyYWNlcj4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0Q2FsbFRyYWNlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RDYWxsVHJhY2VyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdENh
bGxUcmFjZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgSlNUZXN0Q2FsbFRyYWNlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RDYWxsVHJhY2VyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RDYWxsVHJhY2Vy
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CisgICAgICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlPih2bSkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3Jh
cHBlcjxUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+OwogICAgIHN0YXRpYyBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3I+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPihnbG9iYWxPYmplY3Qt
PnZtKCkpKSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGlj
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlPih2bSkpIEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RDb25kaXRpb25hbEluY2x1ZGVz
PjsKICAgICBzdGF0aWMgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyogY3JlYXRlKEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKKyAgICAgICAgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPihnbG9iYWxP
YmplY3QtPnZtKCkpKSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3Rh
dGljIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90
b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBl
Pih2bSkpIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNE
T01XcmFwcGVyPFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPjsKICAgICBzdGF0aWMgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPihnbG9iYWxP
YmplY3QtPnZtKCkpKSBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
MSw3ICs0NzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RET01KSVRQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RE9NSklUUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0RE9NSklUUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RET01KSVRQcm90b3R5cGU+KHZtKSkgSlNUZXN0RE9NSklUUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmgJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RET01KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRE9NV3JhcHBlZCA9IFRlc3RET01KSVQ7CiAgICAgc3RhdGljIEpTVGVz
dERPTUpJVCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RE9NSklUPiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RET01KSVQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0RE9NSklUPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERPTUpJVChzdHJ1Y3R1
cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RET01KSVQq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RE9NSklUPihnbG9i
YWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RET01KSVQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qt
PnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05v
bkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09O
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERl
ZmF1bHRUb0pTT05Qcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdERlZmF1bHRU
b0pTT05Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZT4odm0pKSBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT04uaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0RGVmYXVsdFRvSlNPTj47CiAgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT04qIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdERlZmF1bHRUb0pTT04+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVz
dERlZmF1bHRUb0pTT04qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0RGVmYXVsdFRvSlNPTj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REZWZhdWx0
VG9KU09OKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAg
IEpTVGVzdERlZmF1bHRUb0pTT04qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0RGVmYXVsdFRvSlNPTj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0RGVmYXVs
dFRvSlNPTihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZT4odm0pKSBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQ+OwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4mJiBpbXBsKQog
ICAgIHsKLSAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKKyAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAg
ICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAg
ICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBl
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
UHJvdG90eXBlPih2bSkpIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5oCShy
ZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRE9NV3JhcHBlZCA9IFRlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTsKICAgICBzdGF0aWMgSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4o
Z2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNw
cAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5
cGU+KHZtKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01XcmFwcGVkID0gVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+JiYgaW1wbCkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0PihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWxQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZT4o
dm0pKSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
RE9NV3JhcHBlZCA9IFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOwogICAgIHN0YXRpYyBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbChzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWw+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
ICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVj
dDsKICAgICBzdGF0aWMgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU+KHZtKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+OwogICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZShzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
b21haW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFp
blNlY3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
RG9tYWluU2VjdXJpdHlQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKKyAgICAgICAgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGU+
KHZtKSkgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REb21haW5TZWN1cml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REb21haW5TZWN1cml0eT47CiAg
ICAgc3RhdGljIEpTVGVzdERvbWFpblNlY3VyaXR5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REb21haW5T
ZWN1cml0eT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0RG9tYWluU2VjdXJpdHkqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RG9tYWluU2VjdXJpdHk+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RG9tYWluU2VjdXJpdHkoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RG9tYWluU2Vj
dXJpdHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RG9tYWlu
U2VjdXJpdHk+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdERvbWFpblNlY3VyaXR5KHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZT4odm0uaGVhcCkpIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nUHJvdG90eXBlPih2bSkpIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3RFbmFibGVkQnlTZXR0aW5nPjsKICAgICBzdGF0aWMgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPihnbG9iYWxP
YmplY3QtPnZtKCkpKSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
T2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZT4odm0uaGVh
cCkpIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
UHJvdG90eXBlPih2bSkpIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9y
Q29udGV4dC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0RW5hYmxlZEZvckNvbnRleHQ+OwogICAgIHN0YXRpYyBKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RW5hYmxlZEZvckNvbnRleHQ+JiYgaW1wbCkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Pihn
bG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dChzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlPih2bSkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdEV2ZW50Q29u
c3RydWN0b3I7CiAgICAgc3RhdGljIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdEV2ZW50Q29uc3RydWN0b3I+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0Owog
ICAgIHN0YXRpYyBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZT4o
dm0pKSBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkocmV2aXNpb24gMjg1NzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU1Rlc3RFdmVudFRhcmdldCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1w
bCkKICAgICB7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFzcXVl
cmFkaW5nIG9iamVjdCIpOwotICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0
LT52bSgpKSkgSlNUZXN0RXZlbnRUYXJnZXQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAg
ICBzdGF0aWMgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CisgICAgICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU+KHZtKSkgSlNUZXN0RXhj
ZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0RXhjZXB0aW9uPjsKICAgICBzdGF0aWMgSlNUZXN0RXhjZXB0aW9uKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RFeGNlcHRpb24+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEV4Y2VwdGlvbiog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb24+KGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEV4Y2VwdGlvbiogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb24+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdEV4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZT4odm0pKSBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3Q+OwogICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmlu
YWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
Pih2bSkpIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlPjsKICAgICBzdGF0aWMgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODU3MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEdsb2JhbE9iamVjdD47CiAgICAgc3RhdGljIEpT
VGVzdEdsb2JhbE9iamVjdCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwp
CiAgICAgewotICAgICAgICBKU1Rlc3RHbG9iYWxPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdEdsb2JhbE9iamVjdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RHbG9iYWxPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QtPnZt
KCkpKSBKU1Rlc3RHbG9iYWxPYmplY3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkp
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dEdsb2JhbE9iamVjdFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZT4odm0uaGVhcCkpIEpT
VGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlPih2bSkpIEpTVGVz
dEdsb2JhbE9iamVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZT4o
dm0uaGVhcCkpIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFw
cGVyPFRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKICAgICBzdGF0aWMgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlPih2bSkpIEpTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bj47CiAgICAgc3RhdGljIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiogY3Jl
YXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
ICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CisgICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjsKICAgICBzdGF0aWMgSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPih2bSkpIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC0xMTI2LDcgKzExMjYs
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZUl0ZXJh
dG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVGVz
dEludGVyZmFjZSYgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0g
ICAgICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxU
ZXN0SW50ZXJmYWNlSXRlcmF0b3I+KHZtLmhlYXApKSBUZXN0SW50ZXJmYWNlSXRlcmF0b3Ioc3Ry
dWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CisgICAgICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxUZXN0SW50ZXJmYWNlSXRlcmF0b3I+KHZt
KSkgVGVzdEludGVyZmFjZUl0ZXJhdG9yKHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQp
OwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RJbnRlcmZhY2U+OwogICAgIHN0YXRpYyBKU1Rlc3RJ
bnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEludGVyZmFjZT4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0SW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RJbnRl
cmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAg
SlNUZXN0SW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlPih2bSkpIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBy
ZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+OwogICAgIHN0
YXRpYyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUu
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAg
IHN0YXRpYyBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKLSAgICAgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SXRlcmFibGVQcm90b3R5cGU+KHZtLmhlYXApKSBK
U1Rlc3RJdGVyYWJsZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZT4odm0pKSBKU1Rlc3RJdGVyYWJsZVBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC0yMjMsNyArMjIz
LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiAgICAgc3RhdGljIFRlc3RJdGVyYWJsZUl0ZXJh
dG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVGVz
dEl0ZXJhYmxlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAg
ICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPFRl
c3RJdGVyYWJsZUl0ZXJhdG9yPih2bS5oZWFwKSkgVGVzdEl0ZXJhYmxlSXRlcmF0b3Ioc3RydWN0
dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CisgICAgICAgIGF1dG8qIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxUZXN0SXRlcmFibGVJdGVyYXRvcj4odm0pKSBU
ZXN0SXRlcmFibGVJdGVyYXRvcihzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJdGVyYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTRE9NV3JhcHBlcjxUZXN0SXRlcmFibGU+OwogICAgIHN0YXRpYyBKU1Rlc3RJdGVyYWJsZSog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0SXRlcmFibGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVz
dEl0ZXJhYmxlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEl0
ZXJhYmxlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEl0ZXJhYmxlKHN0cnVjdHVy
ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEl0ZXJhYmxl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEl0ZXJhYmxlPihn
bG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RJdGVyYWJsZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZT4odm0pKSBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTU9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3Ioc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKSkp
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZT4odm0uaGVh
cCkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uUHJvdG90eXBlPih2bSkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47CiAg
ICAgc3RhdGljIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKICAgICBzdGF0aWMgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlPih2bS5oZWFwKSkgSlNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3RQcm90b3R5cGU+KHZtKSkgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdD47CiAgICAgc3RhdGljIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4mJiBpbXBsKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlPih2bSkpIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPjsKICAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpT
VGVzdE1hcExpa2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdE1hcExpa2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TWFwTGlrZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE1hcExpa2VQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TWFw
TGlrZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RNYXBMaWtlUHJvdG90eXBlPih2bSkpIEpTVGVzdE1hcExpa2VQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWFwTGlrZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RNYXBMaWtlPjsKICAgICBzdGF0aWMgSlNUZXN0
TWFwTGlrZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TWFwTGlrZT4mJiBpbXBsKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TWFwTGlrZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RNYXBMaWtlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE1hcExpa2Uoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TWFw
TGlrZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNYXBMaWtl
PihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RNYXBMaWtlKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
T2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zUHJvdG90eXBlPih2bSkpIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNE
T01XcmFwcGVyPFRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjsKICAgICBzdGF0
aWMgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogY3JlYXRlKEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4mJiBpbXBsKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAg
ICAgICAgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAg
c3RhdGljIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
clByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj47CiAgICAgc3Rh
dGljIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiYmIGltcGwpCiAgICAgewot
ICAgICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworICAgICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Qcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlPih2bSkpIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5o
CShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9N
V3JhcHBlcjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwogICAgIHN0
YXRpYyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+JiYgaW1wbCkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkp
KSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0
OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgp
KSkgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlz
aW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxP
YmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
Pih2bSkpIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+
JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyPjsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPiYmIGlt
cGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4o
Z2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgJ
KHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj47CiAgICAgc3RhdGljIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0o
KSkpIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlPih2bSkpIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGhQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZEdldHRlckNhbGxXaXRoPjsKICAg
ICBzdGF0aWMgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGgoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPihnbG9iYWxPYmplY3Qt
PnZtKCkpKSBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGlj
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlPih2bSkpIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+OwogICAgIHN0YXRp
YyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
RE9NV3JhcHBlcjxUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAgICAgc3RhdGljIEpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPjsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJO
b0lkZW50aWZpZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPiYm
IGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAg
ICBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4oZ2xvYmFsT2JqZWN0
LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJl
dmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5h
bE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU+KHZt
KSkgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU+KHZtKSkgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwogICAgIHN0YXRpYyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
ICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdy
YXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OwogICAgIHN0YXRpYyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcihzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkp
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlci5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXJQcm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+KGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAg
ICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGU+KHZtKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMu
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU+KHZtKSkgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzLmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzPjsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg1NzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZT4odm0pKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucz47CiAgICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
c3BhY2VPYmplY3QuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01PYmplY3Q7
CiAgICAgc3RhdGljIEpTVGVzdE5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAg
ICAgICBKU1Rlc3ROYW1lc3BhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZXNwYWNlT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdE5hbWVzcGFjZU9iamVjdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpOworICAgICAg
ICBKU1Rlc3ROYW1lc3BhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TmFtZXNwYWNlT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RO
YW1lc3BhY2VPYmplY3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0Tm9kZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb2RlUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0Tm9kZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5vZGVQcm90b3R5cGU+KHZtKSkgSlNUZXN0Tm9kZVByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC00MjcsNyArNDI3LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogCiAgICAgc3RhdGljIFRlc3ROb2RlSXRlcmF0b3IqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNUZXN0Tm9kZSYgaXRlcmF0ZWRP
YmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxUZXN0Tm9kZUl0ZXJhdG9yPih2bS5o
ZWFwKSkgVGVzdE5vZGVJdGVyYXRvcihzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsK
KyAgICAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PFRlc3ROb2RlSXRlcmF0b3I+KHZtKSkgVGVzdE5vZGVJdGVyYXRvcihzdHJ1Y3R1cmUsIGl0ZXJh
dGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgRE9NV3JhcHBlZCA9IFRlc3ROb2RlOwogICAgIHN0YXRpYyBKU1Rlc3ROb2RlKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROb2RlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROb2RlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5vZGU+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0Tm9kZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBKU1Rlc3ROb2RlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5vZGU+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE5vZGUo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg1Niw3ICsxODU2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE9ialByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9ialByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdE9ialByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU1Rlc3RPYmpQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0T2JqUHJvdG90eXBlPih2bSkpIEpTVGVzdE9ialByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBK
U0RPTVdyYXBwZXI8VGVzdE9iaj47CiAgICAgc3RhdGljIEpTVGVzdE9iaiogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0T2JqPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RPYmoqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdE9iaihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworICAgICAgICBKU1Rlc3RPYmoqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RPYmooc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkocmV2aXNpb24gMjg1
NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0
aWMgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGU+KHZtKSkgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmgJKHJl
dmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RPcGVyYXRp
b25Db25kaXRpb25hbD47CiAgICAgc3RhdGljIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RPcGVyYXRpb25Db25kaXRpb25hbD4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzUHJvdG90eXBlPih2bSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PjsKICAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAg
c3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlPih2bSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
PjsKICAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4mJiBp
bXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPihnbG9iYWxPYmplY3QtPnZt
KCkpKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg1NzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFBsdWdp
bkludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOworICAgICAgICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBl
Pih2bSkpIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCShyZXZp
c2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdFBsdWdpbkludGVyZmFj
ZT47CiAgICAgc3RhdGljIEpTVGVzdFBsdWdpbkludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
UGx1Z2luSW50ZXJmYWNlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UGx1Z2lu
SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFBsdWdpbkludGVyZmFj
ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0UGx1Z2luSW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpK
U05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFByb3RvdHlwZT4odm0pKSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBET01XcmFwcGVkID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKICAgICBzdGF0aWMg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlr
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RSZWFkT25seU1h
cExpa2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpT
VGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rl
c3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZT4odm0p
KSBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuaAkocmV2aXNpb24g
Mjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5TWFwTGlrZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RSZWFkT25seU1hcExpa2U+Owog
ICAgIHN0YXRpYyBKU1Rlc3RSZWFkT25seU1hcExpa2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFJlYWRP
bmx5TWFwTGlrZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFJlYWRPbmx5TWFw
TGlrZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RSZWFkT25seU1hcExpa2Uoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFJlYWRPbmx5TWFwTGlrZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0UmVhZE9ubHlNYXBM
aWtlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3Rh
dGljIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVhZE9ubHlT
ZXRMaWtlUHJvdG90eXBlPih2bSkpIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5
U2V0TGlrZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dFJlYWRPbmx5U2V0TGlrZT47CiAgICAgc3RhdGljIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSogY3Jl
YXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0UmVhZE9ubHlTZXRMaWtlPiYmIGltcGwpCiAgICAgewotICAgICAgICBK
U1Rlc3RSZWFkT25seVNldExpa2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0UmVhZE9ubHlTZXRMaWtlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dFJlYWRPbmx5U2V0TGlrZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworICAgICAgICBKU1Rlc3RSZWFkT25seVNldExpa2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVhZE9ubHlTZXRMaWtlPihnbG9iYWxPYmplY3QtPnZtKCkp
KSBKU1Rlc3RSZWFkT25seVNldExpa2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkp
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGU+KHZtKSkgSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmgJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0PjsKICAgICBzdGF0aWMgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+JiYgaW1wbCkKICAgICB7Ci0gICAgICAg
IEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZT4odm0pKSBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
OwogICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKKyAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAg
cmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCShyZXZpc2lvbiAyODU3
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFNldExp
a2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVz
dFNldExpa2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0U2V0TGlrZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFNldExpa2VQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0U2V0TGlrZVByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtl
UHJvdG90eXBlPih2bSkpIEpTVGVzdFNldExpa2VQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNldExpa2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNET01XcmFwcGVyPFRlc3RTZXRMaWtlPjsKICAgICBzdGF0aWMgSlNUZXN0U2V0TGlrZSog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0U2V0TGlrZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0
U2V0TGlrZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRM
aWtlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFNldExpa2Uoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0U2V0TGlrZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtlPihnbG9iYWxP
YmplY3QtPnZtKCkpKSBKU1Rlc3RTZXRMaWtlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxP
YmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zUHJvdG90eXBlPih2bSkpIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjsKICAgICBzdGF0aWMgSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPihn
bG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFN0cmlu
Z2lmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBK
U1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFN0cmlu
Z2lmaWVyUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpT
VGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlPih2bSkpIEpTVGVzdFN0cmluZ2lmaWVy
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllci5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0U3RyaW5naWZpZXI+OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmllciogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0U3RyaW5naWZpZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmlu
Z2lmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmlu
Z2lmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFN0cmlu
Z2lmaWVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmlu
Z2lmaWVyPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RTdHJpbmdpZmllcihzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24uY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvblByb3RvdHlwZT4odm0pKSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uaAkocmV2aXNp
b24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPjsKICAgICBzdGF0aWMgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24qIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbihzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24oc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NTcw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBz
dGF0aWMgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOworICAgICAgICBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGU+KHZtKSkgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
blByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI4
NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24+OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiYmIGltcGwp
CiAgICAgewotICAgICAgICBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAg
ICBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KGdsb2JhbE9i
amVjdC0+dm0oKSkpIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24oc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMuY3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQ
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGU+KHZtKSkgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmgJKHJldmlzaW9uIDI4NTcwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjsKICAgICBzdGF0aWMgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXM+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+
KGdsb2JhbE9iamVjdC0+dm0oKSkpIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRp
YyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGUqIGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1By
b3RvdHlwZT4odm0pKSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuaAko
cmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01XcmFw
cGVyPFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+OwogICAgIHN0YXRpYyBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqIGNyZWF0ZShKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4mJiBpbXBsKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKKyAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3Rh
dGljIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUqIGNyZWF0ZShK
U0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZT4odm0uaGVhcCkpIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlPih2bSkpIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPjsKICAgICBzdGF0
aWMgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPihnbG9iYWxPYmplY3Qt
PnZtKCkpKSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHAJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
UHJvdG90eXBlPih2bSkpIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCShyZXZpc2lvbiAy
ODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+OwogICAgIHN0YXRpYyBKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAg
ICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlPih2bSkpIEpTVGVzdFR5cGVkZWZz
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0VHlwZWRl
ZnM+OwogICAgIHN0YXRpYyBKU1Rlc3RUeXBlZGVmcyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0VHlwZWRl
ZnM+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdFR5cGVkZWZzKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFR5cGVkZWZzPihnbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCkpIEpTVGVzdFR5cGVkZWZzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFR5cGVkZWZzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFR5cGVkZWZzPihnbG9iYWxPYmplY3QtPnZtKCkpKSBKU1Rl
c3RUeXBlZGVmcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lv
biAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBET01XcmFwcGVkID0gV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3RhdGlj
IEpTV29ya2VyR2xvYmFsU2NvcGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiYmIGltcGwsIEpTQzo6SlNQcm94eSog
cHJveHkpCiAgICAgewotICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTV29ya2VyR2xvYmFsU2NvcGU+KHZtLmhlYXApKSBK
U1dvcmtlckdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOworICAgICAg
ICBKU1dvcmtlckdsb2JhbFNjb3BlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTV29ya2VyR2xvYmFsU2NvcGU+KHZtKSkgSlNXb3JrZXJHbG9iYWxTY29wZSh2bSwgc3Ry
dWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
cHJveHkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGlj
IEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBl
Pih2bSkpIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBET01XcmFwcGVkID0gV29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0YXRp
YyBKU1dvcmtsZXRHbG9iYWxTY29wZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWY8V29ya2xldEdsb2JhbFNjb3BlPiYmIGltcGwsIEpTQzo6SlNQcm94
eSogcHJveHkpCiAgICAgewotICAgICAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1dvcmtsZXRHbG9iYWxTY29wZT4odm0uaGVh
cCkpIEpTV29ya2xldEdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1dvcmtsZXRHbG9iYWxTY29wZT4odm0pKSBKU1dvcmtsZXRHbG9iYWxTY29w
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSwgcHJveHkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CiAg
ICAgc3RhdGljIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewotICAgICAgICBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1dvcmtsZXRHbG9iYWxTY29wZVBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTV29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlPih2bSkpIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gMjg1NzA3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhl
IHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2Ug
bmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgogICAg
ICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmU8UnVudGltZUFycmF5PihsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUnVu
dGltZUFycmF5KiBydW50aW1lQXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50
aW1lQXJyYXk+KHZtLmhlYXApKSBSdW50aW1lQXJyYXkodm0sIGRvbVN0cnVjdHVyZSk7CisgICAg
ICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UnVudGltZUFycmF5Pih2bSkpIFJ1bnRpbWVBcnJheSh2bSwgZG9tU3RydWN0dXJlKTsKICAg
ICAgICAgcnVudGltZUFycmF5LT5maW5pc2hDcmVhdGlvbih2bSwgYXJyYXkpOwogICAgICAgICBy
ZXR1cm4gcnVudGltZUFycmF5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVN
ZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPih2bS5oZWFw
KSkgUnVudGltZU1ldGhvZCh2bSwgc3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBSdW50aW1l
TWV0aG9kKiBydW50aW1lTWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGlt
ZU1ldGhvZD4odm0pKSBSdW50aW1lTWV0aG9kKHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZCk7CiAgICAg
ICAgIHJ1bnRpbWVNZXRob2QtPmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJ1bnRpbWVNZXRob2Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgJKHJldmlzaW9uIDI4NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxJbnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1
bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVP
YmplY3Q+KHZtLmhlYXApKSBSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW5z
dGFuY2UpKTsKKyAgICAgICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8UnVudGltZU9iamVjdD4odm0pKSBSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoaW5zdGFuY2UpKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAyODU3MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE9iakNSdW50aW1lT2Jq
ZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPE9iamNJbnN0
YW5jZT4mJiBpbnN0KQogICAgIHsKLSAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkg
T2JqQ1J1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbnN0KSk7CisgICAgICAg
IE9iakNSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxP
YmpDUnVudGltZU9iamVjdD4odm0pKSBPYmpDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBX
VEZNb3ZlKGluc3QpKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyAr
MTc4LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3Ig
ImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgICAgICBPYmpDUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lTWV0aG9kPih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVN
ZXRob2Qodm0sIGRvbVN0cnVjdHVyZSwgbWV0aG9kKTsKKyAgICAgICAgT2JqQ1J1bnRpbWVNZXRo
b2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU1ldGhvZD4odm0pKSBPYmpDUnVudGltZU1ldGhvZCh2bSwgZG9tU3RydWN0dXJlLCBtZXRob2Qp
OwogICAgICAgICBydW50aW1lTWV0aG9kLT5maW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CiAgICAg
ICAgIHJldHVybiBydW50aW1lTWV0aG9kOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAyODU3MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJv
dG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBTdHJ1Y3R1cmUq
IGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wPihleGVjKTsKLSAgICAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBm
YWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09i
amVjdEltcD4odm0uaGVhcCkpIE9iamNGYWxsYmFja09iamVjdEltcChnbG9iYWxPYmplY3QsIGRv
bVN0cnVjdHVyZSwgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIE9iamNGYWxsYmFj
a09iamVjdEltcCogZmFsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxP
YmpjRmFsbGJhY2tPYmplY3RJbXA+KHZtKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGdsb2JhbE9i
amVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZmFs
bGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBmYWxsYmFja09iamVjdDsKICAgICB9Cg==
</data>
<flag name="review"
          id="468948"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="468960"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>