<?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>134333</bug_id>
          
          <creation_ts>2014-06-25 21:08:29 -0700</creation_ts>
          <short_desc>[ftlopt] If a CodeBlock is jettisoned due to a watchpoint then it should be possible to figure out something about that watchpoint</short_desc>
          <delta_ts>2014-08-06 06:48:17 -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="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018526</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-25 21:08:29 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018530</commentid>
    <comment_count>1</comment_count>
      <attachid>233877</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-25 21:14:54 -0700</bug_when>
    <thetext>Created attachment 233877
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018666</commentid>
    <comment_count>2</comment_count>
      <attachid>233877</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-06-26 10:39:41 -0700</bug_when>
    <thetext>Comment on attachment 233877
the patch

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

&gt; Source/JavaScriptCore/runtime/Structure.cpp:1009
&gt; +    virtual void dump(PrintStream&amp; out) const

Overrides like this should be marked &quot;override&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019190</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-27 22:43:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027147</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-08-06 06:48:17 -0700</bug_when>
    <thetext>Landed r172143: &lt;http://trac.webkit.org/r172143&gt; to fix binding test failure after merge of r170564 to trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233877</attachid>
            <date>2014-06-25 21:14:54 -0700</date>
            <delta_ts>2014-06-26 10:39:40 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>54883</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNDU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBA
