<?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>195039</bug_id>
          
          <creation_ts>2019-02-25 23:49:53 -0800</creation_ts>
          <short_desc>Unpoison MacroAssemblerCodePtr, ClassInfo pointers, and a few other things.</short_desc>
          <delta_ts>2019-02-26 12:51:52 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</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>1509974</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-25 23:49:53 -0800</bug_when>
    <thetext>Removing poisoning code since we no longer do poisoning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509985</commentid>
    <comment_count>1</comment_count>
      <attachid>362970</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 00:19:01 -0800</bug_when>
    <thetext>Created attachment 362970
proposed patch.

Let&apos;s test this on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510031</commentid>
    <comment_count>2</comment_count>
      <attachid>362985</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 07:51:09 -0800</bug_when>
    <thetext>Created attachment 362985
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510109</commentid>
    <comment_count>3</comment_count>
      <attachid>362985</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-26 11:29:32 -0800</bug_when>
    <thetext>Comment on attachment 362985
proposed patch.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510149</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 12:50:36 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r242100: &lt;http://trac.webkit.org/r242100&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510150</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-26 12:51:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/48410737&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362970</attachid>
            <date>2019-02-26 00:19:01 -0800</date>
            <delta_ts>2019-02-26 07:51:09 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195039.patch</filename>
            <type>text/plain</type>
            <size>34681</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyMDc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE5LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
bnBvaXNvbiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIENsYXNzSW5mbyBwb2ludGVycywgYW5kIGEg
ZmV3IG90aGVyIHRoaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDEuIFVucG9pc29uIE1hY3JvQXNzZW1ibGVyQ29kZVB0cnMsIFJldHVybkFkZHJl
c3NQdHIuCisgICAgICAgIDIuIFJlcGxhY2UgUG9pc29uZWRDbGFzc0luZm9QdHIgd2l0aCBDbGFz
c0luZm8qLgorICAgICAgICAzLiBSZXBsYWNlIFBvaXNvbmVkTWFzbVB0ciB3aXRoIGNvbnN0IHZv
aWQqLgorICAgICAgICA0LiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gQ29kZUJsb2NrUG9pc29u
LCBKSVRDb2RlUG9pc29uLCBhbmQgR2xvYmFsRGF0YVBvaXNvbi4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAg
ICAgKGNsYXNzSW5mb1ByaXZhdGUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QdHI6OkZ1bmN0aW9uUHRyKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25QdHI6OmV4ZWN1dGFibGVBZGRyZXNzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25QdHI6OnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MgY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjpSZXR1cm5BZGRyZXNzUHRyKToKKyAgICAg
ICAgKEpTQzo6UmV0dXJuQWRkcmVzc1B0cjo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QdHI8
dGFnPjo6RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OnBvaXNvbmVkUHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9z
LmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdElu
dGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1
bmspOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1N1YkNsYXNzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld1N0cmlu
Z09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
aGVja1N1YkNsYXNzKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVh
bFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1BvaXNvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6
OmNsYXNzSW5mbyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdh
c20vV2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKwog
MjAxOS0wMi0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNvbWUgcmFuZG9tbmVzcyBpbnRvIHRoZSBTdHJ1Y3R1cmVJRC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyNDIwNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIyOCw3ICsy
MjgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogICAgIFdURjo6
UG9pc29uZWRVbmlxdWVQdHI8SlNDYWxsYmFja09iamVjdFBvaXNvbiwgSlNDYWxsYmFja09iamVj
dERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwotICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIG1f
Y2xhc3NJbmZvOworICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm8geyBudWxscHRyIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VsdmluIFcgU2hlcmxvY2sgKGtzaGVy
bG9ja0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NTEsNyArNTUxLDcgQEAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvUHJpdmF0ZQogICAgIGlmICh2bS5jdXJyZW50
bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0ICE9IGpzT2JqZWN0KQogICAgICAgICByZXR1cm4g
anNPYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAKLSAgICByZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1
Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBvaXNvbmVkKCk7CisgICAgcmV0dXJuIHZt
LmN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiB9CiAKIHZvaWQq
IEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKLSNpbmNs
dWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNzQsNyArNzMsNiBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8dm9pZCosIHRhZz4o
dmFsdWUpKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIodmFsdWUp
OwotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7
CiAgICAgICAgIEFTU0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTg3LDcgKzg1LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fdmFsdWUodGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqLCB0YWc+KHZhbHVlKSkKICAgICB7CiAgICAgICAgIGFzc2VydElzTnVs
bE9yQ0Z1bmN0aW9uUHRyKHZhbHVlKTsKLSAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJ
c05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfTlVMTF9PUl9WQUxJRF9DT0RF
X1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMDAsNyArOTcsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8dm9pZCosIHRhZz4odmFsdWUpKQogICAg
IHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIodmFsdWUpOwotICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEx
NCw3ICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8
dm9pZCosIHRhZz4odmFsdWUpKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rp
b25QdHIodmFsdWUpOwotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29u
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTEzMCwxNCArMTI1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFz
bVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIG1fdmFs
dWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8UHRyVGFnIG5ld1RhZz4KICAgICB2b2lkKiByZXRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFz
bVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJldGFn
Q29kZVB0cjx0YWcsIG5ld1RhZz4obV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTIsNyArMTQ1LDYg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBGdW5jdGlvblB0cihjb25zdCBGdW5jdGlvblB0cjxv
dGhlclRhZz4mIG90aGVyKQogICAgICAgICA6IG1fdmFsdWUocmV0YWdDb2RlUHRyPG90aGVyVGFn
LCB0YWc+KG90aGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKQogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
TlVMTF9PUl9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNzksNyAr
MTcxLDYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQdHIoY29uc3Qgdm9p
ZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NywxMyArMTc4LDEx
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRyPHRh
Zz4gZnVuY3Rpb24pCiAgICAgICAgIDogbV92YWx1ZSh1bnRhZ0NvZGVQdHI8dGFnPihmdW5jdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKSkKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBjb25zdCB2b2lkKiB2YWx1ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTIzMSwxMiAr
MjIwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHsKICAgICAgICAgYXNzZXJ0SXNUYWdnZWRX
aXRoKHZhbHVlLCB0YWcpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAg
ICAgICAgQVNTRVJUKHZhbHVlKTsKICNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgQVNTRVJU
KCEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDEpKTsKICNlbmRpZgotICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhj
b25zdCB2b2lkKiB2YWx1ZSkKQEAgLTI0NSw4ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIodmFsdWUpOwogICAgICAgICBhc3NlcnRJc1RhZ2dlZFdp
dGgodmFsdWUsIHRhZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7Ci0g
ICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gUG9pc29uZWRNYXNtUHRyKHZhbHVlKTsKLSAgICAgICAg
cmVzdWx0Lm1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOworICAgICAgICByZXN1bHQubV92YWx1
ZSA9IHZhbHVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjU1LDEyICsy
NDIsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZChyYS52YWx1
ZSgpKTsKICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzUG9pc29uZWQoKTsKLSAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgUG9pc29uZWRNYXNtUHRyIHBvaXNvbmVkUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQotCiAgICAgdGVtcGxhdGU8UHRyVGFnIG5ld1RhZz4KICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8bmV3VGFnPiByZXRhZ2dlZCgpIGNvbnN0CiAgICAgewpAQCAtMjcy
LDIyICsyNTYsMTkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4K
ICAgICBUIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUu
YXNzZXJ0SXNQb2lzb25lZCgpOwotICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNvbmVkPFQ+
KCk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQgdW50YWdnZWRFeGVjdXRhYmxl
QWRkcmVzcygpIGNvbnN0CiAgICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQo
KTsKLSAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPFB0clRhZyBuZXdUYWcsIHR5cGVuYW1lIFQgPSB2b2lkKj4KICAg
ICBUIHJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdAogICAgIHsKLSAgICAgICAgbV92
YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7Ci0gICAgICAgIHJldHVybiByZXRhZ0NvZGVQdHI8VCwg
dGFnLCBuZXdUYWc+KG1fdmFsdWUudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcmV0dXJuIHJldGFn
Q29kZVB0cjxULCB0YWcsIG5ld1RhZz4obV92YWx1ZSk7CiAgICAgfQogCiAjaWYgQ1BVKEFSTV9U
SFVNQjIpCkBAIC0yOTUsNDMgKzI3NiwzMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCA9IHZvaWQqPgogICAgIFQgZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwotICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxUPihtX3ZhbHVlID8gbV92YWx1ZS51bnBvaXNvbmVkPGNoYXIqPigpIC0gMSA6IG51bGxwdHIp
OworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PFQ+KG1fdmFsdWUgPyBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG1fdmFs
dWUpIC0gMSA6IG51bGxwdHIpOwogICAgIH0KICNlbHNlCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPgogICAgIFQgZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1f
dmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gdW50YWdDb2RlUHRyPFQsIHRhZz4obV92YWx1
ZS51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gdW50YWdDb2RlUHRyPFQsIHRhZz4obV92
YWx1ZSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAg
ewotI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgaWYgKCFpc0VtcHR5VmFsdWUo
KSAmJiAhaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lz
b25lZCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKICAgICB9CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEoISp0aGlzKTsgfQogICAgIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIG90aGVyKSBj
b25zdAogICAgIHsKLSNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIGlmICghaXNF
bXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFz
c2VydElzUG9pc29uZWQoKTsKLSAgICAgICAgaWYgKCFvdGhlci5pc0VtcHR5VmFsdWUoKSAmJiAh
b3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVyLm1fdmFsdWUuYXNzZXJ0
SXNQb2lzb25lZCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1f
dmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAo
ZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBzaG91bGQg
YmUgYXNraW5nIGZvciBwb2lzb25lZFB0cigpIG9yIGV4ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGlj
aXRseS4KKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGV4ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGlj
aXRseS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWU+PgogICAgIG9wZXJhdG9yIFQoKSA9IGRl
bGV0ZTsKIApAQCAtMzU2LDE1ICszMjUsMTUgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVlKCk7IH0KICAgICBib29s
IGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBkZWxldGVkVmFsdWUo
KTsgfQogCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIEludEhhc2g8dWludHB0
cl90Pjo6aGFzaChtX3ZhbHVlLmJpdHMoKSk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gUHRySGFzaDxjb25zdCB2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KIAogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUG9pc29uZWRN
YXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIoQWxyZWFkeVBvaXNv
bmVkLCAxKTsgfQotICAgIHN0YXRpYyBQb2lzb25lZE1hc21QdHIgZGVsZXRlZFZhbHVlKCkgeyBy
ZXR1cm4gUG9pc29uZWRNYXNtUHRyKEFscmVhZHlQb2lzb25lZCwgMik7IH0KKyAgICBzdGF0aWMg
Y29uc3Qgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oMXVs
bCk7IH0KKyAgICBzdGF0aWMgY29uc3Qgdm9pZCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0
d2lzZV9jYXN0PHZvaWQqPigydWxsKTsgfQogCi0gICAgUG9pc29uZWRNYXNtUHRyIG1fdmFsdWU7
CisgICAgY29uc3Qgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIHRlbXBsYXRlPFB0
clRhZyB0YWc+CkBAIC00ODgsNyArNDU3LDYgQEAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KIGlubGlu
ZSBGdW5jdGlvblB0cjx0YWc+OjpGdW5jdGlvblB0cihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFn
PiBwdHIpCiAgICAgOiBtX3ZhbHVlKHB0ci5leGVjdXRhYmxlQWRkcmVzcygpKQogewotICAgIFBv
aXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNy
b3MuY3BwCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MDcsMTIgKzUwNyw5IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBpbmRleCA9IHBhcmFtc1swXS5n
cHIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBwb2lzb25TY3JhdGNo
ID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSklUQ29kZVBvaXNvbjo6a2V5KCkpLCBwb2lz
b25TY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgs
IENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnhvcjY0KHBvaXNvblNjcmF0Y2gsIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCwgSlNTd2l0Y2hQdHJUYWcpOwogCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxh
dGVkIGJlZm9yZSBlaXRoZXIgbGF0ZSBwYXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0NjIsMTIgKzEzNDYyLDkgQEAgdm9p
ZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0
YVNlY3Rpb24oc2l6ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFn
PikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFy
YW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAgIEdQUlJlZyBwb2lzb25TY3JhdGNoID0gcGFy
YW1zLmdwU2NyYXRjaCgxKTsKIAogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSklUQ29kZVBvaXNvbjo6a2V5KCkpLCBwb2lzb25T
Y3JhdGNoKTsKICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgo
c2NyYXRjaCwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAg
ICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gsIEIzQ29tcGlsYXRpb25QdHJUYWcpOwogCiAgICAg
ICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDI0MjA3MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC04Nyw3ICs4Nyw2IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFj
a0luT1NSRXhpdENvbXBpbGUKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBTUCBpcyBjb3Jy
ZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgogICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwLCBDb2RlQmxvY2s6OmppdENvZGVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICBqaXQueG9yUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNv
bjo6a2V5KCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEpJVENvZGVUeXBlOjpjb21tb25EYXRhT2Zmc2V0KCkpLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgQ29tbW9uRGF0YTo6ZnJhbWVSZWdpc3RlckNvdW50T2Zmc2V0KCkpLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgLy8gVGhpcyBkb2VzIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1l
UmVnaXN0ZXJDb3VudCAtIDEpKnNpemVvZihSZWdpc3Rlcikgd2hlcmU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjQyMDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNDEsMTAgKzkzNDEsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tTdWJDbGFzCiAKICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUoKm1faml0LnZtKCksIGJhc2VHUFIsIG90aGVyR1BSLCBzcGVjaWZpZWRHUFIpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJl
OjpjbGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BSKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEdsb2JhbERhdGFQb2lz
b246OmtleSgpKSwgc3BlY2lmaWVkR1BSKTsKLSAgICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVk
R1BSLCBvdGhlckdQUik7Ci0jZW5kaWYKICAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZvKCkpLCBzcGVjaWZpZWRHUFIpOwogCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9vcCA9IG1faml0LmxhYmVsKCk7CkBAIC05NjM4LDcg
Kzk2MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2JqCiAgICAg
ICAgIHNsb3dQYXRoKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3Rl
ZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmplY3Q6OmluZm8oKSkuYml0cygp
KSwKKyAgICAgICAgVHJ1c3RlZEltbVB0cihTdHJpbmdPYmplY3Q6OmluZm8oKSksCiAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNs
YXNzSW5mb09mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBtX2ppdC5zdG9yZTY0
KApAQCAtMTA0ODEsNyArMTA0NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUo
Tm9kZSosIEVkCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKAot
ICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJl
ZyBwb2lzb25TY3JhdGNoKQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gpCiB7CiAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVC
bG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgdGFi
bGUuZW5zdXJlQ1RJVGFibGUoKTsKQEAgLTEwNDg5LDE2ICsxMDQ4NSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKAogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKHRhYmxl
LmN0aU9mZnNldHMuc2l6ZSgpKSksCiAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsK
LSAgICBVTlVTRURfUEFSQU0ocG9pc29uU2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBi
dWlsZC4KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpJ
VENvZGVQb2lzb246OmtleSgpKSwgcG9pc29uU2NyYXRjaCk7Ci0jZW5kaWYKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBK
SVRDb21waWxlcjo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgbV9qaXQueG9yNjQocG9pc29uU2NyYXRjaCwgc2NyYXRjaCk7Ci0jZW5kaWYKICAg
ICBtX2ppdC5qdW1wKHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKICAgICBkYXRhLT5kaWRVc2VK
dW1wVGFibGUgPSB0cnVlOwogfQpAQCAtMTA1MDksOCArMTA0OTgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAy
KHRoaXMpOwotICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVt
cC5ncHIoKSwgdGVtcDIuZ3ByKCkpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2
YWx1ZS5ncHIoKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xMDUxOCwxNSArMTA1MDYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoID0gdGVtcC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyID0gdGVtcDIuZ3ByKCk7CiAKICAgICAgICAgdmFsdWUudXNlKCk7CiAKICAgICAgICAgYXV0
byBub3RJbnQzMiA9IG1faml0LmJyYW5jaElmTm90SW50MzIodmFsdWVSZWdzKTsKLSAgICAgICAg
ZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaCwg
c2NyYXRjaDIpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpLCBzY3JhdGNoKTsKICAgICAgICAgbm90SW50MzIubGluaygmbV9qaXQpOwogICAg
ICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIodmFsdWVSZWdzLCBzY3JhdGNo
KSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhzY3JhdGNoKTsKQEAgLTEwNTQ1LDcgKzEwNTMxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEltbShOb2RlKgogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhclN0cmluZ0p1bXAoCi0gICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNjcmF0Y2gyKQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQ
UlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCiB7CiAgICAgYWRkQnJhbmNoKAogICAgICAgICBt
X2ppdC5icmFuY2gzMigKQEAgLTEwNTc2LDcgKzEwNTYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaENoYXJTdHJpbgogICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlKSwgc2NyYXRjaCk7CiAgICAgCiAgICAgcmVhZHkubGluaygmbV9qaXQpOwot
ICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlLCBzY3JhdGNoMik7Cisg
ICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgc2NyYXRjaCwgdmFsdWUpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRh
KQpAQCAtMTA1ODUsMTYgKzEwNTcxLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hDaGFyKE5vZGUKICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogCiAgICAgICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CiAKICAgICAg
ICAgb3AxLnVzZSgpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwg
b3AxR1BSKTsKLSAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQUiwg
dGVtcEdQUiwgdGVtcDJHUFIpOworICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0
YSwgb3AxR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA2MDIsMTEgKzEw
NTg2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogCiAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBv
cDEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwot
ICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKIAogICAgICAgICBvcDEudXNl
KCk7CiAgICAgICAgIApAQCAtMTA2MTQsNyArMTA1OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2gobV9qaXQu
YnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXlsb2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3Vn
aC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0
YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBHUFIsIHRlbXAyR1BSKTsKKyAgICAgICAgZW1p
dFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpLCB0ZW1wR1BS
KTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIz
Niw5ICsxMjM2LDkgQEAgcHVibGljOgogICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQ7CiAgICAg
fTsKICAgICAKLSAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpOworICAgIHZvaWQgZW1pdFN3
aXRjaEludEp1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOwog
ICAgIHZvaWQgZW1pdFN3aXRjaEltbShOb2RlKiwgU3dpdGNoRGF0YSopOwotICAgIHZvaWQgZW1p
dFN3aXRjaENoYXJTdHJpbmdKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpOworICAgIHZvaWQgZW1pdFN3aXRjaENoYXJTdHJpbmdK
dW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKICAgICB2b2lk
IGVtaXRTd2l0Y2hDaGFyKE5vZGUqLCBTd2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0QmluYXJ5
U3dpdGNoU3RyaW5nUmVjdXJzZSgKICAgICAgICAgU3dpdGNoRGF0YSosIGNvbnN0IFZlY3RvcjxT
dHJpbmdTd2l0Y2hDYXNlPiYsIHVuc2lnbmVkIG51bUNoZWNrZWQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNDIwNzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2NDUsNyArNTY0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNlKTsKIAog
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8U3RyaW5nT2Jq
ZWN0PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgbV9v
dXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoUG9pc29uZWRDbGFzc0luZm9QdHIoU3RyaW5n
T2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Rlc3Ry
dWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihTdHJpbmdPYmplY3Q6OmluZm8oKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFw
cy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOwogICAgICAgICBtX291dC5zdG9yZTY0
KHN0cmluZywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTV3JhcHBlck9iamVjdF9pbnRlcm5h
bFZhbHVlKTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKQEAgLTEyMTUzLDgg
KzEyMTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKICAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBs
b2FkU3RydWN0dXJlKGNlbGwpOwotICAgICAgICAgICAgTFZhbHVlIHBvaXNvbmVkQ2xhc3NJbmZv
ID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7
Ci0gICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHBvaXNvbmVkQ2xh
c3NJbmZvLCBtX291dC5jb25zdEludDY0KEdsb2JhbERhdGFQb2lzb246OmtleSgpKSk7CisgICAg
ICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVh
cHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhl
ckF0U3RhcnQgPSBtX291dC5hbmNob3IoY2xhc3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAobG9vcCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5OCw3ICsxNzk4LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpOwogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKLSAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihQb2lz
b25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRzKCkpLCBBZGRyZXNz
KHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7Cisg
ICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5jbGFzc0luZm8oKSksIEFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UoR1BS
UmVnIGJhc2VHUFIsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjQyMDcxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjEzLDEwICsyMTMsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUCiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29k
ZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxs
LgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSklUQ29kZVBvaXNvbjo6a2V5KCkpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0Lnhv
cjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7Ci0jZW5kaWYKIAogICAgIC8vIE1h
a2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQgY29kZS4KICAgICBK
U0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0LmxhYmVsKCkpOwpAQCAtMTI0OCwxMCAr
MTI0NCw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm8KICAgICAg
ICAgR1BSSW5mbzo6cmVnVDApOwogICAgIENDYWxsSGVscGVyczo6SnVtcCBub0NvZGUgPSBqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKTsKICAgICAK
LSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC54b3I2
NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOwotI2VuZGlmCiAgICAgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDAsIEpTRW50cnlQdHJUYWcpOwogICAgIGpp
dC5jYWxsKEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFnKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsOSArMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIExldCdzIGtlZXAgdGhlIGZvbGxv
d2luZyBsaXN0IG9mIHBvaXNvbnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGp1c3Qgc28gaXQncyBl
YXNpZXIgdG8gcmVhZC4KICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BPSVNPTih2KSBcCiAgICAgdihB
cnJheVByb3RvdHlwZSkgXAotICAgIHYoQ29kZUJsb2NrKSBcCi0gICAgdihHbG9iYWxEYXRhKSBc
Ci0gICAgdihKSVRDb2RlKSBcCiAgICAgdihKU0FQSVdyYXBwZXJPYmplY3QpIFwKICAgICB2KEpT
QXJyYXlCdWZmZXIpIFwKICAgICB2KEpTQ2FsbGJhY2tPYmplY3QpIFwKQEAgLTY1LDExICs2Miw2
IEBAIG5hbWVzcGFjZSBKU0MgewogRk9SX0VBQ0hfSlNDX1BPSVNPTihERUNMQVJFX1BPSVNPTikK
ICN1bmRlZiBERUNMQVJFX1BPSVNPTgogCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBQb2lz
b25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPEdsb2JhbERhdGFQb2lzb24sIGNvbnN0IENsYXNz
SW5mbyo+OwotdXNpbmcgUG9pc29uZWRNYXNtUHRyID0gUG9pc29uZWQ8SklUQ29kZVBvaXNvbiwg
Y29uc3Qgdm9pZCo+OwotCiB2b2lkIGluaXRpYWxpemVQb2lzb24oKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLnVucG9pc29uZWQoKTsgfQorICAgIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KICAgICAKICAg
ICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0Rlc3RydWN0aWJsZU9iamVjdCwgbV9jbGFzc0luZm8pOyB9CiAKQEAgLTU2LDcgKzU2
LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQb2lzb25lZENsYXNzSW5m
b1B0ciBtX2NsYXNzSW5mbzsKKyAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAy
NDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlOwogICAgIH0KICAg
ICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NJbmZvLnVucG9pc29uZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSopOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICAKIHByaXZhdGU6CiAgICAgU2VnbWVudGVkVmVj
dG9yPFdyaXRlQmFycmllcjxVbmtub3duPiwgMTY+IG1fdmFyaWFibGVzOwotICAgIFBvaXNvbmVk
Q2xhc3NJbmZvUHRyIG1fY2xhc3NJbmZvOworICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0lu
Zm87CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX2FscmVhZHlEZXN0
cm95ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0byBjaGVjayB0aGF0
IHdlIGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGluIHRoaXMgYmVpbmcg
ZGVzdHJveWVkIG1vcmUgdGhhbiBvbmNlLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5MCw3ICs0
OTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0
YXRlKiwgVk0mLCBKU1N0cmluZyogdmFsdWUsIFByb3BlcnR5U2xvdCB0b1N0cmluZ1RhZ1N5bWJv
bFNsb3QpOwogCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzSW5mby51bnBvaXNvbmVkKCk7IH0KKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKICAgICBzdGF0aWMgcHRyZGlm
Zl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03NjgsNyArNzY4LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKIAot
ICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIG1fY2xhc3NJbmZvOworICAgIGNvbnN0IENsYXNzSW5m
byogbV9jbGFzc0luZm87CiAKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0
aW9uVGFibGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MjQyMDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
bWlzZURlZmVycmVkVGltZXI+IHByb21pc2VEZWZlcnJlZFRpbWVyOwogICAgIAogICAgIEpTQ2Vs
bCogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKLSAgICBQb2lzb25lZENsYXNz
SW5mb1B0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvOworICAg
IGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNz
SW5mbyB7IG51bGxwdHIgfTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2F0b21pY1N0cmlu
Z1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMjgsOCArMTEyOCw2IEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW4KICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDM3NQogICAgICAgICBWYWx1ZSoganVt
cERlc3RpbmF0aW9uID0gaXNFbWJlZGRlckJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywKICAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBpbnN0YW5j
ZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZldhc21Ub0VtYmVk
ZGVyU3R1YihmdW5jdGlvbkluZGV4KSkpOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9pc29u
aW5nKCkpCi0gICAgICAgICAgICBqdW1wRGVzdGluYXRpb24gPSBpc0VtYmVkZGVyQmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRYb3IsIG9yaWdpbigpLCBqdW1wRGVzdGluYXRpb24s
IGlzRW1iZWRkZXJCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgZ19KSVRDb2RlUG9pc29uKSk7CiAKICAgICAgICAgVmFsdWUqIGVtYmVkZGVyQ2FsbFJlc3Vs
dCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIGlzRW1iZWRkZXJC
bG9jaywgb3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAg
Wz1dIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKQEAgLTEzMDgsOCArMTMwNiw2IEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnMKICAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDMy
X3Q+KFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9mRW50cnlwb2ludExvYWRM
b2NhdGlvbigpKSkpOwotICAgIGlmIChPcHRpb25zOjp1c2VQb2lzb25pbmcoKSkKLSAgICAgICAg
Y2FsbGVlQ29kZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0
WG9yLCBvcmlnaW4oKSwgY2FsbGVlQ29kZSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGdfSklUQ29kZVBvaXNvbikpOwogCiAgICAgVHlw
ZSByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGUoKTsKICAgICByZXN1bHQgPSB3YXNt
Q2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgb3Jp
Z2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzgsOCArNzgsNiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAK
ICAgICAvLyBUYWlsIGNhbGwgaW50byB0aGUgY2FsbGVlIFdlYkFzc2VtYmx5IGZ1bmN0aW9uLgog
ICAgIGppdC5sb2FkUHRyKHNjcmF0Y2gsIHNjcmF0Y2gpOwotICAgIGlmIChPcHRpb25zOjp1c2VQ
b2lzb25pbmcoKSkKLSAgICAgICAgaml0LnhvclB0cihKSVQ6OlRydXN0ZWRJbW1QdHIoZ19KSVRD
b2RlUG9pc29uKSwgc2NyYXRjaCk7CiAgICAgaml0Lmp1bXAoc2NyYXRjaCwgV2FzbUVudHJ5UHRy
VGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362985</attachid>
            <date>2019-02-26 07:51:09 -0800</date>
            <delta_ts>2019-02-26 11:29:32 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195039.patch</filename>
            <type>text/plain</type>
            <size>34721</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyMDc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE5LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
bnBvaXNvbiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIENsYXNzSW5mbyBwb2ludGVycywgYW5kIGEg
ZmV3IG90aGVyIHRoaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDEuIFVucG9pc29uIE1hY3JvQXNzZW1ibGVyQ29kZVB0cnMsIFJldHVybkFkZHJl
c3NQdHIuCisgICAgICAgIDIuIFJlcGxhY2UgUG9pc29uZWRDbGFzc0luZm9QdHIgd2l0aCBDbGFz
c0luZm8qLgorICAgICAgICAzLiBSZXBsYWNlIFBvaXNvbmVkTWFzbVB0ciB3aXRoIGNvbnN0IHZv
aWQqLgorICAgICAgICA0LiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gQ29kZUJsb2NrUG9pc29u
LCBKSVRDb2RlUG9pc29uLCBhbmQgR2xvYmFsRGF0YVBvaXNvbi4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAg
ICAgKGNsYXNzSW5mb1ByaXZhdGUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QdHI6OkZ1bmN0aW9uUHRyKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25QdHI6OmV4ZWN1dGFibGVBZGRyZXNzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25QdHI6OnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MgY29uc3QpOgor
ICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjpSZXR1cm5BZGRyZXNzUHRyKToKKyAgICAg
ICAgKEpTQzo6UmV0dXJuQWRkcmVzc1B0cjo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QdHI8
dGFnPjo6RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OnBvaXNvbmVkUHRyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9z
LmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdElu
dGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1
bmspOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1N1YkNsYXNzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld1N0cmlu
Z09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
aGVja1N1YkNsYXNzKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVh
bFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1BvaXNvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6
OmNsYXNzSW5mbyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGwpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdh
c20vV2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKwog
MjAxOS0wMi0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNvbWUgcmFuZG9tbmVzcyBpbnRvIHRoZSBTdHJ1Y3R1cmVJRC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyNDIwNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIyOCw3ICsy
MjgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogICAgIFdURjo6
UG9pc29uZWRVbmlxdWVQdHI8SlNDYWxsYmFja09iamVjdFBvaXNvbiwgSlNDYWxsYmFja09iamVj
dERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwotICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIG1f
Y2xhc3NJbmZvOworICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm8geyBudWxscHRyIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VsdmluIFcgU2hlcmxvY2sgKGtzaGVy
bG9ja0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NTEsNyArNTUxLDcgQEAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvUHJpdmF0ZQogICAgIGlmICh2bS5jdXJyZW50
bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0ICE9IGpzT2JqZWN0KQogICAgICAgICByZXR1cm4g
anNPYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAKLSAgICByZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1
Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBvaXNvbmVkKCk7CisgICAgcmV0dXJuIHZt
LmN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiB9CiAKIHZvaWQq
IEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKLSNpbmNs
dWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNzQsNyArNzMsNiBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8dm9pZCosIHRhZz4o
dmFsdWUpKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIodmFsdWUp
OwotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7
CiAgICAgICAgIEFTU0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTg3LDcgKzg1LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fdmFsdWUodGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqLCB0YWc+KHZhbHVlKSkKICAgICB7CiAgICAgICAgIGFzc2VydElzTnVs
bE9yQ0Z1bmN0aW9uUHRyKHZhbHVlKTsKLSAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJ
c05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfTlVMTF9PUl9WQUxJRF9DT0RF
X1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMDAsNyArOTcsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8dm9pZCosIHRhZz4odmFsdWUpKQogICAg
IHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIodmFsdWUpOwotICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEx
NCw3ICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8
dm9pZCosIHRhZz4odmFsdWUpKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rp
b25QdHIodmFsdWUpOwotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29u
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9OVUxMX09SX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTEzMCwxNCArMTI1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFz
bVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIG1fdmFs
dWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8UHRyVGFnIG5ld1RhZz4KICAgICB2b2lkKiByZXRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFz
bVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJldGFn
Q29kZVB0cjx0YWcsIG5ld1RhZz4obV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTIsNyArMTQ1LDYg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBGdW5jdGlvblB0cihjb25zdCBGdW5jdGlvblB0cjxv
dGhlclRhZz4mIG90aGVyKQogICAgICAgICA6IG1fdmFsdWUocmV0YWdDb2RlUHRyPG90aGVyVGFn
LCB0YWc+KG90aGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKQogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
TlVMTF9PUl9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNzksNyAr
MTcxLDYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQdHIoY29uc3Qgdm9p
ZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NywxMyArMTc4LDEx
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRyPHRh
Zz4gZnVuY3Rpb24pCiAgICAgICAgIDogbV92YWx1ZSh1bnRhZ0NvZGVQdHI8dGFnPihmdW5jdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKSkKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBjb25zdCB2b2lkKiB2YWx1ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTIzMSwxMiAr
MjIwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHsKICAgICAgICAgYXNzZXJ0SXNUYWdnZWRX
aXRoKHZhbHVlLCB0YWcpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAg
ICAgICAgQVNTRVJUKHZhbHVlKTsKICNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgQVNTRVJU
KCEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDEpKTsKICNlbmRpZgotICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhj
b25zdCB2b2lkKiB2YWx1ZSkKQEAgLTI0NSw4ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIodmFsdWUpOwogICAgICAgICBhc3NlcnRJc1RhZ2dlZFdp
dGgodmFsdWUsIHRhZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7Ci0g
ICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gUG9pc29uZWRNYXNtUHRyKHZhbHVlKTsKLSAgICAgICAg
cmVzdWx0Lm1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOworICAgICAgICByZXN1bHQubV92YWx1
ZSA9IHZhbHVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjU1LDEyICsy
NDIsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZChyYS52YWx1
ZSgpKTsKICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzUG9pc29uZWQoKTsKLSAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgUG9pc29uZWRNYXNtUHRyIHBvaXNvbmVkUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQotCiAgICAgdGVtcGxhdGU8UHRyVGFnIG5ld1RhZz4KICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8bmV3VGFnPiByZXRhZ2dlZCgpIGNvbnN0CiAgICAgewpAQCAtMjcy
LDIyICsyNTYsMTkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4K
ICAgICBUIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUu
YXNzZXJ0SXNQb2lzb25lZCgpOwotICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNvbmVkPFQ+
KCk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQgdW50YWdnZWRFeGVjdXRhYmxl
QWRkcmVzcygpIGNvbnN0CiAgICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQo
KTsKLSAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPFB0clRhZyBuZXdUYWcsIHR5cGVuYW1lIFQgPSB2b2lkKj4KICAg
ICBUIHJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdAogICAgIHsKLSAgICAgICAgbV92
YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7Ci0gICAgICAgIHJldHVybiByZXRhZ0NvZGVQdHI8VCwg
dGFnLCBuZXdUYWc+KG1fdmFsdWUudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcmV0dXJuIHJldGFn
Q29kZVB0cjxULCB0YWcsIG5ld1RhZz4obV92YWx1ZSk7CiAgICAgfQogCiAjaWYgQ1BVKEFSTV9U
SFVNQjIpCkBAIC0yOTUsNDMgKzI3NiwzMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCA9IHZvaWQqPgogICAgIFQgZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwotICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxUPihtX3ZhbHVlID8gbV92YWx1ZS51bnBvaXNvbmVkPGNoYXIqPigpIC0gMSA6IG51bGxwdHIp
OworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PFQ+KG1fdmFsdWUgPyBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG1fdmFs
dWUpIC0gMSA6IG51bGxwdHIpOwogICAgIH0KICNlbHNlCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPgogICAgIFQgZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1f
dmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gdW50YWdDb2RlUHRyPFQsIHRhZz4obV92YWx1
ZS51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gdW50YWdDb2RlUHRyPFQsIHRhZz4obV92
YWx1ZSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAg
ewotI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgaWYgKCFpc0VtcHR5VmFsdWUo
KSAmJiAhaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lz
b25lZCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKICAgICB9CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEoISp0aGlzKTsgfQogICAgIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIG90aGVyKSBj
b25zdAogICAgIHsKLSNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIGlmICghaXNF
bXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFz
c2VydElzUG9pc29uZWQoKTsKLSAgICAgICAgaWYgKCFvdGhlci5pc0VtcHR5VmFsdWUoKSAmJiAh
b3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVyLm1fdmFsdWUuYXNzZXJ0
SXNQb2lzb25lZCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1f
dmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAo
ZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBzaG91bGQg
YmUgYXNraW5nIGZvciBwb2lzb25lZFB0cigpIG9yIGV4ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGlj
aXRseS4KKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGV4ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGlj
aXRseS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWU+PgogICAgIG9wZXJhdG9yIFQoKSA9IGRl
bGV0ZTsKIApAQCAtMzU2LDE1ICszMjUsMTUgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVlKCk7IH0KICAgICBib29s
IGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBkZWxldGVkVmFsdWUo
KTsgfQogCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIEludEhhc2g8dWludHB0
cl90Pjo6aGFzaChtX3ZhbHVlLmJpdHMoKSk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gUHRySGFzaDxjb25zdCB2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KIAogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUG9pc29uZWRN
YXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIoQWxyZWFkeVBvaXNv
bmVkLCAxKTsgfQotICAgIHN0YXRpYyBQb2lzb25lZE1hc21QdHIgZGVsZXRlZFZhbHVlKCkgeyBy
ZXR1cm4gUG9pc29uZWRNYXNtUHRyKEFscmVhZHlQb2lzb25lZCwgMik7IH0KKyAgICBzdGF0aWMg
Y29uc3Qgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQorICAgIHN0YXRpYyBjb25zdCB2b2lkKiBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigyKSk7IH0KIAotICAgIFBvaXNvbmVkTWFzbVB0ciBtX3ZhbHVlOworICAgIGNvbnN0IHZvaWQq
IG1fdmFsdWUgeyBudWxscHRyIH07CiB9OwogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgpAQCAtNDg4
LDcgKzQ1Nyw2IEBAIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBpbmxpbmUgRnVuY3Rpb25QdHI8dGFn
Pjo6RnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gcHRyKQogICAgIDogbV92
YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkKIHsKLSAgICBQb2lzb25lZE1hc21QdHI6OmFz
c2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24g
MjQyMDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTA3LDEyICs1MDcsOSBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBHUFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0
Y2goMSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwgcG9pc29uU2NyYXRjaCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
anVtcFRhYmxlKSwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRp
bWVzUHRyKCkpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC54b3I2NChw
b2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhlc2UgbGFiZWxzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHBvcHVsYXRlZCBiZWZvcmUgZWl0aGVy
IGxhdGUgcGF0aHMgb3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZp
c2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEzNDYyLDEyICsxMzQ2Miw5IEBAIHZvaWQgdGVzdEludGVycHJldGVy
KCkKICAgICAgICAgICAgICAgICBwYXJhbXMucHJvYygpLmFkZERhdGFTZWN0aW9uKHNpemVvZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8QjNDb21waWxhdGlvblB0clRhZz4pICogbGFiZWxzLnNpemUo
KSkpOwogCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7
Ci0gICAgICAgICAgICBHUFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7
CiAKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1w
VGFibGUpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwgcG9pc29uU2NyYXRjaCk7CiAgICAgICAg
ICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1sw
XS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAg
ICBqaXQueG9yNjQocG9pc29uU2NyYXRjaCwgc2NyYXRjaCk7CiAgICAgICAgICAgICBqaXQuanVt
cChzY3JhdGNoLCBCM0NvbXBpbGF0aW9uUHRyVGFnKTsKIAogICAgICAgICAgICAgaml0LmFkZExp
bmtUYXNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODcsNyArODcsNiBAQCB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxl
CiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgU1AgaXMgY29ycmVjdCBpbiBjYXNlIG9mIGFu
IGV4Y2VwdGlvbi4KICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2Nr
OjpqaXRDb2RlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnhvclB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihDb2RlQmxvY2tQb2lzb246OmtleSgpKSwgR1BSSW5m
bzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihK
SVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvbW1vbkRh
dGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIC8v
IFRoaXMgZG9lcyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVJlZ2lzdGVyQ291bnQgLSAx
KSpzaXplb2YoUmVnaXN0ZXIpIHdoZXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MzQxLDEwICs5MzQxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNr
U3ViQ2xhcwogCiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBi
YXNlR1BSLCBvdGhlckdQUiwgc3BlY2lmaWVkR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBvdGhlckdQUik7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbV9qaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChHbG9iYWxEYXRhUG9pc29uOjprZXkoKSksIHNwZWNp
ZmllZEdQUik7Ci0gICAgICAgIG1faml0LnhvcjY0KHNwZWNpZmllZEdQUiwgb3RoZXJHUFIpOwot
I2VuZGlmCiAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG5v
ZGUtPmNsYXNzSW5mbygpKSwgc3BlY2lmaWVkR1BSKTsKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIGxvb3AgPSBtX2ppdC5sYWJlbCgpOwpAQCAtOTYzOCw3ICs5NjM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAg
ICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29uZWRD
bGFzc0luZm9QdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksCisgICAgICAgIFRydXN0
ZWRJbW1QdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLAogICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3RvcmU2NCgKQEAgLTEwNDgxLDcgKzEw
NDc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBk
YXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkK
KyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKQogewog
ICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2ppdC5jb2RlQmxvY2soKS0+c3dpdGNoSnVt
cFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgIHRhYmxlLmVuc3VyZUNUSVRhYmxl
KCk7CkBAIC0xMDQ4OSwxNiArMTA0ODUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUo
KSkpLAogICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFN
KHBvaXNvblNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAzMi1iaXQgYnVpbGQuCi0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKSVRDb2RlUG9pc29uOjprZXko
KSksIHBvaXNvblNjcmF0Y2gpOwotI2VuZGlmCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KHRhYmxlLmN0aU9mZnNldHMuYmVnaW4oKSksIHNjcmF0Y2gpOwogICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoLCB2YWx1ZSwgSklUQ29tcGlsZXI6OnRpbWVz
UHRyKCkpLCBzY3JhdGNoKTsKICAgICAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIG1faml0Lnhv
cjY0KHBvaXNvblNjcmF0Y2gsIHNjcmF0Y2gpOwotI2VuZGlmCiAgICAgbV9qaXQuanVtcChzY3Jh
dGNoLCBKU1N3aXRjaFB0clRhZyk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsK
IH0KQEAgLTEwNTA5LDggKzEwNDk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aEltbShOb2RlKgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKLSAgICAgICAg
ZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWUuZ3ByKCksIHRlbXAuZ3ByKCksIHRlbXAyLmdw
cigpKTsKKyAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWUuZ3ByKCksIHRlbXAu
Z3ByKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMTA1MTgsMTUgKzEwNTA2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJ
bW0oTm9kZSoKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgc2Ny
YXRjaCA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHRlbXAyLmdwcigp
OwogCiAgICAgICAgIHZhbHVlLnVzZSgpOwogCiAgICAgICAgIGF1dG8gbm90SW50MzIgPSBtX2pp
dC5icmFuY2hJZk5vdEludDMyKHZhbHVlUmVncyk7Ci0gICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1w
KGRhdGEsIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKKyAgICAg
ICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRj
aCk7CiAgICAgICAgIG5vdEludDMyLmxpbmsoJm1faml0KTsKICAgICAgICAgYWRkQnJhbmNoKG1f
aml0LmJyYW5jaElmTm90TnVtYmVyKHZhbHVlUmVncywgc2NyYXRjaCksIGRhdGEtPmZhbGxUaHJv
dWdoLmJsb2NrKTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CkBA
IC0xMDU0NSw3ICsxMDUzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0o
Tm9kZSoKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1w
KAotICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQ
UlJlZyBzY3JhdGNoMikKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBzY3JhdGNoKQogewogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCkBA
IC0xMDU3Niw3ICsxMDU2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFy
U3RyaW4KICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZSksIHNj
cmF0Y2gpOwogICAgIAogICAgIHJlYWR5LmxpbmsoJm1faml0KTsKLSAgICBlbWl0U3dpdGNoSW50
SnVtcChkYXRhLCBzY3JhdGNoLCB2YWx1ZSwgc2NyYXRjaDIpOworICAgIGVtaXRTd2l0Y2hJbnRK
dW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaENoYXIoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSkKQEAgLTEwNTg1LDE2ICsx
MDU3MSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAg
Y2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKIAogICAgICAgICBHUFJSZWcgb3AxR1BSID0g
b3AxLmdwcigpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgICAg
IEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOwogCiAgICAgICAgIG9wMS51c2UoKTsKIAog
ICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG9wMUdQUik7Ci0gICAgICAg
IGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFHUFIsIHRlbXBHUFIsIHRlbXAyR1BS
KTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQUiwgdGVtcEdQ
Uik7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEwNjAyLDExICsxMDU4Niw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0
aGlzKTsKIAogICAgICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7
CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyR1BSID0gdGVtcDIuZ3ByKCk7CiAKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKQEAg
LTEwNjE0LDcgKzEwNTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIo
Tm9kZQogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90U3RyaW5n
KG9wMVJlZ3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9h
ZEdQUigpLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CisgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CiAgICAgICAgIG5vUmVz
dWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMzYsOSArMTIzNiw5IEBAIHB1
YmxpYzoKICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0OwogICAgIH07CiAgICAgCi0gICAgdm9p
ZCBlbWl0U3dpdGNoSW50SnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgR1BSUmVnIHNjcmF0Y2gyKTsKKyAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRj
aERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKICAgICB2b2lkIGVtaXRTd2l0
Y2hJbW0oTm9kZSosIFN3aXRjaERhdGEqKTsKLSAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNj
cmF0Y2gyKTsKKyAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7CiAgICAgdm9pZCBlbWl0U3dpdGNoQ2hhcihO
b2RlKiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vy
c2UoCiAgICAgICAgIFN3aXRjaERhdGEqLCBjb25zdCBWZWN0b3I8U3RyaW5nU3dpdGNoQ2FzZT4m
LCB1bnNpZ25lZCBudW1DaGVja2VkLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQ1
LDcgKzU2NDUsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93Q2FzZSk7CiAKICAgICAgICAgTFZhbHVlIGZh
c3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PFN0cmluZ09iamVjdD4oc3RydWN0dXJlLCBt
X291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmNvbnN0SW50UHRyKFBvaXNvbmVkQ2xhc3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5i
aXRzKCkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNEZXN0cnVjdGlibGVPYmplY3RfY2xh
c3NJbmZvKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoU3RyaW5n
T2JqZWN0OjppbmZvKCkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNEZXN0cnVjdGlibGVP
YmplY3RfY2xhc3NJbmZvKTsKICAgICAgICAgbV9vdXQuc3RvcmU2NChzdHJpbmcsIGZhc3RSZXN1
bHRWYWx1ZSwgbV9oZWFwcy5KU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSk7CiAgICAgICAg
IG11dGF0b3JGZW5jZSgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7CkBAIC0xMjE1Myw4ICsxMjE1Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwogCiAgICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShjZWxs
KTsKLSAgICAgICAgICAgIExWYWx1ZSBwb2lzb25lZENsYXNzSW5mbyA9IG1fb3V0LmxvYWRQdHIo
c3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pOwotICAgICAgICAgICAgTFZh
bHVlIGNsYXNzSW5mbyA9IG1fb3V0LmJpdFhvcihwb2lzb25lZENsYXNzSW5mbywgbV9vdXQuY29u
c3RJbnQ2NChHbG9iYWxEYXRhUG9pc29uOjprZXkoKSkpOworICAgICAgICAgICAgTFZhbHVlIGNs
YXNzSW5mbyA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9jbGFz
c0luZm8pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3RoZXJBdFN0YXJ0ID0gbV9vdXQu
YW5jaG9yKGNsYXNzSW5mbyk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGxvb3ApOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9u
IDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OTgsNyArMTc5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKICAgICAgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3Q8Q2xhc3NUeXBlPih2bSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0
aCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoUG9pc29uZWRDbGFzc0luZm9QdHIo
c3RydWN0dXJlLT5jbGFzc0luZm8oKSkuYml0cygpKSwgQWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOworICAgICAgICBzdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwg
SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNp
Z25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMywx
MCArMjEzLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVAogICAg
IAogICAgIC8vIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3Jl
IGNvbW1pdHRlZCB0byBtYWtpbmcgYSBmYXN0CiAgICAgLy8gY2FsbC4KLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpJVENvZGVQb2lz
b246OmtleSgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC54b3I2NChHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDQpOwotI2VuZGlmCiAKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBU
aGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCiAgICAgSlNJbnRlcmZhY2VKSVQ6Okxh
YmVsIGNhbGxDb2RlKGppdC5sYWJlbCgpKTsKQEAgLTEyNDgsMTAgKzEyNDQsNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvCiAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCi0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKSVRDb2RlUG9pc29u
OjprZXkoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwKTsKLSNlbmRpZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQs
IEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFnKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpy
ZWdUMCwgSlNFbnRyeVB0clRhZyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDkgKzMyLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAvLyBMZXQncyBrZWVwIHRoZSBmb2xsb3dpbmcgbGlzdCBvZiBwb2lz
b25zIGluIGFscGhhYmV0aWNhbCBvcmRlciBqdXN0IHNvIGl0J3MgZWFzaWVyIHRvIHJlYWQuCiAj
ZGVmaW5lIEZPUl9FQUNIX0pTQ19QT0lTT04odikgXAogICAgIHYoQXJyYXlQcm90b3R5cGUpIFwK
LSAgICB2KENvZGVCbG9jaykgXAotICAgIHYoR2xvYmFsRGF0YSkgXAotICAgIHYoSklUQ29kZSkg
XAogICAgIHYoSlNBUElXcmFwcGVyT2JqZWN0KSBcCiAgICAgdihKU0FycmF5QnVmZmVyKSBcCiAg
ICAgdihKU0NhbGxiYWNrT2JqZWN0KSBcCkBAIC02NSwxMSArNjIsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIEZPUl9FQUNIX0pTQ19QT0lTT04oREVDTEFSRV9QT0lTT04pCiAjdW5kZWYgREVDTEFSRV9Q
T0lTT04KIAotc3RydWN0IENsYXNzSW5mbzsKLQotdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIg
PSBQb2lzb25lZDxHbG9iYWxEYXRhUG9pc29uLCBjb25zdCBDbGFzc0luZm8qPjsKLXVzaW5nIFBv
aXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPEpJVENvZGVQb2lzb24sIGNvbnN0IHZvaWQqPjsKLQog
dm9pZCBpbml0aWFsaXplUG9pc29uKCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oCShyZXZpc2lvbiAyNDIwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAg
fQogCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzSW5mby51bnBvaXNvbmVkKCk7IH0KKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZf
dCBjbGFzc0luZm9PZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNEZXN0cnVjdGli
bGVPYmplY3QsIG1fY2xhc3NJbmZvKTsgfQogCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87
CisgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0u
c2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mby51bnBvaXNvbmVk
KCk7IH0KKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NJbmZvOyB9CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgCiBwcml2YXRlOgogICAgIFNlZ21lbnRlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4sIDE2PiBtX3ZhcmlhYmxlczsKLSAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2Ns
YXNzSW5mbzsKKyAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgIENvbmN1cnJl
bnRKU0xvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9hbHJlYWR5RGVzdHJveWVkIHsgZmFsc2UgfTsg
Ly8gV2UgdXNlIHRoZXNlIGFzc2VydGlvbnMgdG8gY2hlY2sgdGhhdCB3ZSBhcmVuJ3QgZG9pbmcg
YW5jaWVudCBoYWNrcyB0aGF0IHJlc3VsdCBpbiB0aGlzIGJlaW5nIGRlc3Ryb3llZCBtb3JlIHRo
YW4gb25jZS4KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkocmV2aXNpb24gMjQyMDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OTAsNyArNDkwLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSosIFZNJiwgSlNTdHJp
bmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKIAotICAgIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8udW5w
b2lzb25lZCgpOyB9CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzSW5mbzsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9m
ZnNldCgpCiAgICAgewpAQCAtNzY4LDcgKzc2OCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+IG1fbmFtZUluUHJldmlvdXM7CiAKLSAgICBQb2lzb25lZENsYXNz
SW5mb1B0ciBtX2NsYXNzSW5mbzsKKyAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwog
CiAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIG1fdHJhbnNpdGlvblRhYmxlOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw3ICs1
NDYsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VEZWZlcnJlZFRpbWVy
PiBwcm9taXNlRGVmZXJyZWRUaW1lcjsKICAgICAKICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3Ry
dWN0aW5nQ2FsbGJhY2tPYmplY3Q7Ci0gICAgUG9pc29uZWRDbGFzc0luZm9QdHIgY3VycmVudGx5
RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mbzsKKyAgICBjb25zdCBDbGFzc0luZm8q
IGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8geyBudWxscHRyIH07
CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgICBXVEY6
OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNDIwNzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMTI4LDggKzExMjgsNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodWludDMyX3QgZnVuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAzNzUKICAgICAgICAgVmFsdWUqIGp1bXBEZXN0aW5hdGlvbiA9IGlz
RW1iZWRkZXJCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsCiAgICAgICAgICAg
ICBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2Fz
dDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZXYXNtVG9FbWJlZGRlclN0dWIoZnVuY3Rpb25J
bmRleCkpKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvaXNvbmluZygpKQotICAgICAgICAg
ICAganVtcERlc3RpbmF0aW9uID0gaXNFbWJlZGRlckJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgQml0WG9yLCBvcmlnaW4oKSwganVtcERlc3RpbmF0aW9uLCBpc0VtYmVkZGVyQmxvY2st
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGdfSklUQ29kZVBvaXNv
bikpOwogCiAgICAgICAgIFZhbHVlKiBlbWJlZGRlckNhbGxSZXN1bHQgPSB3YXNtQ2FsbGluZ0Nv
bnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBpc0VtYmVkZGVyQmxvY2ssIG9yaWdpbigpLCBh
cmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAgICAgICAgIFs9XSAoUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50KSB7CkBAIC0xMzA4LDggKzEzMDYsNiBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZENhbGxJbmRpcmVjdChjb25zCiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNhbGxh
YmxlRnVuY3Rpb24sCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKLSAg
ICBpZiAoT3B0aW9uczo6dXNlUG9pc29uaW5nKCkpCi0gICAgICAgIGNhbGxlZUNvZGUgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdFhvciwgb3JpZ2luKCksIGNh
bGxlZUNvZGUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCBnX0pJVENvZGVQb2lzb24pKTsKIAogICAgIFR5cGUgcmV0dXJuVHlwZSA9IHNp
Z25hdHVyZS5yZXR1cm5UeXBlKCk7CiAgICAgcmVzdWx0ID0gd2FzbUNhbGxpbmdDb252ZW50aW9u
KCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCBhcmdzLCB0b0Iz
VHlwZShyZXR1cm5UeXBlKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
aW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QmluZGluZy5jcHAJKHJldmlzaW9uIDI0MjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4LDggKzc4LDYgQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeQogCiAgICAgLy8gVGFpbCBjYWxs
IGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlvbi4KICAgICBqaXQubG9hZFB0cihz
Y3JhdGNoLCBzY3JhdGNoKTsKLSAgICBpZiAoT3B0aW9uczo6dXNlUG9pc29uaW5nKCkpCi0gICAg
ICAgIGppdC54b3JQdHIoSklUOjpUcnVzdGVkSW1tUHRyKGdfSklUQ29kZVBvaXNvbiksIHNjcmF0
Y2gpOwogICAgIGppdC5qdW1wKHNjcmF0Y2gsIFdhc21FbnRyeVB0clRhZyk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwo=
</data>
<flag name="review"
          id="379595"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>