<?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>66724</bug_id>
          
          <creation_ts>2011-08-22 15:11:23 -0700</creation_ts>
          <short_desc>Sampling counter support is in the bytecode directory</short_desc>
          <delta_ts>2011-08-22 16:41:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454980</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-22 15:11:23 -0700</bug_when>
    <thetext>Sampling counters are a useful way of doing light-weight profiling in JSC.  For historical reasons, the SamplingCounter classes are in bytecode/SamplingTool.h, even though the SamplingCounter classes have nothing to do with bytecode.  Furthermore, the SamplingTool.h file includes quite a large chunk of the runtime, so attempting to include it in core runtime headers would lead to potentially bad circularity.

This can be solved by moving SamplingCounter into its own header, which lives in runtime and has few dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454988</commentid>
    <comment_count>1</comment_count>
      <attachid>104749</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-22 15:16:39 -0700</bug_when>
    <thetext>Created attachment 104749
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454993</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 15:19:13 -0700</bug_when>
    <thetext>Attachment 104749 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/SamplingCounter.h:84:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/SamplingCounter.h:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/SamplingCounter.h:105:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/SamplingCounter.h:147:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/SamplingCounter.h:148:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455003</commentid>
    <comment_count>3</comment_count>
      <attachid>104754</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-22 15:29:16 -0700</bug_when>
    <thetext>Created attachment 104754
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455052</commentid>
    <comment_count>4</comment_count>
      <attachid>104754</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 16:41:34 -0700</bug_when>
    <thetext>Comment on attachment 104754
the patch (fix style)

Clearing flags on attachment: 104754

Committed r93560: &lt;http://trac.webkit.org/changeset/93560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455053</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 16:41:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104749</attachid>
            <date>2011-08-22 15:16:39 -0700</date>
            <delta_ts>2011-08-22 15:29:16 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>samplingcounter_patch_1.diff</filename>
            <type>text/plain</type>
            <size>24574</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBT
YW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5dGVjb2RlIGRpcmVjdG9yeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY3MjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1vdmVk
IFNhbXBsaW5nQ291bnRlciB0byBhIHNlcGFyYXRlIGhlYWRlciBpbiBydW50aW1lLy4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwOgorICAgICAg
ICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdD
b3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFic3RyYWN0U2FtcGxpbmdDb3VudGVy
OjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nQ291bnRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmFkZHJlc3NPZkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6aW5pdCk6CisgICAgICAgIChKU0M6OlNhbXBs
aW5nQ291bnRlcjo6U2FtcGxpbmdDb3VudGVyKToKKyAgICAgICAgKEpTQzo6R2xvYmFsU2FtcGxp
bmdDb3VudGVyOjpuYW1lKToKKyAgICAgICAgKEpTQzo6RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVy
OjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGFibGVTYW1w
bGluZ0NvdW50ZXI6On5EZWxldGFibGVTYW1wbGluZ0NvdW50ZXIpOgorCiAyMDExLTA4LTIxICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggJ21h
a2UgZGlzdCcgZm9yIFdlYktpdEdUSysuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiw4IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
b3BlSW1wbC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluTWFyay5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIFwKICAgICBydW50
aW1lL1JlZ0V4cENhY2hlLmNwcCBcCiAgICAgcnVudGltZS9Sb3BlSW1wbC5jcHAgXAorICAgIHJ1
bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCBcCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNwcCBc
CiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIFwKICAgICBydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTExMyw2ICsxMTEzLDE0IEBACiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFNjb3BlQ2hhaW5NYXJrLmgiCiAJCQkJPgog
CQkJPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFNhbXBsaW5nQ291
bnRlci5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxT
YW1wbGluZ0NvdW50ZXIuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJ1bnRpbWVcU21hbGxTdHJpbmdzLmNwcCIKIAkJCQk+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksOCBAQAogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyogT3duRmFz
dE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMz
REMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0
cy5jcHAgKi87IH07CiAJCTBGMjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0
NzlCMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKKwkJMEY3NzAw
OTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovOyB9OworCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3Bw
ICovOyB9OwogCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEzRkM2
RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQx
MjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQ
b3NpeC5jcHAgKi87IH07CkBAIC03MzAsNiArNzMyLDggQEAKIAkJMEJERkZBRDQwRkM2MTcxMDAw
RDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFs
TnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY2ltYWxO
dW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc3MDA4RTE0MDJGREQ2
MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9j
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2
NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MzksNiArMTg0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
Rjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKKwkJCQkw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNG
NjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZC
NkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yNDY4LDYgKzI0NzQsNyBAQAogCQkJCTkwRDM0
NjlDMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDU4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQdHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDU5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQdHJIYXNoTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjc3MDA5MDE0MDJGREU0MDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVn
RXhwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAv
KiBSZWdFeHBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQxLDYgKzI4NDgsNyBA
QAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2
MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VD
Mzc2MDA0MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMz
MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAko
cmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDIxICszODcsNCBAQCB2b2lkIFNhbXBs
aW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqKQogCiAjZW5kaWYKIAotdm9pZCBBYnN0cmFjdFNhbXBs
aW5nQ291bnRlcjo6ZHVtcCgpCi17Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQotICAg
IGlmIChzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXJDaGFpbkVuZCkgewotICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBW
YWx1ZXM6XG4iKTsKLSAgICAgICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNv
dW50ZXIgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAm
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291
bnRlci0+bV9uZXh0KQotICAgICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYo
IlxuXG4iKTsKLSAgICB9Ci0gICAgc19jb21wbGV0ZWQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLUFi
c3RyYWN0U2FtcGxpbmdDb3VudGVyIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2Fic3RyYWN0
U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci1BYnN0cmFjdFNhbXBsaW5nQ291bnRlciogQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXI6OnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbiA9ICZzX2Fi
c3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci1ib29sIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyOjpzX2NvbXBsZXRlZCA9IGZhbHNlOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgJKHJldmlzaW9u
IDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJTYW1wbGlu
Z0NvdW50ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMjc5LDE0MyArMjgwLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8gQWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXI6Ci0gICAgLy8KLSAgICAvLyBJbXBsZW1lbnRzIGEgbmFtZWQgc2V0IG9mIGNv
dW50ZXJzLCBwcmludGVkIG9uIGV4aXQgaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKS4KLSAg
ICAvLyBTZWUgc3ViY2xhc3NlcyBiZWxvdywgU2FtcGxpbmdDb3VudGVyLCBHbG9iYWxTYW1wbGlu
Z0NvdW50ZXIgYW5kIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlci4KLSAgICBjbGFzcyBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBEZWxldGFibGVTYW1wbGlu
Z0NvdW50ZXI7Ci0gICAgcHVibGljOgotICAgICAgICB2b2lkIGNvdW50KHVpbnQzMl90IGNvdW50
ID0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb3VudGVyICs9IGNvdW50OwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgZHVtcCgpOwotCi0gICAgICAgIGludDY0X3QqIGFk
ZHJlc3NPZkNvdW50ZXIoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIC8vIEVmZmVjdGl2ZWx5IHRoZSBjb250cnVjdG9yLCBob3dldmVyIGNhbGxlZCBs
YXppbHkgaW4gdGhlIGNhc2Ugb2YgR2xvYmFsU2FtcGxpbmdDb3VudGVyLgotICAgICAgICB2b2lk
IGluaXQoY29uc3QgY2hhciogbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb3VudGVy
ID0gMDsKLSAgICAgICAgICAgIG1fbmFtZSA9IG5hbWU7Ci0KLSAgICAgICAgICAgIC8vIFNldCBt
X25leHQgdG8gcG9pbnQgdG8gdGhlIGhlYWQgb2YgdGhlIGNoYWluLCBhbmQgaW5mb3JtIHdoYXRl
dmVyIGlzCi0gICAgICAgICAgICAvLyBjdXJyZW50bHkgYXQgdGhlIGhlYWQgdGhhdCB0aGlzIG5v
ZGUgd2lsbCBub3cgaG9sZCB0aGUgcG9pbnRlciB0byBpdC4KLSAgICAgICAgICAgIG1fbmV4dCA9
IHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKLSAgICAgICAgICAgIHNfYWJzdHJhY3RT
YW1wbGluZ0NvdW50ZXJDaGFpbi0+bV9yZWZlcmVyID0gJm1fbmV4dDsKLSAgICAgICAgICAgIC8v
IEFkZCB0aGlzIG5vZGUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QuCi0gICAgICAgICAgICBzX2Fi
c3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gPSB0aGlzOwotICAgICAgICAgICAgbV9yZWZlcmVy
ID0gJnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKLSAgICAgICAgfQotCi0gICAgICAg
IGludDY0X3QgbV9jb3VudGVyOwotICAgICAgICBjb25zdCBjaGFyKiBtX25hbWU7Ci0gICAgICAg
IEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBw
b2ludGVyIHRvIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpbiB0aGUgY2hhaW47IHVzZWQgdG8K
LSAgICAgICAgLy8gYWxsb3cgZmFzdCBsaW5rZWQgbGlzdCBkZWxldGlvbi4KLSAgICAgICAgQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7Ci0gICAgICAgIC8vIE51bGwgb2JqZWN0
IHVzZWQgdG8gZGV0ZWN0IGVuZCBvZiBzdGF0aWMgY2hhaW4uCi0gICAgICAgIHN0YXRpYyBBYnN0
cmFjdFNhbXBsaW5nQ291bnRlciBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci0g
ICAgICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluOwotICAgICAgICBzdGF0aWMgYm9vbCBzX2NvbXBsZXRlZDsKLSAgICB9Owot
Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQotICAgIC8vIFNhbXBsaW5nQ291bnRlcjoK
LSAgICAvLwotICAgIC8vIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUgYW5kIChob3BlZnVsbHkhKSBj
b252ZW5pZW50IGZvciBjYXNlcyB3aGVyZSBhIGNvdW50ZXIgaXMKLSAgICAvLyByZXF1aXJlZCB3
aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2luZ2xlIGZ1bmN0aW9uLiAgSXQgY2FuIGJlIGluc3RhbnRp
YXRlZCBhcyBhCi0gICAgLy8gc3RhdGljIHZhcmlhYmxlIHNpbmNlIGl0IGNvbnRhaW5zIGEgY29u
c3RydWN0b3IgYnV0IG5vdCBhIGRlc3RydWN0b3IgKHN0YXRpYwotICAgIC8vIHZhcmlhYmxlcyBp
biBXZWJLaXQgY2Fubm90IGhhdmUgZGVzdHJ1Y3RvcnMpLgotICAgIC8vCi0gICAgLy8gRm9yIGV4
YW1wbGU6Ci0gICAgLy8KLSAgICAvLyB2b2lkIHNvbWVGdW5jdGlvbigpCi0gICAgLy8gewotICAg
IC8vICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50TWUoIlRoaXMgaXMgbXkgY291bnRl
ci4gIFRoZXJlIGFyZSBtYW55IGxpa2UgaXQsIGJ1dCB0aGlzIG9uZSBpcyBtaW5lLiIpOwotICAg
IC8vICAgICBjb3VudE1lLmNvdW50KCk7Ci0gICAgLy8gICAgIC8vIC4uLgotICAgIC8vIH0KLSAg
ICAvLwotICAgIGNsYXNzIFNhbXBsaW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5n
Q291bnRlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTYW1wbGluZ0NvdW50ZXIoY29uc3QgY2hh
ciogbmFtZSkgeyBpbml0KG5hbWUpOyB9Ci0gICAgfTsKLQotICAgIC8vIEdsb2JhbFNhbXBsaW5n
Q291bnRlcjoKLSAgICAvLwotICAgIC8vIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUgZm9yIHVzZSB3
aGVyZSBhIGNvdW50ZXIgaXMgdG8gYmUgZGVjbGFyZWQgZ2xvYmFsbHksCi0gICAgLy8gc2luY2Ug
aXQgY29udGFpbnMgbmVpdGhlciBhIGNvbnN0cnVjdG9yIG5vciBkZXN0cnVjdG9yLiAgSW5zdGVh
ZCwgZW5zdXJlCi0gICAgLy8gdGhhdCAnbmFtZSgpJyBpcyBjYWxsZWQgdG8gcHJvdmlkZSB0aGUg
Y291bnRlciB3aXRoIGEgbmFtZSAoYW5kIGFsc28gdG8KLSAgICAvLyBhbGxvdyBpdCB0byBiZSBw
cmludGVkIG91dCBvbiBleGl0KS4KLSAgICAvLwotICAgIC8vIEdsb2JhbFNhbXBsaW5nQ291bnRl
ciBnbG9iYWxDb3VudGVyOwotICAgIC8vCi0gICAgLy8gdm9pZCBmaXJzdEZ1bmN0aW9uKCkKLSAg
ICAvLyB7Ci0gICAgLy8gICAgIC8vIFB1dCB0aGlzIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgaXMg
ZGVmaW5pdGVseSBjYWxsZWQhCi0gICAgLy8gICAgIC8vIChPciBhbHRlcm5hdGl2ZWx5IGFsb25n
c2lkZSBhbGwgY2FsbHMgdG8gJ2NvdW50KCknKS4KLSAgICAvLyAgICAgZ2xvYmFsQ291bnRlci5u
YW1lKCJJIE5hbWUgWW91IERlc3Ryb3llci4iKTsKLSAgICAvLyAgICAgZ2xvYmFsQ291bnRlci5j
b3VudCgpOwotICAgIC8vICAgICAvLyAuLi4KLSAgICAvLyB9Ci0gICAgLy8KLSAgICAvLyB2b2lk
IHNlY29uZEZ1bmN0aW9uKCkKLSAgICAvLyB7Ci0gICAgLy8gICAgIGdsb2JhbENvdW50ZXIuY291
bnQoKTsKLSAgICAvLyAgICAgLy8gLi4uCi0gICAgLy8gfQotICAgIC8vCi0gICAgY2xhc3MgR2xv
YmFsU2FtcGxpbmdDb3VudGVyIDogcHVibGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgbmFtZShjb25zdCBjaGFyKiBuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBHbG9iYWwgb2JqZWN0cyBzaG91bGQgYmUgbWFwcGVkIGluIHplcm8g
ZmlsbGVkIG1lbW9yeSwgc28gdGhpcyBzaG91bGQKLSAgICAgICAgICAgIC8vIGJlIGEgc2FmZSAo
YWxiZWl0IG5vdCBuZWNlc3NhcmlseSB0aHJlYWRzYWZlKSBjaGVjayBmb3IgJ2ZpcnN0IGNhbGwn
LgotICAgICAgICAgICAgaWYgKCFtX25leHQpCi0gICAgICAgICAgICAgICAgaW5pdChuYW1lKTsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6Ci0g
ICAgLy8KLSAgICAvLyBUaGUgYWJvdmUgY2xhc3NlcyAoU2FtcGxpbmdDb3VudGVyLCBHbG9iYWxT
YW1wbGluZ0NvdW50ZXIpLCBhcmUgaW50ZW5kZWQgZm9yCi0gICAgLy8gdXNlIHdpdGhpbiBhIGds
b2JhbCBvciBzdGF0aWMgc2NvcGUsIGFuZCBhcyBzdWNoIGNhbm5vdCBoYXZlIGEgZGVzdHJ1Y3Rv
ci4KLSAgICAvLyBUaGlzIG1lYW5zIHRoZXJlIGlzIG5vIGNvbnZlbmllbnQgd2F5IGZvciB0aGVt
IHRvIHJlbW92ZSB0aGVtc2VsdmVzIGZyb20gdGhlCi0gICAgLy8gc3RhdGljIGxpc3Qgb2YgY291
bnRlcnMsIGFuZCBzaG91bGQgYW4gaW5zdGFuY2Ugb2YgZWl0aGVyIGNsYXNzIGJlIGZyZWVkCi0g
ICAgLy8gYmVmb3JlICdkdW1wKCknIGhhcyB3YWxrZWQgb3ZlciB0aGUgbGlzdCBpdCB3aWxsIHBv
dGVudGlhbGx5IHdhbGsgb3ZlciBhbgotICAgIC8vIGludmFsaWQgcG9pbnRlci4KLSAgICAvLwot
ICAgIC8vIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVyZSB0aGUgY291bnRlciBt
YXkgcG9zc2libHkgYmUgZGVsZXRlZCBiZWZvcmUKLSAgICAvLyB0aGUgcHJvZ3JhbSBleGl0cy4g
IFNob3VsZCB0aGlzIG9jY3VyLCB0aGUgY291bnRlciB3aWxsIHByaW50IGl0J3MgdmFsdWUgdG8K
LSAgICAvLyBzdGRlcnIsIGFuZCByZW1vdmUgaXRzZWxmIGZyb20gdGhlIHN0YXRpYyBsaXN0LiAg
RXhhbXBsZToKLSAgICAvLwotICAgIC8vIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlciogY291bnRl
ciA9IG5ldyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoIlRoZSBDb3VudGVyIFdpdGggTm8gTmFt
ZSIpOwotICAgIC8vIGNvdW50ZXItPmNvdW50KCk7Ci0gICAgLy8gZGVsZXRlIGNvdW50ZXI7Ci0g
ICAgLy8KLSAgICBjbGFzcyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgOiBwdWJsaWMgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRhYmxlU2FtcGxp
bmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgaW5pdChuYW1lKTsgfQotCi0gICAgICAgIH5E
ZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNf
Y29tcGxldGVkKQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRGVsZXRhYmxlU2Ft
cGxpbmdDb3VudGVyIFwiJXNcIiBkZWxldGVkIGVhcmx5ICh3aXRoIGNvdW50ICVsbGQpXG4iLCBt
X25hbWUsIG1fY291bnRlcik7Ci0gICAgICAgICAgICAvLyBPdXIgbV9yZWZlcmVyIHBvaW50ZXIg
c2hvdWxkIGtub3cgd2hlcmUgdGhlIHBvaW50ZXIgdG8gdGhpcyBub2RlIGlzLAotICAgICAgICAg
ICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUgcHJldmlv
dXMgbm9kZSBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIEFTU0VSVCgqbV9yZWZlcmVyID09IHRo
aXMpOwotICAgICAgICAgICAgQVNTRVJUKG1fbmV4dC0+bV9yZWZlcmVyID09ICZtX25leHQpOwot
ICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgbm9kZSBmcm9tIHRoZSBsaXN0LCBhbmQgaW5mb3Jt
IG1fbmV4dCB0aGF0IHdlIGhhdmUgZG9uZSBzby4KLSAgICAgICAgICAgIG1fbmV4dC0+bV9yZWZl
cmVyID0gbV9yZWZlcmVyOwotICAgICAgICAgICAgKm1fcmVmZXJlciA9IG1fbmV4dDsKLSAgICAg
ICAgfQotICAgIH07Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBT
YW1wbGluZ1Rvb2xfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxp
bmdDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ0NvdW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgp
Cit7CisjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQorICAgIGlmIChzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZCkg
eworICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBWYWx1ZXM6XG4iKTsKKyAgICAg
ICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNvdW50ZXIgPSBzX2Fic3RyYWN0
U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAmc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291bnRlci0+bV9uZXh0KQorICAg
ICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJDb3VudGVyLT5tX25hbWUsIGN1
cnJDb3VudGVyLT5tX2NvdW50ZXIpOworICAgICAgICBwcmludGYoIlxuXG4iKTsKKyAgICB9Cisg
ICAgc19jb21wbGV0ZWQgPSB0cnVlOworI2VuZGlmCit9CisKK0Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hh
aW5FbmQ7CitBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6
OnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbiA9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyQ2hhaW5FbmQ7Citib29sIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2NvbXBsZXRlZCA9
IGZhbHNlOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2FtcGxpbmdDb3VudGVyX2gKKyNkZWZpbmUgU2Ft
cGxpbmdDb3VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCisvLyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBJbXBsZW1lbnRz
IGEgbmFtZWQgc2V0IG9mIGNvdW50ZXJzLCBwcmludGVkIG9uIGV4aXQgaWYgRU5BQkxFKFNBTVBM
SU5HX0NPVU5URVJTKS4KKy8vIFNlZSBzdWJjbGFzc2VzIGJlbG93LCBTYW1wbGluZ0NvdW50ZXIs
IEdsb2JhbFNhbXBsaW5nQ291bnRlciBhbmQgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyLgorY2xh
c3MgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgeworICAgIGZyaWVuZCBjbGFzcyBEZWxldGFibGVT
YW1wbGluZ0NvdW50ZXI7CitwdWJsaWM6CisgICAgdm9pZCBjb3VudCh1aW50MzJfdCBjb3VudCA9
IDEpCisgICAgeworICAgICAgICBtX2NvdW50ZXIgKz0gY291bnQ7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgZHVtcCgpOworCisgICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigpIHsgcmV0
dXJuICZtX2NvdW50ZXI7IH0KKworcHJvdGVjdGVkOgorICAgIC8vIEVmZmVjdGl2ZWx5IHRoZSBj
b250cnVjdG9yLCBob3dldmVyIGNhbGxlZCBsYXppbHkgaW4gdGhlIGNhc2Ugb2YgR2xvYmFsU2Ft
cGxpbmdDb3VudGVyLgorICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAg
ICAgICAgbV9jb3VudGVyID0gMDsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsKKworICAgICAgICAv
LyBTZXQgbV9uZXh0IHRvIHBvaW50IHRvIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiwgYW5kIGluZm9y
bSB3aGF0ZXZlciBpcworICAgICAgICAvLyBjdXJyZW50bHkgYXQgdGhlIGhlYWQgdGhhdCB0aGlz
IG5vZGUgd2lsbCBub3cgaG9sZCB0aGUgcG9pbnRlciB0byBpdC4KKyAgICAgICAgbV9uZXh0ID0g
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOworICAgICAgICBzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW4tPm1fcmVmZXJlciA9ICZtX25leHQ7CisgICAgICAgIC8vIEFkZCB0aGlz
IG5vZGUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QuCisgICAgICAgIHNfYWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXJDaGFpbiA9IHRoaXM7CisgICAgICAgIG1fcmVmZXJlciA9ICZzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW47CisgICAgfQorCisgICAgaW50NjRfdCBtX2NvdW50ZXI7CisgICAg
Y29uc3QgY2hhciogbV9uYW1lOworICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7
CisgICAgLy8gVGhpcyBpcyBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgdG8gdGhpcyBub2RlIGlu
IHRoZSBjaGFpbjsgdXNlZCB0bworICAgIC8vIGFsbG93IGZhc3QgbGlua2VkIGxpc3QgZGVsZXRp
b24uCisgICAgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7CisgICAgLy8gTnVs
bCBvYmplY3QgdXNlZCB0byBkZXRlY3QgZW5kIG9mIHN0YXRpYyBjaGFpbi4KKyAgICBzdGF0aWMg
QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5k
OworICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluOworICAgIHN0YXRpYyBib29sIHNfY29tcGxldGVkOworfTsKKworI2lmIEVO
QUJMRShTQU1QTElOR19DT1VOVEVSUykKKy8vIFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBUaGlz
IGNsYXNzIGlzIHN1aXRhYmxlIGFuZCAoaG9wZWZ1bGx5ISkgY29udmVuaWVudCBmb3IgY2FzZXMg
d2hlcmUgYSBjb3VudGVyIGlzCisvLyByZXF1aXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2lu
Z2xlIGZ1bmN0aW9uLiAgSXQgY2FuIGJlIGluc3RhbnRpYXRlZCBhcyBhCisvLyBzdGF0aWMgdmFy
aWFibGUgc2luY2UgaXQgY29udGFpbnMgYSBjb25zdHJ1Y3RvciBidXQgbm90IGEgZGVzdHJ1Y3Rv
ciAoc3RhdGljCisvLyB2YXJpYWJsZXMgaW4gV2ViS2l0IGNhbm5vdCBoYXZlIGRlc3RydWN0b3Jz
KS4KKy8vCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyB2b2lkIHNvbWVGdW5jdGlvbigpCisvLyB7
CisvLyAgICAgc3RhdGljIFNhbXBsaW5nQ291bnRlciBjb3VudE1lKCJUaGlzIGlzIG15IGNvdW50
ZXIuICBUaGVyZSBhcmUgbWFueSBsaWtlIGl0LCBidXQgdGhpcyBvbmUgaXMgbWluZS4iKTsKKy8v
ICAgICBjb3VudE1lLmNvdW50KCk7CisvLyAgICAgLy8gLi4uCisvLyB9CisvLworY2xhc3MgU2Ft
cGxpbmdDb3VudGVyIDogcHVibGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHsKK3B1YmxpYzoK
KyAgICBTYW1wbGluZ0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyBpbml0KG5hbWUpOyB9Cit9
OworCisvLyBHbG9iYWxTYW1wbGluZ0NvdW50ZXI6CisvLworLy8gVGhpcyBjbGFzcyBpcyBzdWl0
YWJsZSBmb3IgdXNlIHdoZXJlIGEgY291bnRlciBpcyB0byBiZSBkZWNsYXJlZCBnbG9iYWxseSwK
Ky8vIHNpbmNlIGl0IGNvbnRhaW5zIG5laXRoZXIgYSBjb25zdHJ1Y3RvciBub3IgZGVzdHJ1Y3Rv
ci4gIEluc3RlYWQsIGVuc3VyZQorLy8gdGhhdCAnbmFtZSgpJyBpcyBjYWxsZWQgdG8gcHJvdmlk
ZSB0aGUgY291bnRlciB3aXRoIGEgbmFtZSAoYW5kIGFsc28gdG8KKy8vIGFsbG93IGl0IHRvIGJl
IHByaW50ZWQgb3V0IG9uIGV4aXQpLgorLy8KKy8vIEdsb2JhbFNhbXBsaW5nQ291bnRlciBnbG9i
YWxDb3VudGVyOworLy8KKy8vIHZvaWQgZmlyc3RGdW5jdGlvbigpCisvLyB7CisvLyAgICAgLy8g
UHV0IHRoaXMgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBpcyBkZWZpbml0ZWx5IGNhbGxlZCEKKy8v
ICAgICAvLyAoT3IgYWx0ZXJuYXRpdmVseSBhbG9uZ3NpZGUgYWxsIGNhbGxzIHRvICdjb3VudCgp
JykuCisvLyAgICAgZ2xvYmFsQ291bnRlci5uYW1lKCJJIE5hbWUgWW91IERlc3Ryb3llci4iKTsK
Ky8vICAgICBnbG9iYWxDb3VudGVyLmNvdW50KCk7CisvLyAgICAgLy8gLi4uCisvLyB9CisvLwor
Ly8gdm9pZCBzZWNvbmRGdW5jdGlvbigpCisvLyB7CisvLyAgICAgZ2xvYmFsQ291bnRlci5jb3Vu
dCgpOworLy8gICAgIC8vIC4uLgorLy8gfQorLy8KK2NsYXNzIEdsb2JhbFNhbXBsaW5nQ291bnRl
ciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7CitwdWJsaWM6CisgICAgdm9pZCBu
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICAvLyBHbG9iYWwgb2JqZWN0cyBz
aG91bGQgYmUgbWFwcGVkIGluIHplcm8gZmlsbGVkIG1lbW9yeSwgc28gdGhpcyBzaG91bGQKKyAg
ICAgICAgLy8gYmUgYSBzYWZlIChhbGJlaXQgbm90IG5lY2Vzc2FyaWx5IHRocmVhZHNhZmUpIGNo
ZWNrIGZvciAnZmlyc3QgY2FsbCcuCisgICAgICAgIGlmICghbV9uZXh0KQorICAgICAgICAgICAg
aW5pdChuYW1lKTsKKyAgICB9Cit9OworCisvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6Cisv
LworLy8gVGhlIGFib3ZlIGNsYXNzZXMgKFNhbXBsaW5nQ291bnRlciwgR2xvYmFsU2FtcGxpbmdD
b3VudGVyKSwgYXJlIGludGVuZGVkIGZvcgorLy8gdXNlIHdpdGhpbiBhIGdsb2JhbCBvciBzdGF0
aWMgc2NvcGUsIGFuZCBhcyBzdWNoIGNhbm5vdCBoYXZlIGEgZGVzdHJ1Y3Rvci4KKy8vIFRoaXMg
bWVhbnMgdGhlcmUgaXMgbm8gY29udmVuaWVudCB3YXkgZm9yIHRoZW0gdG8gcmVtb3ZlIHRoZW1z
ZWx2ZXMgZnJvbSB0aGUKKy8vIHN0YXRpYyBsaXN0IG9mIGNvdW50ZXJzLCBhbmQgc2hvdWxkIGFu
IGluc3RhbmNlIG9mIGVpdGhlciBjbGFzcyBiZSBmcmVlZAorLy8gYmVmb3JlICdkdW1wKCknIGhh
cyB3YWxrZWQgb3ZlciB0aGUgbGlzdCBpdCB3aWxsIHBvdGVudGlhbGx5IHdhbGsgb3ZlciBhbgor
Ly8gaW52YWxpZCBwb2ludGVyLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVz
ZSB3aGVyZSB0aGUgY291bnRlciBtYXkgcG9zc2libHkgYmUgZGVsZXRlZCBiZWZvcmUKKy8vIHRo
ZSBwcm9ncmFtIGV4aXRzLiAgU2hvdWxkIHRoaXMgb2NjdXIsIHRoZSBjb3VudGVyIHdpbGwgcHJp
bnQgaXQncyB2YWx1ZSB0bworLy8gc3RkZXJyLCBhbmQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoZSBz
dGF0aWMgbGlzdC4gIEV4YW1wbGU6CisvLworLy8gRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKiBj
b3VudGVyID0gbmV3IERlbGV0YWJsZVNhbXBsaW5nQ291bnRlcigiVGhlIENvdW50ZXIgV2l0aCBO
byBOYW1lIik7CisvLyBjb3VudGVyLT5jb3VudCgpOworLy8gZGVsZXRlIGNvdW50ZXI7CisvLwor
Y2xhc3MgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyIDogcHVibGljIEFic3RyYWN0U2FtcGxpbmdD
b3VudGVyIHsKK3B1YmxpYzoKKyAgICBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoY29uc3QgY2hh
ciogbmFtZSkgeyBpbml0KG5hbWUpOyB9CisKKyAgICB+RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVy
KCkKKyAgICB7CisgICAgICAgIGlmICghc19jb21wbGV0ZWQpCisgICAgICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlciBcIiVzXCIgZGVsZXRlZCBlYXJseSAo
d2l0aCBjb3VudCAlbGxkKVxuIiwgbV9uYW1lLCBtX2NvdW50ZXIpOworICAgICAgICAvLyBPdXIg
bV9yZWZlcmVyIHBvaW50ZXIgc2hvdWxkIGtub3cgd2hlcmUgdGhlIHBvaW50ZXIgdG8gdGhpcyBu
b2RlIGlzLAorICAgICAgICAvLyBhbmQgbV9uZXh0IHNob3VsZCBrbm93IHRoYXQgdGhpcyBub2Rl
IGlzIHRoZSBwcmV2aW91cyBub2RlIGluIHRoZSBsaXN0LgorICAgICAgICBBU1NFUlQoKm1fcmVm
ZXJlciA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKG1fbmV4dC0+bV9yZWZlcmVyID09ICZtX25l
eHQpOworICAgICAgICAvLyBSZW1vdmUgdGhpcyBub2RlIGZyb20gdGhlIGxpc3QsIGFuZCBpbmZv
cm0gbV9uZXh0IHRoYXQgd2UgaGF2ZSBkb25lIHNvLgorICAgICAgICBtX25leHQtPm1fcmVmZXJl
ciA9IG1fcmVmZXJlcjsKKyAgICAgICAgKm1fcmVmZXJlciA9IG1fbmV4dDsKKyAgICB9Cit9Owor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU2FtcGxpbmdDb3VudGVy
X2gKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104754</attachid>
            <date>2011-08-22 15:29:16 -0700</date>
            <delta_ts>2011-08-22 16:41:34 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>samplingcounter_patch_2.diff</filename>
            <type>text/plain</type>
            <size>24569</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBT
YW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5dGVjb2RlIGRpcmVjdG9yeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY3MjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1vdmVk
IFNhbXBsaW5nQ291bnRlciB0byBhIHNlcGFyYXRlIGhlYWRlciBpbiBydW50aW1lLy4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwOgorICAgICAg
ICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdD
b3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFic3RyYWN0U2FtcGxpbmdDb3VudGVy
OjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nQ291bnRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmFkZHJlc3NPZkNvdW50ZXIpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6aW5pdCk6CisgICAgICAgIChKU0M6OlNhbXBs
aW5nQ291bnRlcjo6U2FtcGxpbmdDb3VudGVyKToKKyAgICAgICAgKEpTQzo6R2xvYmFsU2FtcGxp
bmdDb3VudGVyOjpuYW1lKToKKyAgICAgICAgKEpTQzo6RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVy
OjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGFibGVTYW1w
bGluZ0NvdW50ZXI6On5EZWxldGFibGVTYW1wbGluZ0NvdW50ZXIpOgorCiAyMDExLTA4LTIxICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggJ21h
a2UgZGlzdCcgZm9yIFdlYktpdEdUSysuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiw4IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
b3BlSW1wbC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluTWFyay5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIFwKICAgICBydW50
aW1lL1JlZ0V4cENhY2hlLmNwcCBcCiAgICAgcnVudGltZS9Sb3BlSW1wbC5jcHAgXAorICAgIHJ1
bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCBcCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNwcCBc
CiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIFwKICAgICBydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTExMyw2ICsxMTEzLDE0IEBACiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFNjb3BlQ2hhaW5NYXJrLmgiCiAJCQkJPgog
CQkJPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFNhbXBsaW5nQ291
bnRlci5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxT
YW1wbGluZ0NvdW50ZXIuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJ1bnRpbWVcU21hbGxTdHJpbmdzLmNwcCIKIAkJCQk+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksOCBAQAogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyogT3duRmFz
dE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMz
REMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0
cy5jcHAgKi87IH07CiAJCTBGMjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0
NzlCMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKKwkJMEY3NzAw
OTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovOyB9OworCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3Bw
ICovOyB9OwogCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEzRkM2
RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQx
MjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQ
b3NpeC5jcHAgKi87IH07CkBAIC03MzAsNiArNzMyLDggQEAKIAkJMEJERkZBRDQwRkM2MTcxMDAw
RDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFs
TnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY2ltYWxO
dW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc3MDA4RTE0MDJGREQ2
MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9j
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2
NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MzksNiArMTg0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
Rjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKKwkJCQkw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNG
NjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZC
NkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yNDY4LDYgKzI0NzQsNyBAQAogCQkJCTkwRDM0
NjlDMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDU4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQdHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDU5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQdHJIYXNoTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjc3MDA5MDE0MDJGREU0MDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVn
RXhwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAv
KiBSZWdFeHBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQxLDYgKzI4NDgsNyBA
QAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2
MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VD
Mzc2MDA0MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMz
MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAko
cmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDIxICszODcsNCBAQCB2b2lkIFNhbXBs
aW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqKQogCiAjZW5kaWYKIAotdm9pZCBBYnN0cmFjdFNhbXBs
aW5nQ291bnRlcjo6ZHVtcCgpCi17Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQotICAg
IGlmIChzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXJDaGFpbkVuZCkgewotICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBW
YWx1ZXM6XG4iKTsKLSAgICAgICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNv
dW50ZXIgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAm
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291
bnRlci0+bV9uZXh0KQotICAgICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYo
IlxuXG4iKTsKLSAgICB9Ci0gICAgc19jb21wbGV0ZWQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLUFi
c3RyYWN0U2FtcGxpbmdDb3VudGVyIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2Fic3RyYWN0
U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci1BYnN0cmFjdFNhbXBsaW5nQ291bnRlciogQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXI6OnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbiA9ICZzX2Fi
c3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci1ib29sIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyOjpzX2NvbXBsZXRlZCA9IGZhbHNlOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgJKHJldmlzaW9u
IDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJTYW1wbGlu
Z0NvdW50ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMjc5LDE0MyArMjgwLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8gQWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXI6Ci0gICAgLy8KLSAgICAvLyBJbXBsZW1lbnRzIGEgbmFtZWQgc2V0IG9mIGNv
dW50ZXJzLCBwcmludGVkIG9uIGV4aXQgaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKS4KLSAg
ICAvLyBTZWUgc3ViY2xhc3NlcyBiZWxvdywgU2FtcGxpbmdDb3VudGVyLCBHbG9iYWxTYW1wbGlu
Z0NvdW50ZXIgYW5kIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlci4KLSAgICBjbGFzcyBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBEZWxldGFibGVTYW1wbGlu
Z0NvdW50ZXI7Ci0gICAgcHVibGljOgotICAgICAgICB2b2lkIGNvdW50KHVpbnQzMl90IGNvdW50
ID0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb3VudGVyICs9IGNvdW50OwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgZHVtcCgpOwotCi0gICAgICAgIGludDY0X3QqIGFk
ZHJlc3NPZkNvdW50ZXIoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIC8vIEVmZmVjdGl2ZWx5IHRoZSBjb250cnVjdG9yLCBob3dldmVyIGNhbGxlZCBs
YXppbHkgaW4gdGhlIGNhc2Ugb2YgR2xvYmFsU2FtcGxpbmdDb3VudGVyLgotICAgICAgICB2b2lk
IGluaXQoY29uc3QgY2hhciogbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb3VudGVy
ID0gMDsKLSAgICAgICAgICAgIG1fbmFtZSA9IG5hbWU7Ci0KLSAgICAgICAgICAgIC8vIFNldCBt
X25leHQgdG8gcG9pbnQgdG8gdGhlIGhlYWQgb2YgdGhlIGNoYWluLCBhbmQgaW5mb3JtIHdoYXRl
dmVyIGlzCi0gICAgICAgICAgICAvLyBjdXJyZW50bHkgYXQgdGhlIGhlYWQgdGhhdCB0aGlzIG5v
ZGUgd2lsbCBub3cgaG9sZCB0aGUgcG9pbnRlciB0byBpdC4KLSAgICAgICAgICAgIG1fbmV4dCA9
IHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKLSAgICAgICAgICAgIHNfYWJzdHJhY3RT
YW1wbGluZ0NvdW50ZXJDaGFpbi0+bV9yZWZlcmVyID0gJm1fbmV4dDsKLSAgICAgICAgICAgIC8v
IEFkZCB0aGlzIG5vZGUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QuCi0gICAgICAgICAgICBzX2Fi
c3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gPSB0aGlzOwotICAgICAgICAgICAgbV9yZWZlcmVy
ID0gJnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKLSAgICAgICAgfQotCi0gICAgICAg
IGludDY0X3QgbV9jb3VudGVyOwotICAgICAgICBjb25zdCBjaGFyKiBtX25hbWU7Ci0gICAgICAg
IEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBw
b2ludGVyIHRvIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpbiB0aGUgY2hhaW47IHVzZWQgdG8K
LSAgICAgICAgLy8gYWxsb3cgZmFzdCBsaW5rZWQgbGlzdCBkZWxldGlvbi4KLSAgICAgICAgQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7Ci0gICAgICAgIC8vIE51bGwgb2JqZWN0
IHVzZWQgdG8gZGV0ZWN0IGVuZCBvZiBzdGF0aWMgY2hhaW4uCi0gICAgICAgIHN0YXRpYyBBYnN0
cmFjdFNhbXBsaW5nQ291bnRlciBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQ7Ci0g
ICAgICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluOwotICAgICAgICBzdGF0aWMgYm9vbCBzX2NvbXBsZXRlZDsKLSAgICB9Owot
Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQotICAgIC8vIFNhbXBsaW5nQ291bnRlcjoK
LSAgICAvLwotICAgIC8vIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUgYW5kIChob3BlZnVsbHkhKSBj
b252ZW5pZW50IGZvciBjYXNlcyB3aGVyZSBhIGNvdW50ZXIgaXMKLSAgICAvLyByZXF1aXJlZCB3
aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2luZ2xlIGZ1bmN0aW9uLiAgSXQgY2FuIGJlIGluc3RhbnRp
YXRlZCBhcyBhCi0gICAgLy8gc3RhdGljIHZhcmlhYmxlIHNpbmNlIGl0IGNvbnRhaW5zIGEgY29u
c3RydWN0b3IgYnV0IG5vdCBhIGRlc3RydWN0b3IgKHN0YXRpYwotICAgIC8vIHZhcmlhYmxlcyBp
biBXZWJLaXQgY2Fubm90IGhhdmUgZGVzdHJ1Y3RvcnMpLgotICAgIC8vCi0gICAgLy8gRm9yIGV4
YW1wbGU6Ci0gICAgLy8KLSAgICAvLyB2b2lkIHNvbWVGdW5jdGlvbigpCi0gICAgLy8gewotICAg
IC8vICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50TWUoIlRoaXMgaXMgbXkgY291bnRl
ci4gIFRoZXJlIGFyZSBtYW55IGxpa2UgaXQsIGJ1dCB0aGlzIG9uZSBpcyBtaW5lLiIpOwotICAg
IC8vICAgICBjb3VudE1lLmNvdW50KCk7Ci0gICAgLy8gICAgIC8vIC4uLgotICAgIC8vIH0KLSAg
ICAvLwotICAgIGNsYXNzIFNhbXBsaW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5n
Q291bnRlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTYW1wbGluZ0NvdW50ZXIoY29uc3QgY2hh
ciogbmFtZSkgeyBpbml0KG5hbWUpOyB9Ci0gICAgfTsKLQotICAgIC8vIEdsb2JhbFNhbXBsaW5n
Q291bnRlcjoKLSAgICAvLwotICAgIC8vIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUgZm9yIHVzZSB3
aGVyZSBhIGNvdW50ZXIgaXMgdG8gYmUgZGVjbGFyZWQgZ2xvYmFsbHksCi0gICAgLy8gc2luY2Ug
aXQgY29udGFpbnMgbmVpdGhlciBhIGNvbnN0cnVjdG9yIG5vciBkZXN0cnVjdG9yLiAgSW5zdGVh
ZCwgZW5zdXJlCi0gICAgLy8gdGhhdCAnbmFtZSgpJyBpcyBjYWxsZWQgdG8gcHJvdmlkZSB0aGUg
Y291bnRlciB3aXRoIGEgbmFtZSAoYW5kIGFsc28gdG8KLSAgICAvLyBhbGxvdyBpdCB0byBiZSBw
cmludGVkIG91dCBvbiBleGl0KS4KLSAgICAvLwotICAgIC8vIEdsb2JhbFNhbXBsaW5nQ291bnRl
ciBnbG9iYWxDb3VudGVyOwotICAgIC8vCi0gICAgLy8gdm9pZCBmaXJzdEZ1bmN0aW9uKCkKLSAg
ICAvLyB7Ci0gICAgLy8gICAgIC8vIFB1dCB0aGlzIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgaXMg
ZGVmaW5pdGVseSBjYWxsZWQhCi0gICAgLy8gICAgIC8vIChPciBhbHRlcm5hdGl2ZWx5IGFsb25n
c2lkZSBhbGwgY2FsbHMgdG8gJ2NvdW50KCknKS4KLSAgICAvLyAgICAgZ2xvYmFsQ291bnRlci5u
YW1lKCJJIE5hbWUgWW91IERlc3Ryb3llci4iKTsKLSAgICAvLyAgICAgZ2xvYmFsQ291bnRlci5j
b3VudCgpOwotICAgIC8vICAgICAvLyAuLi4KLSAgICAvLyB9Ci0gICAgLy8KLSAgICAvLyB2b2lk
IHNlY29uZEZ1bmN0aW9uKCkKLSAgICAvLyB7Ci0gICAgLy8gICAgIGdsb2JhbENvdW50ZXIuY291
bnQoKTsKLSAgICAvLyAgICAgLy8gLi4uCi0gICAgLy8gfQotICAgIC8vCi0gICAgY2xhc3MgR2xv
YmFsU2FtcGxpbmdDb3VudGVyIDogcHVibGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgbmFtZShjb25zdCBjaGFyKiBuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBHbG9iYWwgb2JqZWN0cyBzaG91bGQgYmUgbWFwcGVkIGluIHplcm8g
ZmlsbGVkIG1lbW9yeSwgc28gdGhpcyBzaG91bGQKLSAgICAgICAgICAgIC8vIGJlIGEgc2FmZSAo
YWxiZWl0IG5vdCBuZWNlc3NhcmlseSB0aHJlYWRzYWZlKSBjaGVjayBmb3IgJ2ZpcnN0IGNhbGwn
LgotICAgICAgICAgICAgaWYgKCFtX25leHQpCi0gICAgICAgICAgICAgICAgaW5pdChuYW1lKTsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6Ci0g
ICAgLy8KLSAgICAvLyBUaGUgYWJvdmUgY2xhc3NlcyAoU2FtcGxpbmdDb3VudGVyLCBHbG9iYWxT
YW1wbGluZ0NvdW50ZXIpLCBhcmUgaW50ZW5kZWQgZm9yCi0gICAgLy8gdXNlIHdpdGhpbiBhIGds
b2JhbCBvciBzdGF0aWMgc2NvcGUsIGFuZCBhcyBzdWNoIGNhbm5vdCBoYXZlIGEgZGVzdHJ1Y3Rv
ci4KLSAgICAvLyBUaGlzIG1lYW5zIHRoZXJlIGlzIG5vIGNvbnZlbmllbnQgd2F5IGZvciB0aGVt
IHRvIHJlbW92ZSB0aGVtc2VsdmVzIGZyb20gdGhlCi0gICAgLy8gc3RhdGljIGxpc3Qgb2YgY291
bnRlcnMsIGFuZCBzaG91bGQgYW4gaW5zdGFuY2Ugb2YgZWl0aGVyIGNsYXNzIGJlIGZyZWVkCi0g
ICAgLy8gYmVmb3JlICdkdW1wKCknIGhhcyB3YWxrZWQgb3ZlciB0aGUgbGlzdCBpdCB3aWxsIHBv
dGVudGlhbGx5IHdhbGsgb3ZlciBhbgotICAgIC8vIGludmFsaWQgcG9pbnRlci4KLSAgICAvLwot
ICAgIC8vIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVyZSB0aGUgY291bnRlciBt
YXkgcG9zc2libHkgYmUgZGVsZXRlZCBiZWZvcmUKLSAgICAvLyB0aGUgcHJvZ3JhbSBleGl0cy4g
IFNob3VsZCB0aGlzIG9jY3VyLCB0aGUgY291bnRlciB3aWxsIHByaW50IGl0J3MgdmFsdWUgdG8K
LSAgICAvLyBzdGRlcnIsIGFuZCByZW1vdmUgaXRzZWxmIGZyb20gdGhlIHN0YXRpYyBsaXN0LiAg
RXhhbXBsZToKLSAgICAvLwotICAgIC8vIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlciogY291bnRl
ciA9IG5ldyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoIlRoZSBDb3VudGVyIFdpdGggTm8gTmFt
ZSIpOwotICAgIC8vIGNvdW50ZXItPmNvdW50KCk7Ci0gICAgLy8gZGVsZXRlIGNvdW50ZXI7Ci0g
ICAgLy8KLSAgICBjbGFzcyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgOiBwdWJsaWMgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRhYmxlU2FtcGxp
bmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgaW5pdChuYW1lKTsgfQotCi0gICAgICAgIH5E
ZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNf
Y29tcGxldGVkKQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRGVsZXRhYmxlU2Ft
cGxpbmdDb3VudGVyIFwiJXNcIiBkZWxldGVkIGVhcmx5ICh3aXRoIGNvdW50ICVsbGQpXG4iLCBt
X25hbWUsIG1fY291bnRlcik7Ci0gICAgICAgICAgICAvLyBPdXIgbV9yZWZlcmVyIHBvaW50ZXIg
c2hvdWxkIGtub3cgd2hlcmUgdGhlIHBvaW50ZXIgdG8gdGhpcyBub2RlIGlzLAotICAgICAgICAg
ICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUgcHJldmlv
dXMgbm9kZSBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIEFTU0VSVCgqbV9yZWZlcmVyID09IHRo
aXMpOwotICAgICAgICAgICAgQVNTRVJUKG1fbmV4dC0+bV9yZWZlcmVyID09ICZtX25leHQpOwot
ICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgbm9kZSBmcm9tIHRoZSBsaXN0LCBhbmQgaW5mb3Jt
IG1fbmV4dCB0aGF0IHdlIGhhdmUgZG9uZSBzby4KLSAgICAgICAgICAgIG1fbmV4dC0+bV9yZWZl
cmVyID0gbV9yZWZlcmVyOwotICAgICAgICAgICAgKm1fcmVmZXJlciA9IG1fbmV4dDsKLSAgICAg
ICAgfQotICAgIH07Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBT
YW1wbGluZ1Rvb2xfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxp
bmdDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ0NvdW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgp
Cit7CisjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQorICAgIGlmIChzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZCkg
eworICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBWYWx1ZXM6XG4iKTsKKyAgICAg
ICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNvdW50ZXIgPSBzX2Fic3RyYWN0
U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAmc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291bnRlci0+bV9uZXh0KQorICAg
ICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJDb3VudGVyLT5tX25hbWUsIGN1
cnJDb3VudGVyLT5tX2NvdW50ZXIpOworICAgICAgICBwcmludGYoIlxuXG4iKTsKKyAgICB9Cisg
ICAgc19jb21wbGV0ZWQgPSB0cnVlOworI2VuZGlmCit9CisKK0Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hh
aW5FbmQ7CitBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6
OnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbiA9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyQ2hhaW5FbmQ7Citib29sIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2NvbXBsZXRlZCA9
IGZhbHNlOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2FtcGxpbmdDb3VudGVyX2gKKyNkZWZpbmUgU2Ft
cGxpbmdDb3VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCisvLyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBJbXBsZW1lbnRz
IGEgbmFtZWQgc2V0IG9mIGNvdW50ZXJzLCBwcmludGVkIG9uIGV4aXQgaWYgRU5BQkxFKFNBTVBM
SU5HX0NPVU5URVJTKS4KKy8vIFNlZSBzdWJjbGFzc2VzIGJlbG93LCBTYW1wbGluZ0NvdW50ZXIs
IEdsb2JhbFNhbXBsaW5nQ291bnRlciBhbmQgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyLgorY2xh
c3MgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgeworICAgIGZyaWVuZCBjbGFzcyBEZWxldGFibGVT
YW1wbGluZ0NvdW50ZXI7CitwdWJsaWM6CisgICAgdm9pZCBjb3VudCh1aW50MzJfdCBjb3VudCA9
IDEpCisgICAgeworICAgICAgICBtX2NvdW50ZXIgKz0gY291bnQ7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgZHVtcCgpOworCisgICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigpIHsgcmV0
dXJuICZtX2NvdW50ZXI7IH0KKworcHJvdGVjdGVkOgorICAgIC8vIEVmZmVjdGl2ZWx5IHRoZSBj
b250cnVjdG9yLCBob3dldmVyIGNhbGxlZCBsYXppbHkgaW4gdGhlIGNhc2Ugb2YgR2xvYmFsU2Ft
cGxpbmdDb3VudGVyLgorICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAg
ICAgICAgbV9jb3VudGVyID0gMDsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsKKworICAgICAgICAv
LyBTZXQgbV9uZXh0IHRvIHBvaW50IHRvIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiwgYW5kIGluZm9y
bSB3aGF0ZXZlciBpcworICAgICAgICAvLyBjdXJyZW50bHkgYXQgdGhlIGhlYWQgdGhhdCB0aGlz
IG5vZGUgd2lsbCBub3cgaG9sZCB0aGUgcG9pbnRlciB0byBpdC4KKyAgICAgICAgbV9uZXh0ID0g
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOworICAgICAgICBzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW4tPm1fcmVmZXJlciA9ICZtX25leHQ7CisgICAgICAgIC8vIEFkZCB0aGlz
IG5vZGUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QuCisgICAgICAgIHNfYWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXJDaGFpbiA9IHRoaXM7CisgICAgICAgIG1fcmVmZXJlciA9ICZzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW47CisgICAgfQorCisgICAgaW50NjRfdCBtX2NvdW50ZXI7CisgICAg
Y29uc3QgY2hhciogbV9uYW1lOworICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7
CisgICAgLy8gVGhpcyBpcyBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgdG8gdGhpcyBub2RlIGlu
IHRoZSBjaGFpbjsgdXNlZCB0bworICAgIC8vIGFsbG93IGZhc3QgbGlua2VkIGxpc3QgZGVsZXRp
b24uCisgICAgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7CisgICAgLy8gTnVs
bCBvYmplY3QgdXNlZCB0byBkZXRlY3QgZW5kIG9mIHN0YXRpYyBjaGFpbi4KKyAgICBzdGF0aWMg
QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5k
OworICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluOworICAgIHN0YXRpYyBib29sIHNfY29tcGxldGVkOworfTsKKworI2lmIEVO
QUJMRShTQU1QTElOR19DT1VOVEVSUykKKy8vIFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBUaGlz
IGNsYXNzIGlzIHN1aXRhYmxlIGFuZCAoaG9wZWZ1bGx5ISkgY29udmVuaWVudCBmb3IgY2FzZXMg
d2hlcmUgYSBjb3VudGVyIGlzCisvLyByZXF1aXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2lu
Z2xlIGZ1bmN0aW9uLiBJdCBjYW4gYmUgaW5zdGFudGlhdGVkIGFzIGEKKy8vIHN0YXRpYyB2YXJp
YWJsZSBzaW5jZSBpdCBjb250YWlucyBhIGNvbnN0cnVjdG9yIGJ1dCBub3QgYSBkZXN0cnVjdG9y
IChzdGF0aWMKKy8vIHZhcmlhYmxlcyBpbiBXZWJLaXQgY2Fubm90IGhhdmUgZGVzdHJ1Y3RvcnMp
LgorLy8KKy8vIEZvciBleGFtcGxlOgorLy8KKy8vIHZvaWQgc29tZUZ1bmN0aW9uKCkKKy8vIHsK
Ky8vICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50TWUoIlRoaXMgaXMgbXkgY291bnRl
ci4gVGhlcmUgYXJlIG1hbnkgbGlrZSBpdCwgYnV0IHRoaXMgb25lIGlzIG1pbmUuIik7CisvLyAg
ICAgY291bnRNZS5jb3VudCgpOworLy8gICAgIC8vIC4uLgorLy8gfQorLy8KK2NsYXNzIFNhbXBs
aW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7CitwdWJsaWM6Cisg
ICAgU2FtcGxpbmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgaW5pdChuYW1lKTsgfQorfTsK
KworLy8gR2xvYmFsU2FtcGxpbmdDb3VudGVyOgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgc3VpdGFi
bGUgZm9yIHVzZSB3aGVyZSBhIGNvdW50ZXIgaXMgdG8gYmUgZGVjbGFyZWQgZ2xvYmFsbHksCisv
LyBzaW5jZSBpdCBjb250YWlucyBuZWl0aGVyIGEgY29uc3RydWN0b3Igbm9yIGRlc3RydWN0b3Iu
IEluc3RlYWQsIGVuc3VyZQorLy8gdGhhdCAnbmFtZSgpJyBpcyBjYWxsZWQgdG8gcHJvdmlkZSB0
aGUgY291bnRlciB3aXRoIGEgbmFtZSAoYW5kIGFsc28gdG8KKy8vIGFsbG93IGl0IHRvIGJlIHBy
aW50ZWQgb3V0IG9uIGV4aXQpLgorLy8KKy8vIEdsb2JhbFNhbXBsaW5nQ291bnRlciBnbG9iYWxD
b3VudGVyOworLy8KKy8vIHZvaWQgZmlyc3RGdW5jdGlvbigpCisvLyB7CisvLyAgICAgLy8gUHV0
IHRoaXMgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBpcyBkZWZpbml0ZWx5IGNhbGxlZCEKKy8vICAg
ICAvLyAoT3IgYWx0ZXJuYXRpdmVseSBhbG9uZ3NpZGUgYWxsIGNhbGxzIHRvICdjb3VudCgpJyku
CisvLyAgICAgZ2xvYmFsQ291bnRlci5uYW1lKCJJIE5hbWUgWW91IERlc3Ryb3llci4iKTsKKy8v
ICAgICBnbG9iYWxDb3VudGVyLmNvdW50KCk7CisvLyAgICAgLy8gLi4uCisvLyB9CisvLworLy8g
dm9pZCBzZWNvbmRGdW5jdGlvbigpCisvLyB7CisvLyAgICAgZ2xvYmFsQ291bnRlci5jb3VudCgp
OworLy8gICAgIC8vIC4uLgorLy8gfQorLy8KK2NsYXNzIEdsb2JhbFNhbXBsaW5nQ291bnRlciA6
IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7CitwdWJsaWM6CisgICAgdm9pZCBuYW1l
KGNvbnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICAvLyBHbG9iYWwgb2JqZWN0cyBzaG91
bGQgYmUgbWFwcGVkIGluIHplcm8gZmlsbGVkIG1lbW9yeSwgc28gdGhpcyBzaG91bGQKKyAgICAg
ICAgLy8gYmUgYSBzYWZlIChhbGJlaXQgbm90IG5lY2Vzc2FyaWx5IHRocmVhZHNhZmUpIGNoZWNr
IGZvciAnZmlyc3QgY2FsbCcuCisgICAgICAgIGlmICghbV9uZXh0KQorICAgICAgICAgICAgaW5p
dChuYW1lKTsKKyAgICB9Cit9OworCisvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6CisvLwor
Ly8gVGhlIGFib3ZlIGNsYXNzZXMgKFNhbXBsaW5nQ291bnRlciwgR2xvYmFsU2FtcGxpbmdDb3Vu
dGVyKSwgYXJlIGludGVuZGVkIGZvcgorLy8gdXNlIHdpdGhpbiBhIGdsb2JhbCBvciBzdGF0aWMg
c2NvcGUsIGFuZCBhcyBzdWNoIGNhbm5vdCBoYXZlIGEgZGVzdHJ1Y3Rvci4KKy8vIFRoaXMgbWVh
bnMgdGhlcmUgaXMgbm8gY29udmVuaWVudCB3YXkgZm9yIHRoZW0gdG8gcmVtb3ZlIHRoZW1zZWx2
ZXMgZnJvbSB0aGUKKy8vIHN0YXRpYyBsaXN0IG9mIGNvdW50ZXJzLCBhbmQgc2hvdWxkIGFuIGlu
c3RhbmNlIG9mIGVpdGhlciBjbGFzcyBiZSBmcmVlZAorLy8gYmVmb3JlICdkdW1wKCknIGhhcyB3
YWxrZWQgb3ZlciB0aGUgbGlzdCBpdCB3aWxsIHBvdGVudGlhbGx5IHdhbGsgb3ZlciBhbgorLy8g
aW52YWxpZCBwb2ludGVyLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVzZSB3
aGVyZSB0aGUgY291bnRlciBtYXkgcG9zc2libHkgYmUgZGVsZXRlZCBiZWZvcmUKKy8vIHRoZSBw
cm9ncmFtIGV4aXRzLiBTaG91bGQgdGhpcyBvY2N1ciwgdGhlIGNvdW50ZXIgd2lsbCBwcmludCBp
dCdzIHZhbHVlIHRvCisvLyBzdGRlcnIsIGFuZCByZW1vdmUgaXRzZWxmIGZyb20gdGhlIHN0YXRp
YyBsaXN0LiBFeGFtcGxlOgorLy8KKy8vIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlciogY291bnRl
ciA9IG5ldyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoIlRoZSBDb3VudGVyIFdpdGggTm8gTmFt
ZSIpOworLy8gY291bnRlci0+Y291bnQoKTsKKy8vIGRlbGV0ZSBjb3VudGVyOworLy8KK2NsYXNz
IERlbGV0YWJsZVNhbXBsaW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRl
ciB7CitwdWJsaWM6CisgICAgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKGNvbnN0IGNoYXIqIG5h
bWUpIHsgaW5pdChuYW1lKTsgfQorCisgICAgfkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcigpCisg
ICAgeworICAgICAgICBpZiAoIXNfY29tcGxldGVkKQorICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdpdGgg
Y291bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVyKTsKKyAgICAgICAgLy8gT3VyIG1fcmVm
ZXJlciBwb2ludGVyIHNob3VsZCBrbm93IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBp
cywKKyAgICAgICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0
aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgQVNTRVJUKCptX3JlZmVyZXIg
PT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChtX25leHQtPm1fcmVmZXJlciA9PSAmbV9uZXh0KTsK
KyAgICAgICAgLy8gUmVtb3ZlIHRoaXMgbm9kZSBmcm9tIHRoZSBsaXN0LCBhbmQgaW5mb3JtIG1f
bmV4dCB0aGF0IHdlIGhhdmUgZG9uZSBzby4KKyAgICAgICAgbV9uZXh0LT5tX3JlZmVyZXIgPSBt
X3JlZmVyZXI7CisgICAgICAgICptX3JlZmVyZXIgPSBtX25leHQ7CisgICAgfQorfTsKKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFNhbXBsaW5nQ291bnRlcl9oCisK
Kwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>