QAorMjAxNC0wNi0yNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFtmdGxvcHRdIElmIGEgQ29kZUJsb2NrIGlzIGpldHRpc29uZWQgZHVlIHRvIGEgd2F0Y2hwb2lu
dCB0aGVuIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBmaWd1cmUgb3V0IHNvbWV0aGluZyBhYm91
dCB0aGF0IHdhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNDMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBlbmdpbmVlcmVkIHRvIHByb3ZpZGUgbG9hZHMgb2Yg
aW5mb3JtYXRpb24gdG8gdGhlIHByb2ZpbGVyIHdpdGhvdXQgaW5jdXJyaW5nIGFueQorICAgICAg
ICBjb3N0cyB3aGVuIHRoZSBwcm9maWxlciBpcyBkaXNhYmxlZC4gSXQncyB0aGUgb2xkZXN0IHRy
aWNrIGluIHRoZSBib29rOiB0aGUgdGhpbmcgdGhhdAorICAgICAgICBmaXJlcyB0aGUgd2F0Y2hw
b2ludCBkb2Vzbid0IGFjdHVhbGx5IGNyZWF0ZSBhbnl0aGluZyB0byBkZXNjcmliZSB0aGUgcmVh
c29uIHdoeSBpdCB3YXMKKyAgICAgICAgZmlyZWQ7IGluc3RlYWQgaXQgY3JlYXRlcyBhIHN0YWNr
LWFsbG9jYXRlZCBGaXJlRGV0YWlsIHN1YmNsYXNzIGluc3RhbmNlLiBPbmx5IGlmIHRoZQorICAg
ICAgICBGaXJlRGV0YWlsOjpkdW1wKCkgdmlydHVhbCBtZXRob2QgaXMgY2FsbGVkIGRvZXMgYW55
dGhpbmcgaGFwcGVuLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHdlIHVzZSB0aGlzIHRv
IHByb2R1Y2UgdmVyeSBmaW5lLWdyYWluZWQgZGF0YSBmb3IgU3RydWN0dXJlIHdhdGNocG9pbnRz
IGFuZAorICAgICAgICBzb21lIGNhc2VzIG9mIHZhcmlhYmxlIHdhdGNocG9pbnRzLiBGb3IgYWxs
IG90aGVyIHNpdHVhdGlvbnMsIHRoZSBnaXZlbiByZWFzb24gaXMganVzdCBhCisgICAgICAgIHN0
cmluZyBjb25zdGFudCwgYnkgdXNpbmcgU3RyaW5nRmlyZURldGFpbC4gSWYgd2UgZmluZCBhIHNp
dHVhdGlvbiB3aGVyZSB0aGF0IHN0cmluZworICAgICAgICBjb25zdGFudCBpcyBpbnN1ZmZpY2ll
bnQgdG8gZGlhZ25vc2UgYW4gaXNzdWUgdGhlbiB3ZSBjYW4gY2hhbmdlIGl0IHRvIHByb3ZpZGUg
bW9yZQorICAgICAgICBmaW5lLWdyYWluZWQgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qcm9maWxlZENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVX
YXRjaHBvaW50U2V0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBv
aW50U2V0OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvVmFy
aWFibGVXYXRjaHBvaW50U2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNo
cG9pbnRTZXQ6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNw
cDoKKyAgICAgICAgKEpTQzo6U3RyaW5nRmlyZURldGFpbDo6ZHVtcCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBv
aW50cyk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6RmlyZURldGFpbDo6
RmlyZURldGFpbCk6CisgICAgICAgIChKU0M6OkZpcmVEZXRhaWw6On5GaXJlRGV0YWlsKToKKyAg
ICAgICAgKEpTQzo6U3RyaW5nRmlyZURldGFpbDo6U3RyaW5nRmlyZURldGFpbCk6CisgICAgICAg
IChKU0M6OldhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6dG91Y2gpOgorICAgICAgICAo
SlNDOjpXYXRjaHBvaW50U2V0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6SW5saW5lV2F0
Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6
OnRvdWNoKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoV1RGOjpNYXNxdWVyYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBp
bGF0aW9uOjpzZXRKZXR0aXNvblJlYXNvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21w
aWxhdGlvbjo6dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5o
OgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OnNldEpldHRpc29uUmVhc29u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXI6OnRyYW5zZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9JZGVu
dGlmaWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6ZHVt
cCk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjpWYXJpYWJsZVdyaXRlRmlyZURldGFpbCk6Cisg
ICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bm90aWZ5VHJhbnNpdGlvbkZyb21U
aGlzU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6Om5vdGlmeVRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6bm90aWZ5V3JpdGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6YWRkSW1wdXJlUHJvcGVydHkpOgorCiAyMDE0LTA2LTI1ICBNYXJrIEhhaG5lbmJlcmcg
IDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RydWN0dXJlIGJpdCBmaWVsZHMg
c2hvdWxkIGhhdmUgYSBjb25zaXN0ZW50IGZvcm1hdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE1hc3F1
ZXJhZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dCgpLT5maXJlQWxsKCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnQoKS0+ZmlyZUFsbCgiTWFzcXVlcmFkaW5nIG9iamVjdCBhbGxvY2F0ZWQi
KTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgICAgICBNYXNxdWVyYWRlciogcmVzdWx0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFzcXVlcmFkZXI+KHZtLmhlYXAsIHNpemVvZihNYXNx
dWVyYWRlcikpKSBNYXNxdWVyYWRlcih2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw4ICs0NzcsNiBA
QAogCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0
MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTBGQzk3
RjMzMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMkYx
ODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgKi87
IH07CiAJCTBGQzk3RjM0MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzk3RjMwMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkw
RkM5N0YzNTE4MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDOTdGMzExODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKLQkJMEZDOTdGMzYxODIwMjBENzAwMkM5QjI2IC8qIFBy
b2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM5N0YzMjE4MjAyMEQ3MDAyQzlCMjYgLyog
UHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM5N0YzRDE4MjAyMTE5MDAyQzlC
MjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM5N0YzNzE4MjAyMTE5MDAyQzlC
MjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAgKi87IH07CiAJCTBG
Qzk3RjNFMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM5
N0YzODE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
Qzk3RjNGMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMzkxODIwMjExOTAw
MkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5jcHAgKi87IH07CkBAIC0yNjU1LDggKzI2NTMs
NiBAQAogCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzk3RjJGMTgyMDIwRDcwMDJDOUIyNiAv
KiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZDOTdGMzExODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZDOTdGMzIxODIwMjBENzAwMkM5QjI2IC8qIFBy
b2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzk3RjM3MTgyMDIxMTkwMDJDOUIyNiAv
KiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2Uu
Y3BwOyBwYXRoID0gZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM5N0YzODE4MjAyMTE5MDAyQzlCMjYgLyog
REZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkM5N0YzOTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxh
Y2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0p1bXBS
ZXBsYWNlbWVudC5jcHA7IHBhdGggPSBkZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MDMsOCArNTM5OSw2IEBACiAJCQkJMEY5RkM4QzAx
NEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCAqLywKIAkJCQkwRjk4
MjA1RDE2QkZFMzdGMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCAqLywKIAkJCQkw
Rjk4MjA1RTE2QkZFMzdGMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmggKi8sCi0JCQkJ
MEZDOTdGMzExODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcCAqLywKLQkJCQkwRkM5N0YzMjE4MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmls
ZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLywKIAkJCQkwRjkzMzI5OTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOUExNENBN0RD
MTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAx
NzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLApAQCAtNjUzNyw3ICs2NTMxLDYgQEAKIAkJ
CQkwRjk4MjA2MTE2QkZFMzgzMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDUwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwRkM5N0YzNjE4MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmlsZWRD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1Q0Q0
NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NzQsNyArNzk2Nyw2IEBACiAJCQkJMEY5RkM4QzMxNEUxQjVG
RTAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwRkM5N0YzNTE4MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmlsZWRD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTVD
RDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjcyOUFEMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVj
b2RlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0Lmgi
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1w
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgpAQCAtMTUzOCw2ICsxNTM5LDI4IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoY29uc3QgVmVjdG9yPFQKICAgICByZXR1cm4gdmVjdG9yLmNhcGFjaXR5KCkgKiBzaXpl
b2YoVCk7CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIFB1dFRvU2NvcGVGaXJlRGV0YWlsIDog
cHVibGljIEZpcmVEZXRhaWwgeworcHVibGljOgorICAgIFB1dFRvU2NvcGVGaXJlRGV0YWlsKENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CisgICAgeworICAgICAgICBvdXQucHJpbnQoIkxpbmtpbmcgcHV0X3RvX3Njb3BlIGluICIsIEZ1
bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSkpLCAiIGZvciAiLCBtX2lkZW50KTsKKyAgICB9CisgICAg
Citwcml2YXRlOgorICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKK307CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCiBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAg
OiBtX2dsb2JhbE9iamVjdChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcChvdGhl
ci5tX2hlYXApCkBAIC0xODkxLDcgKzE5MTQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lndh
dGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Au
dHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKICAgICAgICAgICAgICAgICBpZiAob3Aud2F0Y2hwb2ludFNldCkKLSAgICAg
ICAgICAgICAgICAgICAgb3Aud2F0Y2hwb2ludFNldC0+aW52YWxpZGF0ZSgpOworICAgICAgICAg
ICAgICAgICAgICBvcC53YXRjaHBvaW50U2V0LT5pbnZhbGlkYXRlKFB1dFRvU2NvcGVGaXJlRGV0
YWlsKHRoaXMsIGlkZW50KSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkK
ICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCgqdm0o
KSwgb3duZXJFeGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA2XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihvcC5vcGVyYW5k
KTsKQEAgLTI4OTIsNyArMjkxNSw3IEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIEZ1bmN0aW9uQ29k
ZUJsb2NrOjoKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlIG1vZGUpCit2b2lkIENv
ZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRp
bWl6YXRpb25Nb2RlIG1vZGUsIGNvbnN0IEZpcmVEZXRhaWwqIGRldGFpbCkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChyZWFzb24gIT0gUHJvZmlsZXI6Ok5vdEpldHRpc29uZWQpOwogICAgIApAQCAt
MjkwMSwxNCArMjkyNCwxNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6Okpl
dHRpCiAgICAgICAgIGRhdGFMb2coIkpldHRpc29uaW5nICIsICp0aGlzKTsKICAgICAgICAgaWYg
KG1vZGUgPT0gQ291bnRSZW9wdGltaXphdGlvbikKICAgICAgICAgICAgIGRhdGFMb2coIiBhbmQg
Y291bnRpbmcgcmVvcHRpbWl6YXRpb24iKTsKLSAgICAgICAgZGF0YUxvZygiIGR1ZSB0byAiLCBy
ZWFzb24sICIuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiIGR1ZSB0byAiLCByZWFzb24pOworICAg
ICAgICBpZiAoZGV0YWlsKQorICAgICAgICAgICAgZGF0YUxvZygiLCAiLCAqZGV0YWlsKTsKKyAg
ICAgICAgZGF0YUxvZygiLlxuIik7CiAgICAgfQogICAgIAogICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQygqbV9oZWFwKTsKICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoaml0VHlwZSgpKSk7CiAgICAgCiAgICAgaWYgKFByb2ZpbGVyOjpDb21waWxhdGlvbiog
Y29tcGlsYXRpb24gPSBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKSkK
LSAgICAgICAgY29tcGlsYXRpb24tPnNldEpldHRpc29uUmVhc29uKHJlYXNvbik7CisgICAgICAg
IGNvbXBpbGF0aW9uLT5zZXRKZXR0aXNvblJlYXNvbihyZWFzb24sIGRldGFpbCk7CiAgICAgCiAg
ICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3byB0aGluZ3MgaGVyZToKICAgICAvLyAxKSBN
YWtlIHN1cmUgdGhhdCBpZiB0aGlzIENvZGVCbG9jayBpcyBvbiB0aGUgc3RhY2sgcmlnaHQgbm93
LCB0aGVuIGlmIHdlIHJldHVybiB0byBpdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKTsgLy8gdGhl
IHR5cGVUb1JlcGxhY2UgaXMgbXkgSklUVHlwZQogI2VuZGlmCiAKLSAgICB2b2lkIGpldHRpc29u
KFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlID0gRG9udENvdW50
UmVvcHRpbWl6YXRpb24pOworICAgIHZvaWQgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVh
c29uLCBSZW9wdGltaXphdGlvbk1vZGUgPSBEb250Q291bnRSZW9wdGltaXphdGlvbiwgY29uc3Qg
RmlyZURldGFpbCogPSBudWxscHRyKTsKICAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMTcwNDMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotdm9pZCBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJ
bnRlcm5hbCgpCit2b2lkIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVy
bmFsKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAgICBpZiAoREZHOjpzaG91bGRTaG93
RGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiRmlyaW5nIHdhdGNocG9pbnQgIiwgUmF3
UG9pbnRlcih0aGlzKSwgIiBvbiAiLCAqbV9jb2RlQmxvY2ssICJcbiIpOwogCi0gICAgbV9jb2Rl
QmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvVW5wcm9maWxlZFdhdGNocG9p
bnQsIENvdW50UmVvcHRpbWl6YXRpb24pOworICAgIG1fY29kZUJsb2NrLT5qZXR0aXNvbihQcm9m
aWxlcjo6SmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LCBDb3VudFJlb3B0aW1pemF0
aW9uLCAmZGV0YWlsKTsKIAogICAgIGlmIChpc09uTGlzdCgpKQogICAgICAgICByZW1vdmUoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgJKHJldmlzaW9uIDE3MDQzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50ZXJuYWwoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAx
NzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgotI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxl
LmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdm9pZCBQ
cm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKCkKLXsK
LSAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewotICAgICAgICBkYXRhTG9n
KAotICAgICAgICAgICAgIkZpcmluZyBwcm9maWxlZCB3YXRjaHBvaW50ICIsIFJhd1BvaW50ZXIo
dGhpcyksICIgb24gIiwgKm1fY29kZUJsb2NrLCAiIGR1ZSB0byAiLAotICAgICAgICAgICAgbV9l
eGl0S2luZCwgIiBhdCAiLCBtX2NvZGVPcmlnaW4sICJcbiIpOwotICAgIH0KLSAgICAKLSAgICAv
LyBGSVhNRTogTWF5YmUgdGhpcyBzaG91bGQgY2FsbCBhbHRlcm5hdGl2ZSgpLgotICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM2NzcKLSAgICBDb2RlQmxv
Y2sqIG1hY2hpbmVCYXNlbGluZUNvZGVCbG9jayA9IG1fY29kZUJsb2NrLT5iYXNlbGluZUFsdGVy
bmF0aXZlKCk7Ci0gICAgQ29kZUJsb2NrKiBzb3VyY2VCYXNlbGluZUNvZGVCbG9jayA9Ci0gICAg
ICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCi0gICAg
ICAgICAgICBtX2NvZGVPcmlnaW4sIG1hY2hpbmVCYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgCi0g
ICAgaWYgKHNvdXJjZUJhc2VsaW5lQ29kZUJsb2NrKSB7Ci0gICAgICAgIHNvdXJjZUJhc2VsaW5l
Q29kZUJsb2NrLT5hZGRGcmVxdWVudEV4aXRTaXRlKAotICAgICAgICAgICAgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKAotICAgICAgICAgICAgICAgIG1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBt
X2V4aXRLaW5kLAotICAgICAgICAgICAgICAgIGV4aXRpbmdKSVRUeXBlRm9yKG1fY29kZUJsb2Nr
LT5qaXRUeXBlKCkpKSk7Ci0gICAgfQotICAgIAotICAgIG1fY29kZUJsb2NrLT5qZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGlzb25EdWVUb1Byb2ZpbGVkV2F0Y2hwb2ludCwgQ291bnRSZW9wdGltaXph
dGlvbik7Ci0gICAgCi0gICAgaWYgKGlzT25MaXN0KCkpCi0gICAgICAgIHJlbW92ZSgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgJKHJldmlzaW9uIDE3
MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQ
cm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludF9oCi0jZGVmaW5lIFByb2ZpbGVk
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50X2gKLQotI2lmIEVOQUJMRShERkdfSklUKQot
Ci0jaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgotI2luY2x1ZGUgIkV4aXRLaW5kLmgiCi0jaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29kZUJsb2NrOwot
Ci1jbGFzcyBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBX
YXRjaHBvaW50IHsKLXB1YmxpYzoKLSAgICBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludCgpCi0gICAgICAgIDogbV9leGl0S2luZChFeGl0S2luZFVuc2V0KQotICAgICAgICAs
IG1fY29kZUJsb2NrKDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBQcm9maWxlZENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBF
eGl0S2luZCBleGl0S2luZCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgICAgIDogbV9jb2Rl
T3JpZ2luKGNvZGVPcmlnaW4pCi0gICAgICAgICwgbV9leGl0S2luZChleGl0S2luZCkKLSAgICAg
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCi0gICAgewotICAgIH0KLSAgICAKLXByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVybmFsKCkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6
Ci0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47Ci0gICAgRXhpdEtpbmQgbV9leGl0S2luZDsK
LSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIFByb2ZpbGVkQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50X2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQqIFN0cnVj
dHUKICAgICByZXR1cm4gaGVhZC5nZXQoKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoKQordm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpCiB7CiAgICAgLy8gVGhp
cyB3aWxsIGltcGxpY2l0bHkgY2F1c2UgbXkgb3duIGRlbWlzZTogc3R1YiByZXNldCByZW1vdmVz
IGFsbCB3YXRjaHBvaW50cy4KICAgICAvLyBUaGF0IHdvcmtzLCBiZWNhdXNlIGRlbGV0aW5nIGEg
d2F0Y2hwb2ludCByZW1vdmVzIGl0IGZyb20gdGhlIHNldCdzIGxpc3QsIGFuZApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgT3duUHRy
PFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+JiBoZWFkKTsKIAogcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50ZXJuYWwoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8mIG1faG9sZGVyOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdhdGNocG9p
bnRTZXQuaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNSArNTcs
MTYgQEAgcHVibGljOgogICAgIC8vICAgICAgICB5b3Ugd2lsbCBoYXZlIGJlZW4gbm90aWZpZWQg
dGhhdCB0aGUgd2F0Y2hwb2ludCB3YXMgZmlyZWQuCiAgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZFZhbHVlLmdldCgpOyB9CiAgICAgCi0gICAgaW5s
aW5lIHZvaWQgbm90aWZ5V3JpdGUoVk0mLCBKU1ZhbHVlKTsKKyAgICB2b2lkIG5vdGlmeVdyaXRl
KFZNJiwgSlNWYWx1ZSwgY29uc3QgRmlyZURldGFpbCYpOworICAgIHZvaWQgbm90aWZ5V3JpdGUo
Vk0mLCBKU1ZhbHVlLCBjb25zdCBjaGFyKiByZWFzb24pOwogICAgIAotICAgIHZvaWQgaW52YWxp
ZGF0ZSgpCisgICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAg
ICB7CiAgICAgICAgIG1faW5mZXJyZWRWYWx1ZS5jbGVhcigpOwotICAgICAgICBXYXRjaHBvaW50
U2V0OjppbnZhbGlkYXRlKCk7CisgICAgICAgIFdhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUoZGV0
YWlsKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCisg
ICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwp
CiAgICAgewogICAgICAgICBBU1NFUlQoISFtX2luZmVycmVkVmFsdWUgPT0gKHN0YXRlKCkgPT0g
SXNXYXRjaGVkKSk7CiAgICAgICAgIGlmICghbV9pbmZlcnJlZFZhbHVlKQpAQCAtNzYsNyArNzcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGluZmVycmVkVmFsdWUuYXNDZWxs
KCk7CiAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjZWxsKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpbnZhbGlkYXRlKGRldGFpbCk7CiAg
ICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBhZGRyZXNzT2ZJbmZlcnJlZFZhbHVl
KCkgeyByZXR1cm4gJm1faW5mZXJyZWRWYWx1ZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0SW5s
aW5lcy5oCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgdm9pZCBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQ6Om5vdGlmeVdyaXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSB2b2lk
IFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
LCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgQVNTRVJUKCEhdmFsdWUpOwogICAg
IHN3aXRjaCAoc3RhdGUoKSkgewpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQ6Om5vdGlmCiAgICAgICAgIEFTU0VSVCghIW1faW5mZXJyZWRWYWx1ZSk7
CiAgICAgICAgIGlmICh2YWx1ZSA9PSBtX2luZmVycmVkVmFsdWUuZ2V0KCkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaW52YWxpZGF0ZShkZXRh
aWwpOwogICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElzSW52YWxpZGF0
ZWQ6CkBAIC01NCw2ICs1NCwxMSBAQCBpbmxpbmUgdm9pZCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6
Om5vdGlmCiAgICAgICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQorCitpbmxpbmUg
dm9pZCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om5vdGlmeVdyaXRlKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSwgY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG5vdGlmeVdyaXRlKHZtLCB2YWx1ZSwg
U3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3Bw
CShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDExIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCit2b2lkIFN0cmluZ0ZpcmVEZXRhaWw6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQobV9zdHJpbmcpOworfQorCiBXYXRjaHBv
aW50Ojp+V2F0Y2hwb2ludCgpCiB7CiAgICAgaWYgKGlzT25MaXN0KCkpCkBAIC02NSwyMCArNzAs
MjUgQEAgdm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0YwogICAgIG1fc3Rh
dGUgPSBJc1dhdGNoZWQ7CiB9CiAKLXZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coKQor
dm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNvbikKK3sKKyAgICBm
aXJlQWxsKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNl
dDo6ZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIEFTU0VSVChz
dGF0ZSgpID09IElzV2F0Y2hlZCk7CiAgICAgCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
LSAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoZGV0YWls
KTsKICAgICBtX3N0YXRlID0gSXNJbnZhbGlkYXRlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cygpCit2b2lk
IFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJiBkZXRh
aWwpCiB7CiAgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc2V0LmJlZ2lu
KCktPmZpcmUoKTsKKyAgICAgICAgbV9zZXQuYmVnaW4oKS0+ZmlyZShkZXRhaWwpOwogfQogCiB2
b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmFkZChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQpAQCAt
ODYsNiArOTYsMTEgQEAgdm9pZCBJbmxpbmVXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludAog
ICAgIGluZmxhdGUoKS0+YWRkKHdhdGNocG9pbnQpOwogfQogCit2b2lkIElubGluZVdhdGNocG9p
bnRTZXQ6OmZpcmVBbGwoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIGZpcmVBbGwoU3RyaW5n
RmlyZURldGFpbChyZWFzb24pKTsKK30KKwogV2F0Y2hwb2ludFNldCogSW5saW5lV2F0Y2hwb2lu
dFNldDo6aW5mbGF0ZVNsb3coKQogewogICAgIEFTU0VSVChpc1RoaW4oKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDE3MDQz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDExICsyNywzOCBAQAogI2RlZmluZSBXYXRjaHBvaW50
X2gKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRmlyZURl
dGFpbCB7CitwdWJsaWM6CisgICAgRmlyZURldGFpbCgpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIH5GaXJlRGV0YWlsKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOworfTsKKworY2xhc3MgU3RyaW5nRmly
ZURldGFpbCA6IHB1YmxpYyBGaXJlRGV0YWlsIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdGaXJlRGV0
YWlsKGNvbnN0IGNoYXIqIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCisgICAg
eworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CisKIGNsYXNz
IFdhdGNocG9pbnQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gewog
cHVibGljOgogICAgIFdhdGNocG9pbnQoKQpAQCAtNDAsMTAgKzY3LDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIH5XYXRjaHBvaW50KCk7CiAKLSAgICB2b2lkIGZpcmUoKSB7IGZpcmVJ
bnRlcm5hbCgpOyB9CisgICAgdm9pZCBmaXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkgeyBm
aXJlSW50ZXJuYWwoZGV0YWlsKTsgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBmaXJlSW50ZXJuYWwoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnRlcm5hbChjb25z
dCBGaXJlRGV0YWlsJikgPSAwOwogfTsKIAogZW51bSBXYXRjaHBvaW50U3RhdGUgewpAQCAtMTAy
LDM1ICsxMjksMzcgQEAgcHVibGljOgogICAgICAgICBtX3N0YXRlID0gSXNXYXRjaGVkOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGZpcmVBbGwoKQorICAgIHZvaWQgZmlyZUFsbChjb25zdCBGaXJl
RGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBpZiAoc3RhdGUoKSAhPSBJc1dhdGNoZWQp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZpcmVBbGxTbG93KCk7CisgICAgICAgIGZp
cmVBbGxTbG93KGRldGFpbCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgdG91Y2goKQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbChjb25zdCBjaGFyKiByZWFzb24pOworICAgIAor
ICAgIHZvaWQgdG91Y2goY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgIHsKICAgICAgICAg
aWYgKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQogICAgICAgICAgICAgc3RhcnRXYXRjaGlu
ZygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaXJlQWxsKCk7CisgICAgICAgICAgICBm
aXJlQWxsKGRldGFpbCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgaW52YWxpZGF0ZSgpCisgICAg
dm9pZCBpbnZhbGlkYXRlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAg
IGlmIChzdGF0ZSgpID09IElzV2F0Y2hlZCkKLSAgICAgICAgICAgIGZpcmVBbGwoKTsKKyAgICAg
ICAgICAgIGZpcmVBbGwoZGV0YWlsKTsKICAgICAgICAgbV9zdGF0ZSA9IElzSW52YWxpZGF0ZWQ7
CiAgICAgfQogCiAgICAgaW50OF90KiBhZGRyZXNzT2ZTdGF0ZSgpIHsgcmV0dXJuICZtX3N0YXRl
OyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0
SXNOb3RFbXB0eTsgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbFNs
b3coKTsgLy8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpcmVBbGxTbG93KGNvbnN0IEZpcmVEZXRhaWwmKTsgLy8gQ2Fs
bCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KICAgICAKIHByaXZhdGU6Ci0gICAg
dm9pZCBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhj
b25zdCBGaXJlRGV0YWlsJik7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIElubGluZVdhdGNocG9p
bnRTZXQ7CiAKQEAgLTIwNiwxMCArMjM1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9kYXRhID0g
ZW5jb2RlU3RhdGUoSXNXYXRjaGVkKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXJlQWxsKCkK
KyAgICB2b2lkIGZpcmVBbGwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgIHsKICAgICAg
ICAgaWYgKGlzRmF0KCkpIHsKLSAgICAgICAgICAgIGZhdCgpLT5maXJlQWxsKCk7CisgICAgICAg
ICAgICBmYXQoKS0+ZmlyZUFsbChkZXRhaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChkZWNvZGVTdGF0ZShtX2RhdGEpID09IENsZWFyV2F0Y2hwb2ludCkK
QEAgLTIxOCwxMCArMjQ3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCB0b3VjaCgpCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNvbik7CisgICAgCisgICAgdm9pZCB0b3Vj
aChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBpZiAoaXNGYXQoKSkg
ewotICAgICAgICAgICAgZmF0KCktPnRvdWNoKCk7CisgICAgICAgICAgICBmYXQoKS0+dG91Y2go
ZGV0YWlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVj
b2RlU3RhdGUobV9kYXRhKSA9PSBDbGVhcldhdGNocG9pbnQpCkBAIC0yMzEsNiArMjYyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFzb24pCisgICAgeworICAgICAgICB0b3VjaChT
dHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIGNvbnN0IHVpbnRwdHJfdCBJc1RoaW5GbGFnICAgICAgICA9IDE7CiAgICAgc3RhdGljIGNv
bnN0IHVpbnRwdHJfdCBTdGF0ZU1hc2sgICAgICAgICA9IDY7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJERkdKdW1wUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJQcm9m
aWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlByb2ZpbGVy
Q29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9C
YWcuaD4KQEAgLTk2LDcgKzk1LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+
PiB3ZWFrUmVmZXJlbmNlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8Q29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LCAxLCAwPiB3YXRjaHBvaW50czsKLSAgICBTZWdtZW50ZWRWZWN0b3I8UHJv
ZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQsIDEsIDA+IHByb2ZpbGVkV2F0Y2hw
b2ludHM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50czsKICAg
ICAKICAgICBSZWZQdHI8UHJvZmlsZXI6OkNvbXBpbGF0aW9uPiBjb21waWxhdGlvbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5vdGlmeVdyaXRlKAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAKLSAgICBzZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSk7CisgICAgc2V0LT5ub3RpZnlX
cml0ZSh2bSwgdmFsdWUsICJFeGVjdXRlZCBOb3RpZnlXcml0ZSIpOwogfQogCiBkb3VibGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc3LDcgKzExNzcsNyBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAgaWYgKG51bVZhcmlh
YmxlcyB8fCBudW1GdW5jdGlvbnMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7CiAgICAgICAgIGlmICh2YXJpYWJsZU9i
amVjdC0+bmV4dCgpKQotICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmZpcmVBbGwoKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJl
QWxsKCJFeGVjdXRlZCBldmFsLCBmaXJlZCBWYXJJbmplY3Rpb24gd2F0Y2hwb2ludCIpOwogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewogICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZhcmlhYmxlKGkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckNvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1ZGUg
IldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC05Myw2ICs5NCwxOCBAQCBPU1JF
eGl0KiBDb21waWxhdGlvbjo6YWRkT1NSRXhpdCh1bnNpZ25lCiAgICAgcmV0dXJuICZtX29zckV4
aXRzLmxhc3QoKTsKIH0KIAordm9pZCBDb21waWxhdGlvbjo6c2V0SmV0dGlzb25SZWFzb24oSmV0
dGlzb25SZWFzb24gamV0dGlzb25SZWFzb24sIGNvbnN0IEZpcmVEZXRhaWwqIGRldGFpbCkKK3sK
KyAgICBpZiAobV9qZXR0aXNvblJlYXNvbiAhPSBOb3RKZXR0aXNvbmVkKQorICAgICAgICByZXR1
cm47IC8vIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUgb3JpZ2luYWwgamV0dGlzb24gcmVhc29uLgor
ICAgIAorICAgIG1famV0dGlzb25SZWFzb24gPSBqZXR0aXNvblJlYXNvbjsKKyAgICBpZiAoZGV0
YWlsKQorICAgICAgICBtX2FkZGl0aW9uYWxKZXR0aXNvblJlYXNvbiA9IHRvQ1N0cmluZygqZGV0
YWlsKTsKKyAgICBlbHNlCisgICAgICAgIG1fYWRkaXRpb25hbEpldHRpc29uUmVhc29uID0gQ1N0
cmluZygpOworfQorCiBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIHsKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CkBAIC0xMzMsNiArMTQ2LDggQEAgSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3Rh
dGUqIGV4ZQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5udW1JbmxpbmVkUHV0QnlJZHMsIGpzTnVtYmVyKG1fbnVtSW5saW5lZFB1dEJ5SWRz
KSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLm51bUlubGluZWRDYWxscywganNOdW1iZXIobV9udW1JbmxpbmVkQ2FsbHMpKTsKICAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuamV0dGlz
b25SZWFzb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5nKG1famV0
dGlzb25SZWFzb24pKSkpOworICAgIGlmICghbV9hZGRpdGlvbmFsSmV0dGlzb25SZWFzb24uaXNO
dWxsKCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hZGRpdGlvbmFsSmV0dGlzb25SZWFzb24sIGpzU3RyaW5nKGV4ZWMsIFN0cmlu
Zzo6ZnJvbVVURjgobV9hZGRpdGlvbmFsSmV0dGlzb25SZWFzb24pKSk7CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckNvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBQcm9maWxlciB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmlyZURldGFpbDsKKworbmFt
ZXNwYWNlIFByb2ZpbGVyIHsKIAogY2xhc3MgQnl0ZWNvZGVzOwogY2xhc3MgRGF0YWJhc2U7CkBA
IC02OSwxMCArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPU1JFeGl0U2l0ZShjb25zdCBW
ZWN0b3I8Y29uc3Qgdm9pZCo+JiBjb2RlQWRkcmVzc2VzKTsKICAgICBPU1JFeGl0KiBhZGRPU1JF
eGl0KHVuc2lnbmVkIGlkLCBjb25zdCBPcmlnaW5TdGFjayYsIEV4aXRLaW5kLCBib29sIGlzV2F0
Y2hwb2ludCk7CiAgICAgCi0gICAgdm9pZCBzZXRKZXR0aXNvblJlYXNvbihKZXR0aXNvblJlYXNv
biBqZXR0aXNvblJlYXNvbikKLSAgICB7Ci0gICAgICAgIG1famV0dGlzb25SZWFzb24gPSBqZXR0
aXNvblJlYXNvbjsKLSAgICB9CisgICAgdm9pZCBzZXRKZXR0aXNvblJlYXNvbihKZXR0aXNvblJl
YXNvbiwgY29uc3QgRmlyZURldGFpbCopOwogICAgIAogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICAKQEAgLTgwLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBCeXRlY29k
ZXMqIG1fYnl0ZWNvZGVzOwogICAgIENvbXBpbGF0aW9uS2luZCBtX2tpbmQ7CiAgICAgSmV0dGlz
b25SZWFzb24gbV9qZXR0aXNvblJlYXNvbjsKKyAgICBDU3RyaW5nIG1fYWRkaXRpb25hbEpldHRp
c29uUmVhc29uOwogICAgIFZlY3RvcjxQcm9maWxlZEJ5dGVjb2Rlcz4gbV9wcm9maWxlZEJ5dGVj
b2RlczsKICAgICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7CiAgICAg
SGFzaE1hcDxPcmlnaW5TdGFjaywgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+PiBt
X2NvdW50ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgQXJyYXlCdWZmZXI6OnRyYW5zZmVyKEFycmF5QnVmZmVyQ28KICAgICAgICAgaWYgKEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGNl
bGwpKQogICAgICAgICAgICAgdmlldy0+bmV1dGVyKCk7CiAgICAgICAgIGVsc2UgaWYgKEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Kj4oY2VsbCkpCi0gICAgICAgICAgICB3YXRjaHBv
aW50LT5zZXQoKS0+ZmlyZUFsbCgpOworICAgICAgICAgICAgd2F0Y2hwb2ludC0+ZmlyZUFsbCgp
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNSArNjAsMTAgQEAgU3RydWN0dXJlKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bgogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZv
KENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKK3ZvaWQgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpmaXJlQWxsKCkKK3sKKyAgICBzZXQoKS0+ZmlyZUFsbCgi
QXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgJKHJldmlzaW9uIDE3MDQzMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKICAgICBXYXRjaHBvaW50U2V0
KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgZmlyZUFsbCgp
OwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3NldDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAko
cmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogICAgIG1hY3Jv
KF9fbG9va3VwR2V0dGVyX18pIFwKICAgICBtYWNybyhfX2xvb2t1cFNldHRlcl9fKSBcCiAgICAg
bWFjcm8oYWRkKSBcCisgICAgbWFjcm8oYWRkaXRpb25hbEpldHRpc29uUmVhc29uKSBcCiAgICAg
bWFjcm8oYW5vbnltb3VzKSBcCiAgICAgbWFjcm8oYXJndW1lbnRzKSBcCiAgICAgbWFjcm8oYmlu
ZCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEw
LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eQogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3RvdWNoX2VudHJ5KQogewogICAgIEJFR0lOKCk7Ci0gICAgZXhlYy0+
Y29kZUJsb2NrKCktPnN5bWJvbFRhYmxlKCktPm1fZnVuY3Rpb25FbnRlcmVkT25jZS50b3VjaCgp
OworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5zeW1ib2xUYWJsZSgpLT5tX2Z1bmN0aW9uRW50ZXJl
ZE9uY2UudG91Y2goIkZ1bmN0aW9uIChyZSllbnRlcmVkIik7CiAgICAgRU5EKCk7CiB9CiAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FwdHVyZWRfbW92KQog
ICAgIEJFR0lOKCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IE9QX0MoMikuanNWYWx1ZSgpOwogICAg
IGlmIChWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IHBjWzNdLnUud2F0Y2hwb2ludFNldCkK
LSAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2bSwgdmFsdWUpOworICAgICAgICBzZXQtPm5vdGlm
eVdyaXRlKHZtLCB2YWx1ZSwgIkV4ZWN1dGVkIG9wX2NhcHR1cmVkX21vdiIpOwogICAgIFJFVFVS
Tih2YWx1ZSk7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmV3X2NhcHR1cmVkX2Z1CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBG
dW5jdGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFz
QWN0aXZhdGlvbigpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLCBleGVjLT5zY29wZSgp
KTsKICAgICBpZiAoVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBwY1szXS51LndhdGNocG9p
bnRTZXQpCi0gICAgICAgIHNldC0+bm90aWZ5V3JpdGUodm0sIHZhbHVlKTsKKyAgICAgICAgc2V0
LT5ub3RpZnlXcml0ZSh2bSwgdmFsdWUsICJFeGVjdXRlZCBvcF9uZXdfY2FwdHVyZWRfZnVuYyIp
OwogICAgIFJFVFVSTih2YWx1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NiArOTcsMTQgQEAgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tKFZNKiB2bSwgZG91YgogICAg
IHJldHVybiBJZGVudGlmaWVyKHZtLCB2bS0+bnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlKSk7CiB9
CiAKK3ZvaWQgSWRlbnRpZmllcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGlmIChpbXBsKCkpCisgICAgICAgIG91dC5wcmludChpbXBsKCkpOworICAgIGVsc2UKKyAgICAg
ICAgb3V0LnByaW50KCI8bnVsbCBpZGVudGlmaWVyPiIpOworfQorCiAjaWZuZGVmIE5ERUJVRwog
CiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKFZNKiB2bSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgJKHJldmlz
aW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25zdCBj
aGFyKik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CisgICAgICAgIAorICAgICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmlu
ZyBtX3N0cmluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZv
aWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVh
cigpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50LmZpcmVBbGwoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7
CiAgICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0
XV0gbXVzdCBjbGVhciBtX2FsbG9jYXRpb25Qcm9maWxlLgogICAgICAgICBQdXRQcm9wZXJ0eVNs
b3QgZG9udENhY2hlKHRoaXNPYmplY3QpOwogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGUu
Y2xlYXIoKTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQuZmlyZUFsbCgpOworICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludC5maXJlQWxsKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlv
biIpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKEV4ZWNTdGEKICAgICBOZXdHbG9iYWxWYXIgdmFy
ID0gYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSwgSXNWYXJpYWJsZSk7CiAgICAgcmVnaXN0ZXJB
dCh2YXIucmVnaXN0ZXJOdW1iZXIpLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAg
aWYgKHZhci5zZXQpCi0gICAgICAgIHZhci5zZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSk7Cisg
ICAgICAgIHZhci5zZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSwgVmFyaWFibGVXcml0ZUZpcmVE
ZXRhaWwodGhpcywgcHJvcGVydHlOYW1lKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNPYmplY3Qq
IGxhc3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmplY3QpCkBAIC01NjEsNyArNTYxLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IGFsbCBhbGxvY2F0aW9ucyBvciBpbmRleGVkIHN0b3JhZ2UgdHJhbnNpdGlvbnMg
dGhhdCBhcmUgaW5saW5pbmcKICAgICAvLyB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J3Mgc2FmZSB0
byB0cmFuc2l0aW9uIHRvIGEgbm9uLVNsb3dQdXQgYXJyYXkgc3RvcmFnZSBkb24ndAogICAgIC8v
IGRvIHNvIGFueW1vcmUuCi0gICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZpcmVBbGwo
KTsKKyAgICBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludC0+ZmlyZUFsbCgiSGF2aW5nIGEgYmFk
IHRpbWUiKTsKICAgICBBU1NFUlQoaXNIYXZpbmdBQmFkVGltZSgpKTsgLy8gVGhlIHdhdGNocG9p
bnQgaXMgd2hhdCB0ZWxscyB1cyB0aGF0IHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLgogICAgIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFsbCBKU0FycmF5IGFsbG9jYXRpb25zIHRoYXQgbG9hZCB0
aGUgYXBwcm9wcmlhdGUgc3RydWN0dXJlIGZyb20KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCShyZXZpc2lvbiAx
NzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK3ZvaWQgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIldyaXRlIHRvICIsIG1fbmFtZSwgIiBpbiAiLCBK
U1ZhbHVlKG1fb2JqZWN0KSk7Cit9CisKIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTU3lt
Ym9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTeW1ib2xUYWJsZU9iamVjdCo+
KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNTeW1ib2xUYWJsZU9i
amVjdDsKKworY2xhc3MgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwgOiBwdWJsaWMgRmlyZURldGFp
bCB7CitwdWJsaWM6CisgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwoSlNTeW1ib2xUYWJsZU9i
amVjdCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCisgICAgICAgIDogbV9vYmpl
Y3Qob2JqZWN0KQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBKU1N5bWJvbFRhYmxlT2JqZWN0KiBtX29iamVjdDsKKyAgICBjb25zdCBQcm9wZXJ0eU5hbWUm
IG1fbmFtZTsKK307CisKIGNsYXNzIEpTU3ltYm9sVGFibGVPYmplY3QgOiBwdWJsaWMgSlNTY29w
ZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU1Njb3BlIEJhc2U7CkBAIC0xMzksNyArMTU2LDcg
QEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBpdGVy
LT52YWx1ZS53YXRjaHBvaW50U2V0KCkpCi0gICAgICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKHZt
LCB2YWx1ZSk7CisgICAgICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSwgVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgcmVnID0g
Jm9iamVjdC0+cmVnaXN0ZXJBdChmYXN0RW50cnkuZ2V0SW5kZXgoKSk7CiAgICAgfQogICAgIC8v
IEknZCBwcmVmZXIgd2Ugbm90IGhvbGQgbG9jayB3aGlsZSBleGVjdXRpbmcgYmFycmllcnMsIHNp
bmNlIEkgcHJlZmVyIHRvIHJlc2VydmUKQEAgLTE2Niw3ICsxODMsNyBAQCBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVu
dHJ5ID0gaXRlci0+dmFsdWU7CiAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAg
ICAgICBpZiAoVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0
KCkpCi0gICAgICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSk7CisgICAgICAgICAg
ICBzZXQtPm5vdGlmeVdyaXRlKHZtLCB2YWx1ZSwgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1
dGVzKTsKICAgICAgICAgcmVnID0gJm9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWUuaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTQgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0lt
cGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CiAgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faW1wbCkKKyAgICAgICAg
ICAgIG91dC5wcmludChtX2ltcGwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJp
bnQoIjxudWxsIHByb3BlcnR5IG5hbWU+Iik7CisgICAgfQogCiBwcml2YXRlOgogICAgIFN0cmlu
Z0ltcGwqIG1faW1wbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDYgKzk5NywzMSBAQCB2
b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1CiAgICAgfQogfQogCituYW1l
c3BhY2UgeworCitjbGFzcyBTdHJ1Y3R1cmVGaXJlRGV0YWlsIDogcHVibGljIEZpcmVEZXRhaWwg
eworcHVibGljOgorICAgIFN0cnVjdHVyZUZpcmVEZXRhaWwoY29uc3QgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7
CisgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlIHRyYW5zaXRpb24gZnJvbSAiLCAqbV9zdHJ1
Y3R1cmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3ZvaWQgU3RydWN0dXJlOjpu
b3RpZnlUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1Y3R1cmUoKSBjb25zdAoreworICAgIG1fdHJhbnNp
dGlvbldhdGNocG9pbnRTZXQuZmlyZUFsbChTdHJ1Y3R1cmVGaXJlRGV0YWlsKHRoaXMpKTsKK30K
KwogSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChDb2RlQmxvY2sqIGNvZGVC
bG9jaykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvdG90eXBlRm9yTG9va3VwKGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHJldmlzaW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsMTAgKzM4MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldC5hZGQod2F0Y2hwb2ludCk7CiAg
ICAgfQogICAgICAgICAKLSAgICB2b2lkIG5vdGlmeVRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVy
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmZpcmVB
bGwoKTsKLSAgICB9CisgICAgdm9pZCBub3RpZnlUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1Y3R1cmUo
KSBjb25zdDsKICAgICAKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiB0cmFuc2l0aW9uV2F0Y2hw
b2ludFNldCgpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwx
MyArNzksMTMgQEAgdm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KFdhdAogICAg
IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZCh3YXRjaHBvaW50KTsKIH0KIAotdm9pZCBT
eW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQor
dm9pZCBTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CiAgICAg
aWYgKCF3YXRjaHBvaW50cykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHdhdGNocG9pbnRz
LT5ub3RpZnlXcml0ZSh2bSwgdmFsdWUpOworICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSh2
bSwgdmFsdWUsIGRldGFpbCk7CiB9CiAKIFN5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5KiBTeW1i
b2xUYWJsZUVudHJ5OjppbmZsYXRlU2xvdygpCkBAIC0xMjcsMTEgKzEyNywxMiBAQCBTeW1ib2xU
YWJsZTo6V2F0Y2hwb2ludENsZWFudXA6On5XYXRjaHBvCiAKIHZvaWQgU3ltYm9sVGFibGU6Oldh
dGNocG9pbnRDbGVhbnVwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCiB7CisgICAgU3RyaW5n
RmlyZURldGFpbCBkZXRhaWwoIlN5bWJvbCB0YWJsZSBjbGVhbi11cCBkdXJpbmcgR0MiKTsKICAg
ICBNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJvbFRhYmxlLT5tX21hcC5iZWdpbigpOwogICAg
IE1hcDo6aXRlcmF0b3IgZW5kID0gbV9zeW1ib2xUYWJsZS0+bV9tYXAuZW5kKCk7CiAgICAgZm9y
ICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgpKQotICAgICAgICAgICAgc2V0
LT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOworICAgICAgICAgICAgc2V0LT5maW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShkZXRhaWwpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjksMTEgKzIyOSwxMSBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CiAgICAgICAgIHJl
dHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOwogICAgIH0KICAgICAKLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBub3RpZnlXcml0ZVNsb3codm0sIHZh
bHVlKTsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KHZtLCB2YWx1ZSwgZGV0YWlsKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpAQCAtMjU3LDcgKzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAg
ICAKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5
Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3coVk0mLCBKU1Zh
bHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG5vdGlmeVdyaXRlU2xvdyhWTSYsIEpT
VmFsdWUsIGNvbnN0IEZpcmVEZXRhaWwmKTsKICAgICAKICAgICBib29sIGlzRmF0KCkgY29uc3QK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAx
NzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5Niw3ICs4OTYsNyBAQCB2b2lkIFZNOjpyZWdpc3RlcldhdGNocG9pbnRGb3JJ
bXB1cmVQcm9wCiB2b2lkIFZNOjphZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBpZiAoUmVmUHRyPFdhdGNocG9pbnRTZXQ+IHdhdGNocG9pbnRTZXQg
PSBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHMudGFrZShwcm9wZXJ0eU5hbWUpKQotICAg
ICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKCk7CisgICAgICAgIHdhdGNocG9pbnRTZXQtPmZp
cmVBbGwoIkltcHVyZSBwcm9wZXJ0eSBhZGRlZCIpOwogfQogCiBjbGFzcyBTZXRFbmFibGVkUHJv
ZmlsZXJGdW5jdG9yIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDQ1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0
LTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2Z0bG9w
dF0gSWYgYSBDb2RlQmxvY2sgaXMgamV0dGlzb25lZCBkdWUgdG8gYSB3YXRjaHBvaW50IHRoZW4g
aXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGZpZ3VyZSBvdXQgc29tZXRoaW5nIGFib3V0IHRoYXQg
d2F0Y2hwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisKIDIwMTQtMDYtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFtmdGxvcHRdIFJlbmFtZWQgRGVidWdnZXJBY3RpdmF0aW9uIHRvIERlYnVnZ2Vy
U2NvcGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg2NCw3
ICs4NjQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBl
SW5IZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBl
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgp
LT5maXJlQWxsKCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
Z2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxs
KFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3RcIik7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRj
bGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gcHRyO1xuIik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzA0NTkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wNi0yNSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIFtmdGxvcHRdIElmIGEgQ29kZUJsb2NrIGlzIGpldHRp
c29uZWQgZHVlIHRvIGEgd2F0Y2hwb2ludCB0aGVuIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBm
aWd1cmUgb3V0IHNvbWV0aGluZyBhYm91dCB0aGF0IHdhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDMzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9kaXNwbGF5LXByb2Zp
bGVyLW91dHB1dDoKKwogMjAxNC0wNS0wOCAgRGF2aWQgRmFybGVyICA8ZGZhcmxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgb2xkLXJ1bi13ZWJraXQtdGVzdHM6IHVwZGF0ZSBzdHJpbmdzIGZvciBz
aW11bGF0b3IgZGV2aWNlcyBhbmQgYXBwIG5hbWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZGlzcGxh
eS1wcm9maWxlci1vdXRwdXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9kaXNwbGF5LXBy
b2ZpbGVyLW91dHB1dAkocmV2aXNpb24gMTcwNDMyKQorKysgVG9vbHMvU2NyaXB0cy9kaXNwbGF5
LXByb2ZpbGVyLW91dHB1dAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIGVuZAog
Y2xhc3MgQ29tcGlsYXRpb24KICAgICBhdHRyX2FjY2Vzc29yIDpieXRlY29kZSwgOmVuZ2luZSwg
OmRlc2NyaXB0aW9ucywgOmNvdW50ZXJzLCA6Y29tcGlsYXRpb25JbmRleAogICAgIGF0dHJfYWNj
ZXNzb3IgOm9zckV4aXRzLCA6cHJvZmlsZWRCeXRlY29kZXMsIDpudW1JbmxpbmVkR2V0QnlJZHMs
IDpudW1JbmxpbmVkUHV0QnlJZHMKLSAgICBhdHRyX2FjY2Vzc29yIDpudW1JbmxpbmVkQ2FsbHMs
IDpqZXR0aXNvblJlYXNvbgorICAgIGF0dHJfYWNjZXNzb3IgOm51bUlubGluZWRDYWxscywgOmpl
dHRpc29uUmVhc29uLCA6YWRkaXRpb25hbEpldHRpc29uUmVhc29uCiAgICAgCiAgICAgZGVmIGlu
aXRpYWxpemUoanNvbikKICAgICAgICAgQGJ5dGVjb2RlID0gJGJ5dGVjb2Rlc1tqc29uWyJieXRl
Y29kZXNJRCJdLnRvX2ldCkBAIC0zODUsNiArMzg1LDcgQEAgY2xhc3MgQ29tcGlsYXRpb24KICAg
ICAgICAgQG51bUlubGluZWRQdXRCeUlkcyA9IGpzb25bIm51bUlubGluZWRQdXRCeUlkcyJdCiAg
ICAgICAgIEBudW1JbmxpbmVkQ2FsbHMgPSBqc29uWyJudW1JbmxpbmVkQ2FsbHMiXQogICAgICAg
ICBAamV0dGlzb25SZWFzb24gPSBqc29uWyJqZXR0aXNvblJlYXNvbiJdCisgICAgICAgIEBhZGRp
dGlvbmFsSmV0dGlzb25SZWFzb24gPSBqc29uWyJhZGRpdGlvbmFsSmV0dGlzb25SZWFzb24iXQog
ICAgIGVuZAogICAgIAogICAgIGRlZiBjb2RlSGFzaFNvcnRLZXkKQEAgLTg1OCw2ICs4NTksOSBA
QCBkZWYgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRBcnJheSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIGNvbXBpbGF0aW9uLmpldHRpc29uUmVhc29uICE9ICJOb3RKZXR0aXNvbmVkIgog
ICAgICAgICAgICAgICAgIHB1dHMgIiAgICBKZXR0aXNvbmVkIGR1ZSB0byAje2NvbXBpbGF0aW9u
LmpldHRpc29uUmVhc29ufSIKKyAgICAgICAgICAgICAgICBpZiBjb21waWxhdGlvbi5hZGRpdGlv
bmFsSmV0dGlzb25SZWFzb24KKyAgICAgICAgICAgICAgICAgICAgcHV0cyAiICAgICAgICAje2Nv
bXBpbGF0aW9uLmFkZGl0aW9uYWxKZXR0aXNvblJlYXNvbn0iCisgICAgICAgICAgICAgICAgZW5k
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQogICAgIHdoZW4gImlubGluZXMiCg==
</data>
<flag name="review"
          id="258387"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>