<?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>233019</bug_id>
          
          <creation_ts>2021-11-11 15:26:09 -0800</creation_ts>
          <short_desc>Add VM::writeBarrier() and VM::mutatorFence().</short_desc>
          <delta_ts>2021-11-11 15:59:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814260</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 15:26:09 -0800</bug_when>
    <thetext>These are ALWAYS_INLINE functions that will forward the call to the Heap versions.  Adding these allows us to make all the client code more terse, and also makes it easier to redirect the underlying writeBarrier implementation later for global GC work.  Additionally, this will help make the global GC patch less of a mega patch and easier to review later.

Also remove unused Heap::writeBarrierWithoutFence().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814262</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 15:27:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/85318693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814270</commentid>
    <comment_count>2</comment_count>
      <attachid>444011</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 15:33:32 -0800</bug_when>
    <thetext>Created attachment 444011
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814280</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 15:59:14 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r285687: &lt;http://trac.webkit.org/r285687&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444011</attachid>
            <date>2021-11-11 15:33:32 -0800</date>
            <delta_ts>2021-11-11 15:49:58 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233019.patch</filename>
            <type>text/plain</type>
            <size>54816</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NjczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNiBA
QAorMjAyMS0xMS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIFZNOjp3cml0ZUJhcnJpZXIoKSBhbmQgVk06Om11dGF0b3JGZW5jZSgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDE5CisgICAgICAgIHJk
YXI6Ly84NTMxODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXNlIGFyZSBBTFdBWVNfSU5MSU5FIGZ1bmN0aW9ucyB0aGF0IHdpbGwgZm9yd2Fy
ZCB0aGUgY2FsbCB0byB0aGUgSGVhcCB2ZXJzaW9ucy4KKyAgICAgICAgQWRkaW5nIHRoZXNlIGFs
bG93cyB1cyB0byBtYWtlIGFsbCB0aGUgY2xpZW50IGNvZGUgbW9yZSB0ZXJzZSwgYW5kIGFsc28g
bWFrZXMgaXQKKyAgICAgICAgZWFzaWVyIHRvIHJlZGlyZWN0IHRoZSB1bmRlcmx5aW5nIHdyaXRl
QmFycmllciBpbXBsZW1lbnRhdGlvbiBsYXRlciBmb3IgZ2xvYmFsIEdDCisgICAgICAgIHdvcmsu
ICBBZGRpdGlvbmFsbHksIHRoaXMgd2lsbCBoZWxwIG1ha2UgdGhlIGdsb2JhbCBHQyBwYXRjaCBs
ZXNzIG9mIGEgbWVnYSBwYXRjaAorICAgICAgICBhbmQgZWFzaWVyIHRvIHJldmlldyBsYXRlci4K
KworICAgICAgICBBbHNvIHJlbW92ZSB1bnVzZWQgSGVhcDo6d3JpdGVCYXJyaWVyV2l0aG91dEZl
bmNlKCkuCisKKyAgICAgICAgVGhpcyBpcyBhIHJlZmFjdG9yaW5nIHBhdGNoLiAgVGhlcmUgaXMg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0lu
Zm8uaDoKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmg6CisgICAgICAgIChKU0M6Ok9iamVj
dFByb3BlcnR5Q29uZGl0aW9uOjpwcmVzZW5jZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uOjphYnNlbmNlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25k
aXRpb246OmFic2VuY2VPZlNldEVmZmVjdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5
Q29uZGl0aW9uOjplcXVpdmFsZW5jZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uOjpoYXNTdGF0aWNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5
Q29uZGl0aW9uOjpoYXNQcm90b3R5cGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmFic2VuY2VPZlNldEVmZmVjdCk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5Q29uZGl0aW9uOjpoYXNQcm90b3R5cGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Omlu
aXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0
QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEluQnlJ
ZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6
CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OmNvbnNpZGVyQ2FjaGluZyk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdKSVRG
aW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQbGFuOjpmaW5hbGl6ZSk6CisgICAgICAgICogZnRsL0ZUTEpJVEZp
bmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5hbGl6ZSk6
CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXJXaXRob3V0RmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6OkxMSW50
OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3dyaXRl
X2JhcnJpZXJfc2xvdyk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9BdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpBdXhpbGlhcnlCYXJy
aWVyPFQ+OjpBdXhpbGlhcnlCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6QXV4aWxpYXJ5QmFycmll
cjxUPjo6c2V0KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpJbmZlcnJlZFZhbHVlPEpTQ2VsbFR5cGU+OjpJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludFNl
dDo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRWYWx1ZTxKU0NlbGxU
eXBlPjo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjphcHBlbmRNZW1jcHkpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaElubGluZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFsbG9jYXRl
UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxp
emVSYXJlRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vh
a09iamVjdFJlZi5oOgorICAgICAgICAqIHJ1bnRpbWUvTGF6eVByb3BlcnR5SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpFbGVtZW50VHlwZT46OnNldE1heUJlTnVsbCk6CisgICAgICAgICogcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAgICAgICAoSlNDOjpP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDYWNoZWRSZXN1bHQ6Omxhc3RSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
Q2FjaGVkUmVzdWx0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6cmVjb3Jk
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omlu
c3RhbGxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6
OlZNOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpWTTo6d3JpdGVCYXJyaWVyU2xvd1Bh
dGgpOgorICAgICAgICAoSlNDOjpWTTo6bXV0YXRvckZlbmNlKToKKyAgICAgICAgKiBydW50aW1l
L1dyaXRlQmFycmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6VHJhaXRzPjo6c2V0RWFybHlW
YWx1ZSk6CisgICAgICAgIChKU0M6OlJhd1ZhbHVlVHJhaXRzPFVua25vd24+Pjo6c2V0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oOgorCiAyMDIxLTExLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBEaXNhYmxlIEpJVCBydW5zIG9mIHRoZSBFeGVjdXRpb25UaW1lTGltaXRUZXN0
IHdoZW4gIUVOQUJMRShKSVQpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc09uTGlzdCgpKQog
ICAgICAgICAgICAgcmVtb3ZlKCk7CiAgICAgICAgIG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdp
dGhMaW5rQml0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbGVlKTsKLSAgICAgICAgdm0u
aGVhcC53cml0ZUJhcnJpZXIob3duZXIsIGNhbGxlZSk7CisgICAgICAgIHZtLndyaXRlQmFycmll
cihvd25lciwgY2FsbGVlKTsKICAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIGlmIChvd25lcikKLSAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKG93bmVyKTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihvd25l
cik7CiAgICAgICAgIHJldHVybiBwcmVzZW5jZVdpdGhvdXRCYXJyaWVyKG9iamVjdCwgdWlkLCBv
ZmZzZXQsIGF0dHJpYnV0ZXMpOwogICAgIH0KIApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCwgSlNPYmplY3QqIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIGlmIChv
d25lcikKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKKyAgICAgICAg
ICAgIHZtLndyaXRlQmFycmllcihvd25lcik7CiAgICAgICAgIHJldHVybiBhYnNlbmNlV2l0aG91
dEJhcnJpZXIob2JqZWN0LCB1aWQsIHByb3RvdHlwZSk7CiAgICAgfQogICAgIApAQCAtMTAxLDcg
KzEwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVj
dCogb2JqZWN0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKG93bmVyKQotICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJp
ZXIob3duZXIpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgICAgICAg
cmV0dXJuIGFic2VuY2VPZlNldEVmZmVjdFdpdGhvdXRCYXJyaWVyKG9iamVjdCwgdWlkLCBwcm90
b3R5cGUpOwogICAgIH0KICAgICAKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChvd25lcikKLSAgICAg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKKyAgICAgICAgICAgIHZtLndyaXRl
QmFycmllcihvd25lcik7CiAgICAgICAgIHJldHVybiBlcXVpdmFsZW5jZVdpdGhvdXRCYXJyaWVy
KG9iamVjdCwgdWlkLCB2YWx1ZSk7CiAgICAgfQogCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGlj
OgogICAgICAgICByZXN1bHQubV9vYmplY3QgPSBvYmplY3Q7CiAgICAgICAgIHJlc3VsdC5tX2Nv
bmRpdGlvbiA9IFByb3BlcnR5Q29uZGl0aW9uOjpoYXNTdGF0aWNQcm9wZXJ0eSh1aWQpOwogICAg
ICAgICBpZiAob3duZXIpCi0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihvd25lcik7
CisgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIob3duZXIpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3RvdHlw
ZSkKICAgICB7CiAgICAgICAgIGlmIChvd25lcikKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKG93bmVyKTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihvd25lcik7CiAgICAg
ICAgIHJldHVybiBoYXNQcm90b3R5cGVXaXRob3V0QmFycmllcihvYmplY3QsIHByb3RvdHlwZSk7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlD
b25kaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAg
aWYgKG93bmVyKQotICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOworICAg
ICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgICAgICAgcmV0dXJuIGFic2VuY2VX
aXRob3V0QmFycmllcih1aWQsIHByb3RvdHlwZSk7CiAgICAgfQogICAgIApAQCAtMTAzLDcgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgaWYgKG93
bmVyKQotICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOworICAgICAgICAg
ICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgICAgICAgcmV0dXJuIGFic2VuY2VPZlNldEVm
ZmVjdFdpdGhvdXRCYXJyaWVyKHVpZCwgcHJvdG90eXBlKTsKICAgICB9CiAgICAgCkBAIC0xMjAs
NyArMTIwLDcgQEAgcHVibGljOgogICAgICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFs
dWUuaXNDZWxsKCkgJiYgb3duZXIpCi0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihv
d25lcik7CisgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIob3duZXIpOwogICAgICAgICByZXR1
cm4gZXF1aXZhbGVuY2VXaXRob3V0QmFycmllcih1aWQsIHZhbHVlKTsKICAgICB9CiAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFByb3BlcnR5Q29uZGl0aW9uIGhhc1By
b3RvdHlwZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiAgICAg
ewogICAgICAgICBpZiAob3duZXIpCi0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihv
d25lcik7CisgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIob3duZXIpOwogICAgICAgICByZXR1
cm4gaGFzUHJvdG90eXBlV2l0aG91dEJhcnJpZXIocHJvdG90eXBlKTsKICAgICB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRTZWxmKAogICAgIHNldENh
Y2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6R2V0QnlJZFNlbGYpOwogICAgIG1faWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAgICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0gaW5saW5l
QWNjZXNzQmFzZVN0cnVjdHVyZS0+aWQoKTsKLSAgICBjb2RlQmxvY2stPnZtKCkuaGVhcC53cml0
ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICBjb2RlQmxvY2stPnZtKCkud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jayk7CiAgICAgYnlJZFNlbGZPZmZzZXQgPSBvZmZzZXQ7CiB9CiAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYQogICAgIHNldENh
Y2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2UpOwogICAgIG1faWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CiAgICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0gaW5s
aW5lQWNjZXNzQmFzZVN0cnVjdHVyZS0+aWQoKTsKLSAgICBjb2RlQmxvY2stPnZtKCkuaGVhcC53
cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICBjb2RlQmxvY2stPnZtKCkud3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CiAgICAgYnlJZFNlbGZPZmZzZXQgPSBvZmZzZXQ7CiB9CiAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEluQnlJZFNlbGYoYwogICAgIHNl
dENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6SW5CeUlkU2VsZik7CiAgICAgbV9pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKICAgICBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSBpbmxp
bmVBY2Nlc3NCYXNlU3RydWN0dXJlLT5pZCgpOwotICAgIGNvZGVCbG9jay0+dm0oKS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOworICAgIGNvZGVCbG9jay0+dm0oKS53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKICAgICBieUlkU2VsZk9mZnNldCA9IG9mZnNldDsKIH0KIApAQCAtMjI3LDcg
KzIyNyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm8KICAgICAg
ICAgYnVmZmVyaW5nQ291bnRkb3duID0gT3B0aW9uczo6cmVwYXRjaEJ1ZmZlcmluZ0NvdW50ZG93
bigpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0pKCk7Ci0gICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlzTmV3
bHlBZGRlZCA9IG1fYnVmZmVyZWRTdHJ1Y3R1cmVzLmFkZCh7IHN0cnVjdHVyZSwgaW1wbCB9KS5p
c05ld0VudHJ5OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTmV3bHlBZGRlZCkK
LSAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAg
ICAgICAgICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgcmV0dXJu
IGlzTmV3bHlBZGRlZDsKICAgICAgICAgfQogICAgICAgICBjb3VudGRvd24tLTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I6OmZpbmFsaXoKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJv
bUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkpKQogICAgICAgICAgICAgbV9jb2RlQmxvY2stPmlu
aXRpYWxpemVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoKTsKICAgICB9Ci0gICAgbV92bS5oZWFw
LndyaXRlQmFycmllcihtX2NvZGVCbG9jay5nZXQoKSk7CisgICAgbV92bS53cml0ZUJhcnJpZXIo
bV9jb2RlQmxvY2suZ2V0KCkpOwogICAgIG1fdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9j
YXRlZChtX2NvZGVCbG9jay0+bV9pbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkgKyBtX2NvZGVC
bG9jay0+bV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29k
ZUMKIAogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9pc0NhY2hlZCA9IGZhbHNl
OwotICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOworICAgIHZtLndyaXRlQmFycmllcih0
aGlzKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDI4NTY1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXpl
KCkKIAogICAgIC8vIFRoZSBjb2RlQmxvY2sgaXMgbm93IHJlc3BvbnNpYmxlIGZvciBrZWVwaW5n
IG1hbnkgdGhpbmdzIGFsaXZlIChlLmcuIGZyb3plbiB2YWx1ZXMpCiAgICAgLy8gdGhhdCB3ZXJl
IHByZXZpb3VzbHkga2VwdCBhbGl2ZSBieSB0aGUgcGxhbi4KLSAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihjb2RlQmxvY2spOworICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC04NSw0ICs4NSwzIEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5h
bGl6ZSgpCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlCiAgICAgLy8gVGhlIGNhbGxlciB3aWxs
IHN0b3JlIHRvIHRoaXMgb2JqZWN0IHdpdGhvdXQgYmFycmllcnMuIE1vc3QgbGlrZWx5LCBhdCB0
aGlzIHBvaW50LCB0aGlzIGlzCiAgICAgLy8gc3RpbGwgYSB5b3VuZyBvYmplY3QgYW5kIHNvIG5v
IGJhcnJpZXJzIGFyZSBuZWVkZWQuIEJ1dCBpdCdzIGdvb2QgdG8gYmUgY2FyZWZ1bCBhbnl3YXks
CiAgICAgLy8gc2luY2UgdGhlIEdDIHNob3VsZCBiZSBhbGxvd2VkIHRvIGRvIGNyYXp5IChsaWtl
IHByZXRlbnVyaW5nLCBmb3IgZXhhbXBsZSkuCi0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIocmVz
dWx0KTsKKyAgICB2bS53cml0ZUJhcnJpZXIocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDI4
NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU4Myw3ICs1ODMsNyBAQCBDb21waWxhdGlvblJlc3VsdCBQbGFuOjpmaW5hbGl6
ZSgpCiAgICAgfSgpOwogCiAgICAgLy8gV2Ugd2lsbCBlc3RhYmxpc2ggbmV3IHJlZmVyZW5jZXMg
ZnJvbSB0aGUgY29kZSBibG9jayB0byB0aGluZ3MuIFNvLCB3ZSBuZWVkIGEgYmFycmllci4KLSAg
ICBtX3ZtLT5oZWFwLndyaXRlQmFycmllcihtX2NvZGVCbG9jayk7CisgICAgbV92bS0+d3JpdGVC
YXJyaWVyKG1fY29kZUJsb2NrKTsKIAogICAgIG1fY2FsbGJhY2stPmNvbXBpbGF0aW9uRGlkQ29t
cGxldGUobV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRERkdDb2RlQmxvY2ssIHJlc3VsdCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJl
dmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxp
emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBKSVRGaW5hbGl6
ZXI6OmZpbmFsaXplKCkKIAogICAgIC8vIFRoZSBjb2RlQmxvY2sgaXMgbm93IHJlc3BvbnNpYmxl
IGZvciBrZWVwaW5nIG1hbnkgdGhpbmdzIGFsaXZlIChlLmcuIGZyb3plbiB2YWx1ZXMpCiAgICAg
Ly8gdGhhdCB3ZXJlIHByZXZpb3VzbHkga2VwdCBhbGl2ZSBieSB0aGUgcGxhbi4KLSAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxv
Y2spOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04Miw0ICs4MiwzIEBAIGJvb2wgSklURmlu
YWxpemVyOjpmaW5hbGl6ZSgpCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGVCYXJy
aWVyKGNvbnN0IEpTQ2VsbCogZnJvbSk7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlND
ZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKTsKICAgICB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0Nl
bGwqIGZyb20sIEpTQ2VsbCogdG8pOwotICAgIAotICAgIHZvaWQgd3JpdGVCYXJyaWVyV2l0aG91
dEZlbmNlKGNvbnN0IEpTQ2VsbCogZnJvbSk7Ci0gICAgCisKICAgICB2b2lkIG11dGF0b3JGZW5j
ZSgpOwogICAgIAogICAgIC8vIFRha2UgdGhpcyBpZiB5b3Uga25vdyB0aGF0IGZyb20tPmNlbGxT
dGF0ZSgpIDwgYmFycmllclRocmVzaG9sZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE1ICsxMjUsNiBA
QCBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDCiAgICAgICAgIHdyaXRl
QmFycmllclNsb3dQYXRoKGZyb20pOwogfQogCi1pbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJp
ZXJXaXRob3V0RmVuY2UoY29uc3QgSlNDZWxsKiBmcm9tKQotewotICAgIEFTU0VSVF9HQ19PQkpF
Q1RfTE9PS1NfVkFMSUQoY29uc3RfY2FzdDxKU0NlbGwqPihmcm9tKSk7Ci0gICAgaWYgKCFmcm9t
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFVOTElLRUxZKGlzV2l0aGluVGhyZXNob2xkKGZy
b20tPmNlbGxTdGF0ZSgpLCBibGFja1RocmVzaG9sZCkpKQotICAgICAgICBhZGRUb1JlbWVtYmVy
ZWRTZXQoZnJvbSk7Ci19Ci0KIGlubGluZSB2b2lkIEhlYXA6Om11dGF0b3JGZW5jZSgpCiB7CiAg
ICAgaWYgKGlzWDg2KCkgfHwgVU5MSUtFTFkobXV0YXRvclNob3VsZEJlRmVuY2VkKCkpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyODU2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTA5LDcgKzMxMDksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uT1NSV3JpCiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOworICAgIHZtLndyaXRlQmFycmllcihjZWxsKTsKIH0K
IAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRo
LCB2b2lkLCAoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKSkKQEAgLTMxMTcsNyArMzExNyw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Xcml0ZUIKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXJTbG93UGF0aChjZWxsKTsK
KyAgICB2bS53cml0ZUJhcnJpZXJTbG93UGF0aChjZWxsKTsKIH0KIAogSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIsIHZvaWQsIChWTSogdm1Q
b2ludGVyKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk2LDcgKzY5Niw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2Rl
QmxvY2spOworICAgICAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRpYyB2
b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEoKICAgICAgICAgICAgIG1ldGFkYXRhLnNl
dFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB2
bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxM
SW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAtODI2LDcg
KzgyNiw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QKICAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAh
c3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsK
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOwotICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jayk7CisgICAgICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CkBAIC04NDAsNyArODQwLDcgQEAgc3Rh
dGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAogICAgICAgICAgICAgbWV0YWRh
dGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQotICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2spOworICAgICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTc5LDcgKzk3OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9zdHJ1Y3R1cmVDaGFpbi5zZXQodm0sIGNvZGVCbG9jaywgY2hhaW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLndy
aXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtOTk3LDcgKzk5Nyw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKICAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2spOworICAgICAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxvY2spOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YQogICAgICAgICAgICAgICAgICAg
ICAvLyAgVXBkYXRlIHRoZSBjYWNoZWQgcHJpdmF0ZSBzeW1ib2wKICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2Vs
bCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJs
b2NrKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTEyOTcsNyArMTI5Nyw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmEKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9
IG5ld1N0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X3ByaXZhCiAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTEzNTgsNyArMTM1OCw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmEKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5t
X2JyYW5kLnNldCh2bSwgY29kZUJsb2NrLCBicmFuZC5hc0NlbGwoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgdm0ud3JpdGVC
YXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCiAgICAgTExJTlRfRU5EKCk7ICAgIApAQCAtMTM4
OSw3ICsxMzg5LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX3ByaQog
CiAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAg
ICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2VsbCgpKTsK
LSAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgdm0ud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCiAgICAgTExJTlRfRU5EKCk7ICAgIApAQCAt
MjU1MSw3ICsyNTUxLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3Rh
YwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPnZtKCk7Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CisgICAgdm0ud3Jp
dGVCYXJyaWVyKGNlbGwpOwogfQogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTEsNyArOTUxLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIHN0ZDo6cmV2ZXJzZShkYXRhLCBkYXRhICsgbGVuZ3RoKTsKICAgICAgICAgaWYgKCFo
YXNJbnQzMih0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkpCi0gICAgICAgICAgICB2bS5oZWFw
LndyaXRlQmFycmllcih0aGlzT2JqZWN0KTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFycmllcih0
aGlzT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0KTsK
ICAgICB9CiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CkBAIC05NzIsNyAr
OTcyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGF1dG8gZGF0YSA9IHN0b3JhZ2UudmVjdG9yKCkuZGF0YSgp
OwogICAgICAgICBzdGQ6OnJldmVyc2UoZGF0YSwgZGF0YSArIGxlbmd0aCk7Ci0gICAgICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKHRoaXNPYmplY3QpOworICAgICAgICB2bS53cml0ZUJhcnJpZXIo
dGhpc09iamVjdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdCk7
CiAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F1eGls
aWFyeUJhcnJpZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXV4aWxpYXJ5QmFycmllcklubGluZXMuaAkocmV2aXNpb24gMjg1NjUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXV4aWxpYXJ5QmFycmllcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNiw3ICszNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiBBdXhpbGlh
cnlCYXJyaWVyPFQ+OjpBdXhpbGlhcnlCYXJyaWVyKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgVSYm
IHZhbHVlKQogewogICAgIG1fdmFsdWUgPSBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOwotICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKKyAgICB2bS53cml0ZUJhcnJpZXIob3duZXIpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDQsNyArNDQsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgogdm9pZCBBdXhpbGlhcnlCYXJyaWVyPFQ+OjpzZXQoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBVJiYgdmFsdWUpCiB7CiAgICAgbV92YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7
Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOworICAgIHZtLndyaXRlQmFycmllcihv
d25lcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyODU2NTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF90bwogICAgICAgICAgICAgaWYgKG90aGVyU3RydWN0dXJlSUQpCiAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwog
ICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IG15U3RydWN0dXJlSUQ7
Ci0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHZtLmdldFN0cnVj
dHVyZShteVN0cnVjdHVyZUlEKSk7CisgICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJs
b2NrLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJRCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVk
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgY2VsbExvY2soKSB9OwogICAgICAgICBtX3N0YWNrVHJhY2UgPSBXVEZNb3ZlKHN0YWNr
VHJhY2UpOwogICAgIH0KLSAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS53
cml0ZUJhcnJpZXIodGhpcyk7CiAKICAgICBTdHJpbmcgbWVzc2FnZVdpdGhTb3VyY2UgPSBtZXNz
YWdlOwogICAgIGlmIChtX3N0YWNrVHJhY2UgJiYgIW1fc3RhY2tUcmFjZS0+aXNFbXB0eSgpICYm
IGhhc1NvdXJjZUFwcGVuZGVyKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZmVycmVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmZlcnJlZFZhbHVlLmgJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIw
OSw3ICsyMDksNyBAQCB2b2lkIEluZmVycmVkVmFsdWU8SlNDZWxsVHlwZT46OkluZmVycmVkCiAg
ICAgc3dpdGNoIChzdGF0ZSgpKSB7CiAgICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6CiAgICAgICAg
IG1fdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIsIHZh
bHVlKTsKKyAgICAgICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIHN0
YXJ0V2F0Y2hpbmcoKTsKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9p
ZCBJbmZlcnJlZFZhbHVlPEpTQ2VsbFR5cGU+Ojpub3RpZnlXcgogICAgIGNhc2UgQ2xlYXJXYXRj
aHBvaW50OgogICAgICAgICBBU1NFUlQoZGVjb2RlU3RhdGUobV9kYXRhKSAhPSBJc0ludmFsaWRh
dGVkKTsKICAgICAgICAgbV9kYXRhID0gKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAm
IFZhbHVlTWFzaykgfCBlbmNvZGVTdGF0ZShJc1dhdGNoZWQpOwotICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihvd25lciwgdmFsdWUpOworICAgICAgICB2bS53cml0ZUJhcnJpZXIob3duZXIs
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBJc1dhdGNoZWQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg1NjUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShKU0ds
b2JhbE9iamVjCiAgICAgICAgIGdjU2FmZU1lbWNweShidXR0ZXJmbHkoKS0+Y29udGlndW91c0Rv
dWJsZSgpLmRhdGEoKSArIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXktPmJ1dHRlcmZseSgpLT5jb250
aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBvdGhlckxlbmd0aCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGdjU2FmZU1lbWNweShidXR0ZXJmbHkoKS0+Y29udGlndW91cygp
LmRhdGEoKSArIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXktPmJ1dHRlcmZseSgpLT5jb250aWd1b3Vz
KCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBvdGhlckxlbmd0aCk7Ci0gICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKHRoaXMpOworICAgICAgICB2bS53cml0ZUJhcnJpZXIodGhpcyk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05MDgsNyArOTA4LDcgQEAgYm9vbCBKU0FycmF5
OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogICAgICAgICAvLyBPdXIgbWVtbW92aW5nIG9m
IHZhbHVlcyBhcm91bmQgaW4gdGhlIGFycmF5IGNvdWxkIGhhdmUgY29uY2VhbGVkIHNvbWUgb2Yg
dGhlbSBmcm9tCiAgICAgICAgIC8vIHRoZSBjb2xsZWN0b3IuIExldCdzIG1ha2Ugc3VyZSB0aGF0
IHRoZSBjb2xsZWN0b3Igc2NhbnMgdGhpcyBvYmplY3QgYWdhaW4uCiAgICAgICAgIGlmIChpbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoQ29udGlndW91cykKLSAgICAgICAgICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKHRoaXMpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKHRoaXMpOwogCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwNzEsNyArMTA3MSw3IEBAIGJvb2wgSlNB
cnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW4KICAgICAgICAgCiAgICAgICAgIC8vIE91
ciBtZW1tb3Zpbmcgb2YgdmFsdWVzIGFyb3VuZCBpbiB0aGUgYXJyYXkgY291bGQgaGF2ZSBjb25j
ZWFsZWQgc29tZSBvZiB0aGVtIGZyb20KICAgICAgICAgLy8gdGhlIGNvbGxlY3Rvci4gTGV0J3Mg
bWFrZSBzdXJlIHRoYXQgdGhlIGNvbGxlY3RvciBzY2FucyB0aGlzIG9iamVjdCBhZ2Fpbi4KLSAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7CisgICAgICAgIHZtLndyaXRlQmFycmll
cih0aGlzKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5PVEU6IHdlJ3JlIGxlYXZpbmcgYmVpbmcg
Z2FyYmFnZSBpbiB0aGUgcGFydCBvZiB0aGUgYXJyYXkgdGhhdCB3ZSBzaGlmdGVkIG91dAogICAg
ICAgICAvLyBvZi4gVGhpcyBpcyBmaW5lIGJlY2F1c2UgdGhlIGNhbGxlciBpcyByZXF1aXJlZCB0
byBzdG9yZSBvdmVyIHRoYXQgYXJlYSwgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xNjAs
NyArMTYwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSgogICAg
ICAgICBpZiAobGVuZ3RoIDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkgewogICAgICAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgbGVuZ3RoKS5zZXRXaXRob3V0V3Jp
dGVCYXJyaWVyKHZhbHVlKTsKICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3Ro
KGxlbmd0aCArIDEpOwotICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdmFs
dWUpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKHRoaXMsIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogewog
ICAgIC8vIFRoaXMgb2JqZWN0IGlzIHJlYWR5IHRvIGJlIGVzY2FwZWQgc28gdGhlIGNvbmN1cnJl
bnQgR0MgbWF5IHNlZSBpdCBhdCBhbnkgdGltZS4gV2UgaGF2ZQogICAgIC8vIHRvIG1ha2Ugc3Vy
ZSB0aGF0IG5vbmUgb2Ygb3VyIHN0b3JlcyBzaW5rIGJlbG93IGhlcmUuCi0gICAgdm0uaGVhcC5t
dXRhdG9yRmVuY2UoKTsKKyAgICB2bS5tdXRhdG9yRmVuY2UoKTsKICNpZiBFTkFCTEUoR0NfVkFM
SURBVElPTikKICAgICBBU1NFUlQodm0uaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAgICAgdm0u
c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQotICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHN0cnVj
dHVyZSk7CisgICAgdm0ud3JpdGVCYXJyaWVyKHRoaXMsIHN0cnVjdHVyZSk7CiB9CiAKIGlubGlu
ZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYgdm0pIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVy
VGFyCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9ucy5hZGQoanNTZWN1
cmVDYXN0PEpTT2JqZWN0Kj4odm0sIHRva2VuKSwgTGl2ZVJlZ2lzdHJhdGlvbnMoKSk7CiAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7
CiAgICAgfQotICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOworICAgIHZtLndyaXRlQmFy
cmllcih0aGlzKTsKIH0KIAogYm9vbCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
KFZNJiwgSlNPYmplY3QqIHRva2VuKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6YWxsb2NhdGVSYQogICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAKICAgICBtX2V4ZWN1dGFibGVPclJhcmVEYXRhID0gZXhl
Y3V0YWJsZU9yUmFyZURhdGE7Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgcmFyZURh
dGEpOworICAgIHZtLndyaXRlQmFycmllcih0aGlzLCByYXJlRGF0YSk7CiAKICAgICByZXR1cm4g
cmFyZURhdGE7CiB9CkBAIC0xODgsNyArMTg4LDcgQEAgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5j
dGlvbjo6YWxsb2NhdGVBbgogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAKICAgICBtX2V4
ZWN1dGFibGVPclJhcmVEYXRhID0gZXhlY3V0YWJsZU9yUmFyZURhdGE7Ci0gICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcywgcmFyZURhdGEpOworICAgIHZtLndyaXRlQmFycmllcih0aGlzLCBy
YXJlRGF0YSk7CiAKICAgICByZXR1cm4gcmFyZURhdGE7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk4Nyw3ICs5ODcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAgICAgICAgICAgIGJ1dHRlcmZs
eS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFtZSArIDEpOwotICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcih0aGlzT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIHZtLndyaXRlQmFycmllcih0
aGlzT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYp
OwogICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7Ci0gICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFy
cmllcih0aGlzLCB2KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewpAQCAtNDk2LDcg
KzQ5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0
KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAgICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+
c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KHRoaXMsIHYpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKHRoaXMsIHYpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5H
X1RZUEVTOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtPYmpl
Y3RSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dl
YWtPYmplY3RSZWYuaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXZWFrT2JqZWN0UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgICAgICBpZiAobV92YWx1ZSAmJiB2bS5jdXJyZW50V2Vha1JlZlZlcnNp
b24oKSAhPSBtX2xhc3RBY2Nlc3NWZXJzaW9uKSB7CiAgICAgICAgICAgICBtX2xhc3RBY2Nlc3NW
ZXJzaW9uID0gdm0uY3VycmVudFdlYWtSZWZWZXJzaW9uKCk7CiAgICAgICAgICAgICAvLyBQZXJm
b3JtIGEgR0MgYmFycmllciBoZXJlIHNvIHdlIHJlc2NhbiB0aGlzIG9iamVjdCBhbmQga2VlcCB0
aGUgb2JqZWN0IGFsaXZlIGlmIHdlIHdvdWxkbid0IG90aGVyd2lzZS4KLSAgICAgICAgICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKHRo
aXMpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MYXp5UHJvcGVydHlJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eVByb3BlcnR5SW5saW5l
cy5oCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
YXp5UHJvcGVydHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBMYXp5UHJvcGVydHk8T3duZXJUeXBlLCBFbGVtZW50VHlwZQogewogICAgIG1fcG9pbnRlciA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVCghKG1f
cG9pbnRlciAmIGxhenlUYWcpKTsKLSAgICB2bS5oZWFwLndyaXRlQmFycmllcihvd25lciwgdmFs
dWUpOworICAgIHZtLndyaXRlQmFycmllcihvd25lciwgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZS5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWwKIAog
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQog
ewotICAgIG1fdm0uaGVhcC5tdXRhdG9yRmVuY2UoKTsKKyAgICBtX3ZtLm11dGF0b3JGZW5jZSgp
OwogICAgIGlmICghbV9vYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICB2ZXJpZnlQcm9wZXJ0
aWVzQXJlSW5pdGlhbGl6ZWQobV9vYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAkocmV2
aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgeyB9CiAgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZSgpCiAgICAgewotICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7CisgICAgICAgIG1f
dm0ubXV0YXRvckZlbmNlKCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBWTSYgdm0oKSBj
b25zdCB7IHJldHVybiBtX3ZtOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0
OjpsYXN0UmVzdWx0KAogICAgICAgICBtX3JlaWZpZWRMZWZ0Q29udGV4dC5jbGVhcigpOwogICAg
ICAgICBtX3JlaWZpZWRSaWdodENvbnRleHQuY2xlYXIoKTsKICAgICAgICAgbV9yZWlmaWVkID0g
dHJ1ZTsKLSAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOworICAgICAgICB2bS53
cml0ZUJhcnJpZXIob3duZXIpOwogICAgIH0KICAgICByZXR1cm4gbV9yZWlmaWVkUmVzdWx0Lmdl
dCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGVkUmVzdWx0LmgJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXN0SW5wdXQuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihpbnB1dCk7CiAgICAgICAgIG1fcmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBtX3JlaWZp
ZWQgPSBmYWxzZTsKLSAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOworICAgICAg
ICB2bS53cml0ZUJhcnJpZXIob3duZXIpOwogICAgIH0KIAogICAgIEpTQXJyYXkqIGxhc3RSZXN1
bHQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3duZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI4NTY1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHVpbnRwdHJfdCBy
ZXN1bHQgPSAobV9yZWdFeHBBbmRGbGFncyAmIGZsYWdzTWFzaykgfCBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihyZWdFeHApOwogICAgICAgICBtX3JlZ0V4cEFuZEZsYWdzID0gcmVzdWx0OwotICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCByZWdFeHApOworICAgICAgICB2bS53cml0
ZUJhcnJpZXIodGhpcywgcmVnRXhwKTsKICAgICB9CiAKICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2CiAgICAgaWYg
KG9sZENvZGVCbG9jaykKICAgICAgICAgb2xkQ29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxz
KCk7CiAKLSAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS53cml0ZUJhcnJp
ZXIodGhpcyk7CiB9CiAKIGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZShW
TSYgdm0pIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAvLyBXZSBuZWVkIHRv
IGRvIGEgd3JpdGViYXJyaWVyIGhlcmUgYmVjYXVzZSB0aGUgR0MgdGhyZWFkIG1pZ2h0IGJlIHNj
YW5uaW5nIHRoZSBidXR0ZXJmbHkgd2hpbGUKICAgICAvLyB3ZSBhcmUgc2h1ZmZsaW5nIHByb3Bl
cnRpZXMgYXJvdW5kLiBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY5ODkKLSAgICB2bS5oZWFwLndyaXRlQmFycmllcihvYmplY3QpOworICAgIHZtLndyaXRl
QmFycmllcihvYmplY3QpOwogCiAgICAgcmV0dXJuIHRoaXM7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAy
ODU2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVDaGFpbjo6
ZmluaXNoQ3JlYXRpb24oVk0mIAogICAgIGZvciAoSlNPYmplY3QqIGN1cnJlbnQgPSBoZWFkOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90eXBl
T2JqZWN0KGN1cnJlbnQpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVu
dC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgbV92ZWN0b3IuZ2V0KClbaSsrXSA9IHN0cnVjdHVy
ZS0+aWQoKTsKLSAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7CisgICAgICAgIHZt
LndyaXRlQmFycmllcih0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCShy
ZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5l
IHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZAogICAgIG1fY2FjaGVkUHJvcGVydHlO
YW1lRW51bWVyYXRvcldhdGNocG9pbnRzID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlQ2hhaW5JbnZh
bGlkYXRpb25XYXRjaHBvaW50PigpOwogICAgIGJvb2wgdmFsaWRhdGVkVmlhV2F0Y2hwb2ludCA9
IHRyeUNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvclZpYVdhdGNocG9pbnQodm0sIGJhc2VTdHJ1
Y3R1cmUsIGNoYWluKTsKICAgICBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3JBbmRGbGFn
ID0gKCh2YWxpZGF0ZWRWaWFXYXRjaHBvaW50ID8gMCA6IGNhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3JJc1ZhbGlkYXRlZFZpYVRyYXZlcnNpbmdGbGFnKSB8IGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGVudW1lcmF0b3IpKTsKLSAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBlbnVtZXJh
dG9yKTsKKyAgICB2bS53cml0ZUJhcnJpZXIodGhpcywgZW51bWVyYXRvcik7CiB9CiAKIGlubGlu
ZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5
TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQga2luZCkgY29uc3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTIwNCw2ICsxMjA0LDEzIEBA
IHB1YmxpYzoKICAgICB1aW50cHRyX3QqIGdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgIHZvaWQgcmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVy
KGNvbnN0IEluc3RydWN0aW9uKik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd3JpdGVCYXJy
aWVyKGNvbnN0IEpTQ2VsbCogZnJvbSkgeyBoZWFwLndyaXRlQmFycmllcihmcm9tKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1Zh
bHVlIHRvKSB7IGhlYXAud3JpdGVCYXJyaWVyKGZyb20sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU0NlbGwqIHRvKSB7IGhl
YXAud3JpdGVCYXJyaWVyKGZyb20sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3cml0
ZUJhcnJpZXJTbG93UGF0aChjb25zdCBKU0NlbGwqIGZyb20pIHsgaGVhcC53cml0ZUJhcnJpZXJT
bG93UGF0aChmcm9tKTsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG11dGF0b3JGZW5jZSgp
IHsgaGVhcC5tdXRhdG9yRmVuY2UoKTsgfQorCiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElE
QVRJT04pCiAgICAgRG9lc0dDQ2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgcmV0dXJuICZtX2Rv
ZXNHQzsgfQogICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCBleHBlY3REb2VzR0Ms
IHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKSB7IG1fZG9lc0dDLnNldChleHBl
Y3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllcklubGluZXMuaAkocmV2aXNpb24gMjg1
NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsMTQgKzUxLDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBUcmFpdHM+CiBpbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRy
YWl0cz46OnNldEVhcmx5VmFsdWUoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1
ZSkKIHsKICAgICBUcmFpdHM6OmV4Y2hhbmdlKHRoaXMtPm1fY2VsbCwgdmFsdWUpOwotICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKG93bmVyLCBzdGF0aWNfY2FzdDxKU0NlbGwqPih2YWx1ZSkpOwor
ICAgIHZtLndyaXRlQmFycmllcihvd25lciwgc3RhdGljX2Nhc3Q8SlNDZWxsKj4odmFsdWUpKTsK
IH0KIAogaW5saW5lIHZvaWQgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBSYXdWYWx1ZVRyYWl0
czxVbmtub3duPj46OnNldChWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgQVNTRVJUKCFPcHRpb25zOjp1c2VDb25jdXJyZW50SklUKCkgfHwgIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7CiAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7
Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIsIHZhbHVlKTsKKyAgICB2bS53cml0ZUJh
cnJpZXIob3duZXIsIHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
Mjg1NjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MTcsNyArNjE3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbldhc21XcgogICAgIEFTU0VSVChjZWxsKTsKICAgICBBU1NFUlQodm1Qb2lu
dGVyKTsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwotICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
U2xvd1BhdGgoY2VsbCk7CisgICAgdm0ud3JpdGVCYXJyaWVyU2xvd1BhdGgoY2VsbCk7CiB9CiAK
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Qb3Bjb3VudDMyLCB1aW50MzJfdCwg
KGludDMyX3QgdmFsdWUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgJKHJldmlzaW9uIDI4NTY1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VS
VCh2YWx1ZSA9PSB2YWx1ZS0+Z2xvYmFsKCktPm93bmVyPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkp
OwogICAgICAgICBpbnN0YW5jZSgpLmxpbmtHbG9iYWwoaW5kZXgsICp2YWx1ZS0+Z2xvYmFsKCkp
OwotICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2YWx1ZSk7CisgICAgICAgIHZt
LndyaXRlQmFycmllcih0aGlzLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMS0xMSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFZNOjp3cml0ZUJhcnJpZXIoKSBh
bmQgVk06Om11dGF0b3JGZW5jZSgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDE5CisgICAgICAgIHJkYXI6Ly84NTMxODY5MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HdWFyZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUd1YXJkZWRPYmplY3Q6
OkRPTUd1YXJkZWRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjplbnN1cmVKU0Z1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmli
dXRlU2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVXcml0ZUJhcnJpZXJz
Rm9yQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3REZWZhdWx0VG9K
U09OX2V2ZW50SGFuZGxlckF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
Ympfb25mb29TZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqX29ud2Via2l0
Zm9vU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2FkZEV2ZW50TGlzdGVuZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3JlbW92ZUV2ZW50TGlzdGVuZXJCb2R5KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisKIDIwMjEtMTEtMTEgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBIZWFwOjppc0N1cnJlbnRU
aHJlYWRCdXN5KCkgdG8gSGVhcDo6Y3VycmVudFRocmVhZElzRG9pbmdHQ1dvcmsoKS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNw
cAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
dWFyZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIERPTUd1YXJkZWRP
YmplY3Q6OkRPTUd1YXJkZWRPYmplY3QoSlNET00KICAgICAsIG1fZ3VhcmRlZCgmZ3VhcmRlZCkK
ICAgICAsIG1fZ2xvYmFsT2JqZWN0KCZnbG9iYWxPYmplY3QpCiB7Ci0gICAgZ2xvYmFsT2JqZWN0
LnZtKCkuaGVhcC53cml0ZUJhcnJpZXIoJmdsb2JhbE9iamVjdCwgJmd1YXJkZWQpOworICAgIGds
b2JhbE9iamVjdC52bSgpLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0LCAmZ3VhcmRlZCk7CiAg
ICAgaWYgKGdsb2JhbE9iamVjdC52bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbE9iamVjdC5nY0xvY2soKSB9OwogICAgICAg
ICBnbG9iYWxPYmplY3QuZ3VhcmRlZE9iamVjdHMoKS5hZGQodGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkocmV2aXNpb24gMjg1NjUz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogSlNFdmVu
dExpc3RlbmVyOjplCiAgICAgICAgICAgICBtX2pzRnVuY3Rpb24gPSBKU0M6OldlYWs8SlNDOjpK
U09iamVjdD4oZnVuY3Rpb24pOwogICAgICAgICAgICAgLy8gV2hlbiBKU0Z1bmN0aW9uIGlzIGlu
aXRpYWxpemVkLCBpbml0aWFsaXplSlNGdW5jdGlvbiBtdXN0IGVuc3VyZSB0aGF0IG1fd3JhcHBl
ciBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG9vLgogICAgICAgICAgICAgQVNTRVJUKG1fd3JhcHBl
cik7Ci0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihtX3dyYXBwZXIuZ2V0KCksIGZ1
bmN0aW9uKTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihtX3dyYXBwZXIuZ2V0KCksIGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1
ZUluV3JhcHBlZE9iamVjdC5oCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoCiAg
ICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKICAgICBhdXRvIHZhbHVlID0gZnVuY3Rpb24oKTsK
ICAgICBjYWNoZWRWYWx1ZSA9IGNsb25lQWNyb3NzV29ybGRzKGxleGljYWxHbG9iYWxPYmplY3Qs
IG93bmVyLCB2YWx1ZSk7Ci0gICAgbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLmhlYXAud3JpdGVC
YXJyaWVyKCZvd25lciwgdmFsdWUpOworICAgIGxleGljYWxHbG9iYWxPYmplY3Qudm0oKS53cml0
ZUJhcnJpZXIoJm93bmVyLCB2YWx1ZSk7CiAgICAgQVNTRVJUKGlzV29ybGRDb21wYXRpYmxlKGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhY2hlZFZhbHVlKSk7CiAgICAgcmV0dXJuIGNhY2hlZFZhbHVl
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI4NTY1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01NDA3LDcg
KzU0MDcsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAg
ICAgICAgICAgICAgOiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAkc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCAke2V2ZW50TmFtZX0sIHZhbHVlKTtcbiIpOwog
ICAgICAgICB9Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2bS5oZWFwLndyaXRl
QmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB2bS53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUp
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xu
Iik7CiAgICAgfSBlbHNpZiAoJGlzUmVwbGFjZWFibGUpIHsKQEAgLTY2MTgsNyArNjYxOCw3IEBA
IHN1YiBHZW5lcmF0ZVdyaXRlQmFycmllcnNGb3JBcmd1bWVudHMKICAgICBteSAkaGFzT3V0cHV0
ID0gMDsKICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9
KSB7CiAgICAgICAgIGlmICgkYXJndW1lbnQtPnR5cGUtPm5hbWUgZXEgIkV2ZW50TGlzdGVuZXIi
KSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAidm0uaGVhcC53
cml0ZUJhcnJpZXIoJnN0YXRpY19jYXN0PEpTT2JqZWN0Jj4oKmNhc3RlZFRoaXMpLCBhcmd1bWVu
dCR7YXJndW1lbnRJbmRleH0udmFsdWUoKSk7XG4iKSBpZiAhJGlzRHJ5UnVuOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInZtLndyaXRlQmFycmllcigmc3RhdGlj
X2Nhc3Q8SlNPYmplY3QmPigqY2FzdGVkVGhpcyksIGFyZ3VtZW50JHthcmd1bWVudEluZGV4fS52
YWx1ZSgpKTtcbiIpIGlmICEkaXNEcnlSdW47CiAgICAgICAgICAgICAkaGFzT3V0cHV0ID0gMTsK
ICAgICAgICAgfQogICAgICAgICAkYXJndW1lbnRJbmRleCsrOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdERlZmF1
bHRUb0pTTwogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZW50SGFuZGxlckF0
dHJpYnV0ZUV2ZW50LCB2YWx1ZSk7Ci0gICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmpl
Y3QsIHZhbHVlKTsKKyAgICB2bS53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTsKICAg
ICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1ZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyODU2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3MSw3ICs0
MTcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9vbmZvb1NldAogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgc2V0RXZl
bnRIYW5kbGVyQXR0cmlidXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHRoaXNP
YmplY3Qud3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKLSAgICB2bS5o
ZWFwLndyaXRlQmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpOworICAgIHZtLndyaXRlQmFycmll
cigmdGhpc09iamVjdCwgdmFsdWUpOwogICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHZhbHVlKTsK
IAogICAgIHJldHVybiB0cnVlOwpAQCAtNDE5Nyw3ICs0MTk3LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9ial9vbndlYmtpdAogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBldmVudE5h
bWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKLSAgICB2bS5oZWFwLndyaXRlQmFycmllcigmdGhpc09i
amVjdCwgdmFsdWUpOworICAgIHZtLndyaXRlQmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpOwog
ICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHZhbHVlKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAt
NjE2Nyw3ICs2MTY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLmFkZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0
ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOyB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB2bS5oZWFwLndyaXRlQmFycmll
cigmc3RhdGljX2Nhc3Q8SlNPYmplY3QmPigqY2FzdGVkVGhpcyksIGFyZ3VtZW50MS52YWx1ZSgp
KTsKKyAgICB2bS53cml0ZUJhcnJpZXIoJnN0YXRpY19jYXN0PEpTT2JqZWN0Jj4oKmNhc3RlZFRo
aXMpLCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjE5
Niw3ICs2MTk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0
ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOyB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB2bS5oZWFwLndyaXRlQmFycmll
cigmc3RhdGljX2Nhc3Q8SlNPYmplY3QmPigqY2FzdGVkVGhpcyksIGFyZ3VtZW50MS52YWx1ZSgp
KTsKKyAgICB2bS53cml0ZUJhcnJpZXIoJnN0YXRpY19jYXN0PEpTT2JqZWN0Jj4oKmNhc3RlZFRo
aXMpLCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAkocmV2aXNpb24gMjg1NjUzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQxLDcgKzE0MSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3AKICAgICB9CiAKICAgICAv
LyBUaGlzIGlzIGZvciB0aGUgY2FzZSB3aGVuIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIHRoZSBw
YWludCBkZWZpbml0aW9uIG1hcCwgYW5kIHRoZSBHQyBpcyBjdXJyZW50bHkgcnVubmluZyBpbiB0
aGUgYmFja2dyb3VuZC4KLSAgICB2bS5oZWFwLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0KTsK
KyAgICB2bS53cml0ZUJhcnJpZXIoJmdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBGSVhNRTogY29u
c3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMikuCiAK
</data>
<flag name="review"
          id="468900"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>