<?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>149796</bug_id>
          
          <creation_ts>2015-10-04 12:11:53 -0700</creation_ts>
          <short_desc>Inline cache repatching should be throttled if it happens a lot</short_desc>
          <delta_ts>2015-10-05 10:06:16 -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>WebKit 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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1130520</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-04 12:11:53 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130521</commentid>
    <comment_count>1</comment_count>
      <attachid>262405</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-04 12:24:52 -0700</bug_when>
    <thetext>Created attachment 262405
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130522</commentid>
    <comment_count>2</comment_count>
      <attachid>262406</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-04 12:26:42 -0700</bug_when>
    <thetext>Created attachment 262406
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130524</commentid>
    <comment_count>3</comment_count>
      <attachid>262406</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-10-04 12:57:25 -0700</bug_when>
    <thetext>Comment on attachment 262406
the patch

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

Quickly looked through on my phone but I&apos;ll review closely later. One comment:

&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:95
&gt; +                // allow here is 2^256 - 2, since the slow paths may increment the count to indicate

Do you mean 256 here and not 2^256?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130525</commentid>
    <comment_count>4</comment_count>
      <attachid>262406</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-04 13:28:13 -0700</bug_when>
    <thetext>Comment on attachment 262406
the patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:95
&gt;&gt; +                // allow here is 2^256 - 2, since the slow paths may increment the count to indicate
&gt; 
&gt; Do you mean 256 here and not 2^256?

LOL, of course!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130560</commentid>
    <comment_count>5</comment_count>
      <attachid>262406</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-10-04 23:10:49 -0700</bug_when>
    <thetext>Comment on attachment 262406
the patch

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

r=me with a couple comments.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:3441
&gt; +    m_profilingForTierUp = true;

This isn&apos;t used anywhere. Maybe it should be removed?

&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:117
&gt; +        WTF::incrementWithSaturation(coolDownCount);

You could max this out at 8 since we&apos;re shifting with this number on an 8-bit integer.

&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:158
&gt; +    uint8_t coolDownCount;

Nit: I was initially confused by this name and &quot;countdown&quot;. I had thought that maybe this was what &quot;countdown&quot; is. Maybe &quot;numberOfCoolDowns&quot; is more descriptive.

&gt; Source/JavaScriptCore/runtime/Options.h:125
&gt; +    v(unsigned, coolDownBase, 20, nullptr) \

Nit: I think a better name for this is something like &quot;initialCoolDownCount&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130641</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-05 10:05:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 262406 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262406&amp;action=review
&gt; 
&gt; r=me with a couple comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:3441
&gt; &gt; +    m_profilingForTierUp = true;
&gt; 
&gt; This isn&apos;t used anywhere. Maybe it should be removed?

Removed.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:117
&gt; &gt; +        WTF::incrementWithSaturation(coolDownCount);
&gt; 
&gt; You could max this out at 8 since we&apos;re shifting with this number on an
&gt; 8-bit integer.

I could, but that would require more code, and just ensuring that it doesn&apos;t wrap around above 255 is all that matters.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:158
&gt; &gt; +    uint8_t coolDownCount;
&gt; 
&gt; Nit: I was initially confused by this name and &quot;countdown&quot;. I had thought
&gt; that maybe this was what &quot;countdown&quot; is. Maybe &quot;numberOfCoolDowns&quot; is more
&gt; descriptive.

OK.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Options.h:125
&gt; &gt; +    v(unsigned, coolDownBase, 20, nullptr) \
&gt; 
&gt; Nit: I think a better name for this is something like &quot;initialCoolDownCount&quot;

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130642</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-05 10:06:16 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/190561</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262405</attachid>
            <date>2015-10-04 12:24:52 -0700</date>
            <delta_ts>2015-10-04 12:26:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29651</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNTUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE1LTEwLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIGNhY2hlIHJlcGF0Y2hpbmcgc2hvdWxkIGJlIHRocm90dGxlZCBpZiBpdCBoYXBwZW5z
IGEgbG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk3OTYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjI2NzQ0MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3RpY2VkIGEgc2xpZ2h0IFBMVCBy
ZWdyZXNzaW9uIGZyb20gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg5NTg2LiBJ
dCdzIGJlY2F1c2UKKyAgICAgICAgc29tZSBwYWdlcyBkbyB0aGluZ3MgdGhhdCBvdXIgaW5saW5l
IGNhY2hlcyBtaXNoYW5kbGUsIGluIHRoZSBzZW5zZSB0aGF0IHNvbWUgSUNzIGVuZCB1cAorICAg
ICAgICByZXBhdGNoaW5nIHRoZW1zZWx2ZXMgdmVyeSBmcmVxdWVudGx5LiBUaGUgY29zdCBvZiBy
ZXBhdGNoaW5nIG91dHdlaWdocyB0aGUgc3BlZWQtdXAgb24gdGhvc2UKKyAgICAgICAgcGFnZXMu
IFRoZXJlIGFyZSBwcm9iYWJseSBzdXBlciBzbWFydCB0aGluZ3Mgd2UgY291bGQgZG8gdG8gdHVu
ZSB0aGUgSUMgaGV1cmlzdGljcyB0byBtYWtlIHRoZQorICAgICAgICBJQ3MgZG8gdGhlIHJpZ2h0
IHRoaW5nIG9uIHRob3NlIHBhZ2VzLiBCdXQgbW9yZSBmdW5kYW1lbnRhbGx5LCB3ZSBzaG91bGQg
ZW5zdXJlIHRoYXQgb3VyIElDcworICAgICAgICBiYWNrIG9mZiBmcm9tIGNvbnRpbnVvdXMgcmVw
YXRjaGluZyBpZiB0aGV5IHJlcGF0Y2ggYSBsb3QuIFRoYXQncyB3aGF0IHRoaXMgY2hhbmdlIGRv
ZXMuCisKKyAgICAgICAgV2l0aCB0aGlzIGNoYW5nZSwgU3RydWN0dXJlU3R1YkluZm8gY291bnRz
IHRoZSBudW1iZXIgb2YgcmVwYXRjaGluZ3MuIElmIHRoYXQgZXhjZWVkcyBhCisgICAgICAgIHRo
cmVzaG9sZCwgd2UgcHV0IHRoZSBJQyBpbnRvIGEgY29vbC1kb3duIG1vZGUsIHdoZXJlIHNvbWUg
bnVtYmVyIG9mIGZ1dHVyZSByZXBhdGNoIGV2ZW50cyBkbworICAgICAgICBub3RoaW5nIGJ1dCBk
ZWNyZW1lbnQgdGhlIGNvb2wtZG93biBjb3VudGVyLiBUaGUgZHVyYXRpb24gb2YgY29vbC1kb3du
IGluY3JlYXNlcyBleHBvbmVudGlhbGx5CisgICAgICAgIGV2ZXJ5IHRpbWUgd2UgaGF2ZSB0byBk
byBpdC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG91dGxpbmVzIGEgbG90IG9mIGNvZGUu
IFRoZSBmYWN0IHRoYXQgU3RydWN0dXJlU3R1YkluZm8gaGFkIGEgbG90IG9mIGlubGluZQorICAg
ICAgICBtZXRob2RzIHdhcyBzdGFydGluZyB0byBnZXQgb24gbXkgbmVydmVzLiBOb3cgaXQgb25s
eSBoYXMgaW5saW5lIG1ldGhvZHMgZm9yIHRoaW5ncyB0aGF0IG5lZWQKKyAgICAgICAgdG8gYmUg
aW5saW5lZC4gQWxzbywgSSBjaGFuZ2VkIFN0cnVjdHVyZVN0dWJJbmZvIHRvIGJlIGEgY2xhc3Mg
cmF0aGVyIHRoYW4gYSBzdHJ1Y3QuIE1heWJlCisgICAgICAgIHdpdGggZW5vdWdoIHN1Y2ggaW5j
cmVtZW50YWwgY2hhbmdlcywgZXZlbnR1YWxseSBTdHJ1Y3R1cmVTdHViSW5mbyB3aWxsIGFjdHVh
bGx5IGJlaGF2ZSBsaWtlIGEKKyAgICAgICAgcHJvcGVyIGNsYXNzLgorCisgICAgICAgIFRoaXMg
aGFzIG5vIGVmZmVjdCBvbiBKU0MgYmVuY2htYXJrcy4gSXQgcHJvZ3Jlc3NlcyBvbmUgb2YgdGhl
IHBhZ2VzIHRoYXQgd2FzIGhpdCBieSB0aGUKKyAgICAgICAgcmVncmVzc2lvbiBieSAxNSUuIEl0
J3MgaGFyZCB0byBzZWUgaWYgdGhpcyB0b3RhbGx5IGZpeGVzIHRoZSBlbnRpcmUgUExUIHJlZ3Jl
c3Npb24gc2luY2UgdGhlCisgICAgICAgIGdlb21lYW4gcmVncmVzc2lvbiB3YXMgdmVyeSBjbG9z
ZSB0byBub2lzZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNoZWNrSWZPcHRp
bWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpT
dHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp+U3Ry
dWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdl
dEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlk
UmVwbGFjZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0U3R1Yik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6Y29uc2lk
ZXJDYWNoaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OndpbGxSZXBhdGNo
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OndpbGxDb29sRG93bik6CisgICAg
ICAgIChKU0M6OmdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbik6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNlbGYpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRTdHViKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnNlZW5PbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnNldFNlZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4p
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTEwLTAzICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTkwNTIyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsMzkgKzM0MSwz
NyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoCiAgICAgICAgIGlm
IChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkg
R0MpIik7CiAgICAgICAgIAotICAgICAgICBpZiAoc3R1YkluZm8uc2VlbikgewotICAgICAgICAg
ICAgb3V0LnByaW50ZigiIGppdCgiKTsKKyAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBzdHViID0gbnVsbHB0cjsKKyAgICAg
ICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgUG9seW1vcnBo
aWNBY2Nlc3MqIHN0dWIgPSBudWxscHRyOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0
Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgewotICAgICAgICAgICAgY2FzZSBDYWNoZVR5cGU6Okdl
dEJ5SWRTZWxmOgotICAgICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYiKTsKLSAgICAgICAg
ICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
YWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50Zigic3R1YiIpOwotICAg
ICAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgICAgICAgICAg
b3V0LnByaW50ZigidW5zZXQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChz
dHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgorICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0cnVj
dHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0dWIiKTsKKyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0
dWI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0Ogor
ICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChiYXNlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsK
LSAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGJhc2VTdHJ1Y3R1
cmUsIGlkZW50KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUpIHsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJl
KG91dCwgInN0cnVjdCIsIGJhc2VTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoc3R1YikKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIp
OworICAgICAgICBpZiAoc3R1YikKKyAgICAgICAgICAgIG91dC5wcmludCgiLCAiLCAqc3R1Yik7
CiAKLSAgICAgICAgICAgIG91dC5wcmludGYoIikiKTsKLSAgICAgICAgfQorICAgICAgICBvdXQu
cHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWFwKTsKQEAgLTQx
MywyNyArNDExLDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cygK
ICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgi
IChSZXNldCBCeSBHQykiKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdHViSW5mby5zZWVuKSB7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgewotICAgICAgICAgICAgY2FzZSBDYWNo
ZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgicmVwbGFj
ZSwgIik7Ci0gICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBzdHVi
SW5mby51LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIGlkZW50KTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7Ci0g
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJzdHViLCAiLCAqc3R1YkluZm8udS5zdHViKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ2Fj
aGVUeXBlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAgICAgICBvdXQu
cHJpbnRmKCIgaml0KCIpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNo
ZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgICAg
ICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUo
b3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdl
dCgpLCBpZGVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6
OlN0dWI6IHsKKyAgICAgICAgICAgIG91dC5wcmludCgic3R1YiwgIiwgKnN0dWJJbmZvLnUuc3R1
Yik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENhY2hlVHlw
ZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgb3V0LnBy
aW50ZigiKSIpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CkBAIC0xNTk0
LDYgKzE1OTAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAg
ICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVlKQogICAgICwgbV9kaWRGYWlsRlRMQ29t
cGlsYXRpb24oZmFsc2UpCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCisg
ICAgLCBtX3Byb2ZpbGluZ0ZvclRpZXJVcChmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpv
dGhlci5tX3ZtLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5nZXQoKSwgb3RoZXIubV91bmxpbmtl
ZENvZGUuZ2V0KCkpCiAgICAgLCBtX2hhc0RlYnVnZ2VyU3RhdGVtZW50KGZhbHNlKQogICAgICwg
bV9zdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRGlzYWJsZWQpCkBAIC0xNjU1LDYgKzE2NTIsNyBA
QCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgLCBtX3Nob3Vs
ZEFsd2F5c0JlSW5saW5lZCh0cnVlKQogICAgICwgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24oZmFs
c2UpCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCisgICAgLCBtX3Byb2Zp
bGluZ0ZvclRpZXJVcChmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKG1fZ2xvYmFsT2JqZWN0
LT52bSgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrKQogICAgICwgbV9oYXNE
ZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9k
ZURpc2FibGVkKQpAQCAtMjE0MSw2ICsyMTM5LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soV2Vi
QXNzZW1ibHlFeGVjdXRhYgogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQoZmFsc2UpCiAg
ICAgLCBtX2RpZEZhaWxGVExDb21waWxhdGlvbihmYWxzZSkKICAgICAsIG1faGFzQmVlbkNvbXBp
bGVkV2l0aEZUTChmYWxzZSkKKyAgICAsIG1fcHJvZmlsaW5nRm9yVGllclVwKGZhbHNlKQogICAg
ICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0
ZXBwaW5nTW9kZURpc2FibGVkKQogICAgICwgbV9udW1CcmVha3BvaW50cygwKQpAQCAtMzQzNyw2
ICszNDM2LDEwIEBAIGludDMyX3QgQ29kZUJsb2NrOjphZGp1c3RlZENvdW50ZXJWYWx1ZSgKIAog
Ym9vbCBDb2RlQmxvY2s6OmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkKIHsK
KyAgICAvLyBMZXQgZXZlcnlvbmUga25vdyB0aGF0IHRoaXMgQ29kZUJsb2NrIGlzIGJlaW5nIHBy
b2ZpbGVkLiBUaGlzIGNoYW5nZXMgb3VyIElDIGhldXJpc3RpY3MKKyAgICAvLyBzbGlnaHRseS4K
KyAgICBtX3Byb2ZpbGluZ0ZvclRpZXJVcCA9IHRydWU7CisgICAgCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgaWYgKERGRzo6V29ya2xpc3QqIHdvcmtsaXN0ID0gREZHOjpleGlzdGluZ0dsb2Jh
bERGR1dvcmtsaXN0T3JOdWxsKCkpIHsKICAgICAgICAgaWYgKHdvcmtsaXN0LT5jb21waWxhdGlv
blN0YXRlKERGRzo6Q29tcGlsYXRpb25LZXkodGhpcywgREZHOjpERkdNb2RlKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE5MDQz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtODcwLDYgKzg3MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1fZGlk
RmFpbEZUTENvbXBpbGF0aW9uIDogMTsKICAgICBib29sIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZU
TCA6IDE7CisgICAgYm9vbCBtX3Byb2ZpbGluZ0ZvclRpZXJVcCA6IDE7CiAKICAgICAvLyBJbnRl
cm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBiZSBwcml2
YXRlIGlmIGl0IHdhc24ndAogICAgIC8vIGZvciB0aGUgZmFjdCB0aGF0IHdlIHVzZSBpdCBmcm9t
IGFub255bW91cyBuYW1lc3BhY2VzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcsMTIgKzEzNyw5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvclMKICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLAogICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRl
RGF0YSkKIHsKLSAgICBpZiAoIXN0dWJJbmZvKQorICAgIGlmICghc3R1YkluZm8gfHwgIXN0dWJJ
bmZvLT5ldmVyQ29uc2lkZXJlZCkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbik7Ci0gICAgCi0gICAgaWYgKCFzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbik7Ci0gICAgCisKICAgICBQb2x5bW9ycGhpY0Fj
Y2VzcyogbGlzdCA9IDA7CiAgICAgU3RhdGUgc2xvd1BhdGhTdGF0ZSA9IFRha2VzU2xvd1BhdGg7
CiAgICAgaWYgKHN0dWJJbmZvLT5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CkBAIC0y
NjksNyArMjY2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCiAgICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2Rl
T3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEyNywxMyArMTEyNywxNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9seW1vcnBoaWNB
Y2Nlc3M6CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChiaW5hcnlTd2l0Y2gu
ZmFsbFRocm91Z2goKSk7CiAgICAgfQogCi0gICAgc3RhdGUuZmFpbEFuZElnbm9yZS5saW5rKCZq
aXQpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGlubGluZSBjYWNoZSBvcHRpbWl6YXRp
b24gY29kZSBrbm93cyB0aGF0IHdlIGFyZSB0YWtpbmcgc2xvdyBwYXRoIGJlY2F1c2UKLSAgICAv
LyBvZiBzb21ldGhpbmcgdGhhdCBpc24ndCBwYXRjaGFibGUuICJzZWVuIiBiZWluZyBmYWxzZSBt
ZWFucyB0aGF0IHdlIGJ5cGFzcyBwYXRjaGluZy4gVGhpcyBpcwotICAgIC8vIHByZXR0eSBncm9z
cyBidXQgaXQgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGhhdmUgdHdvIHNsb3cgcGF0aCBl
bnRyeXBvaW50cyAtIG9uZSBmb3IKLSAgICAvLyBwYXRjaGluZyBhbmQgb25lIGZvciBub3JtYWwg
c2xvdyBzdHVmZi4KLSAgICBqaXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGZh
bHNlKSwgJnN0dWJJbmZvLnNlZW4pOworICAgIGlmICghc3RhdGUuZmFpbEFuZElnbm9yZS5lbXB0
eSgpKSB7CisgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUubGluaygmaml0KTsKKyAgICAgICAg
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBpbmxpbmUgY2FjaGUgb3B0aW1pemF0aW9u
IGNvZGUga25vd3MgdGhhdCB3ZSBhcmUgdGFraW5nIHNsb3cgcGF0aCBiZWNhdXNlCisgICAgICAg
IC8vIG9mIHNvbWV0aGluZyB0aGF0IGlzbid0IHBhdGNoYWJsZS4gVGhlIHNsb3cgcGF0aCB3aWxs
IGRlY3JlbWVudCAiY291bnRkb3duIiBhbmQgd2lsbCBvbmx5CisgICAgICAgIC8vIHBhdGNoIHRo
aW5ncyBpZiB0aGUgY291bnRkb3duIHJlYWNoZXMgemVyby4gV2UgaW5jcmVtZW50IHRoZSBzbG93
IHBhdGggY291bnQgaGVyZSB0byBlbnN1cmUKKyAgICAgICAgLy8gdGhhdCB0aGUgc2xvdyBwYXRo
IGRvZXMgbm90IHRyeSB0byBwYXRjaC4KKyAgICAgICAgaml0LmxvYWQ4KCZzdHViSW5mby5jb3Vu
dGRvd24sIHN0YXRlLnNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIHN0YXRlLnNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuc3RvcmU4
KHN0YXRlLnNjcmF0Y2hHUFIsICZzdHViSW5mby5jb3VudGRvd24pOworICAgIH0KIAogICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNl
UmVnaXN0ZXJzKCkpIHsKQEAgLTExNjEsNiArMTE2NSw5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBQb2x5bW9ycGhpY0FjY2VzczoKICAgICAKICAgICBmb3IgKGF1dG8gY2FsbGJhY2sgOiBzdGF0
ZS5jYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGxpbmtCdWZmZXIpOworCisgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3Jp
Z2luLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVt
cChjYXNlcyksICJcbiIpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0g
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3M7
CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIGNsYXNzIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVT
dHViSW5mbzsKLXN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogc3RydWN0IEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
MTggKzE0NCwxNSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAg
ICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7
Ci0gICAgaWYgKCFzdHViSW5mbykKKyAgICBpZiAoIXN0dWJJbmZvIHx8ICFzdHViSW5mby0+ZXZl
ckNvbnNpZGVyZWQpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKCk7CiAgICAgCiAgICAg
aWYgKHN0dWJJbmZvLT50b29rU2xvd1BhdGgpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIGlmICghc3R1YkluZm8tPnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKCk7Ci0gICAgCiAgICAgc3dpdGNoIChzdHViSW5mby0+Y2Fj
aGVUeXBlKSB7CiAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgotICAgICAgICAvLyBJZiB0aGUg
SklUIHNhdyBpdCBidXQgZGlkbid0IG9wdGltaXplIGl0LCB0aGVuIGFzc3VtZSB0aGF0IHRoaXMg
dGFrZXMgc2xvdyBwYXRoLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgYXR0ZW1wdGVk
IHRvIGNhY2hlIGJ1dCBmYWlsZWQgZm9yIHNvbWUgcmVhc29uLgogICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgCiAgICAgY2FzZSBDYWNoZVR5cGU6
OlB1dEJ5SWRSZXBsYWNlOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgJ
KHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3
LDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1
cmVTdHViSW5mbzsKIGNsYXNzIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVj
dCBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2aXNpb24gMTkw
NDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgRU5BQkxFKEpJVCkKK1N0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBjYWxsU2l0ZUluZGV4KFVJTlRfTUFYKQorICAg
ICwgYWNjZXNzVHlwZShhY2Nlc3NUeXBlKQorICAgICwgY2FjaGVUeXBlKENhY2hlVHlwZTo6VW5z
ZXQpCisgICAgLCBjb3VudGRvd24oMSkgLy8gRm9yIGEgdG90YWxseSBjbGVhciBzdHViLCB3ZSds
bCBwYXRjaCBpdCBhZnRlciB0aGUgZmlyc3QgZXhlY3V0aW9uLgorICAgICwgcmVwYXRjaENvdW50
KDApCisgICAgLCBjb29sRG93bkNvdW50KDApCisgICAgLCByZXNldEJ5R0MoZmFsc2UpCisgICAg
LCB0b29rU2xvd1BhdGgoZmFsc2UpCisgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKK3sKK30K
KworU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVTdHViSW5mbygpCit7Cit9CisKK3ZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7
CisgICAgY2FjaGVUeXBlID0gQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjsKKyAgICAKKyAgICB1LmJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KAorICAgICAgICAqY29kZUJsb2NrLT52bSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAg
ICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKK30KKwordm9pZCBTdHJ1Y3R1cmVTdHViSW5m
bzo6aW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjYWNoZVR5
cGUgPSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOworICAgIAorICAgIHUuYnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZS5zZXQoCisgICAgICAgICpjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgIHUuYnlJZFNl
bGYub2Zmc2V0ID0gb2Zmc2V0OworfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0U3R1
YihDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IHN0dWIpCit7
CisgICAgY2FjaGVUeXBlID0gQ2FjaGVUeXBlOjpTdHViOworICAgIHUuc3R1YiA9IHN0dWIucmVs
ZWFzZSgpOworfQorCiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiB7CiAgICAgc3dp
dGNoIChjYWNoZVR5cGUpIHsKQEAgLTQ5LDggKzkwLDEwIEBAIHZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86OmRlcmVmKCkKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIFN0cnVjdHVyZVN0dWJJbmZv
OjphZGRBY2Nlc3NDYXNlKAotICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNjZXNzQ2Fz
ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogeworICAgIFZNJiB2bSA9ICpj
b2RlQmxvY2stPnZtKCk7CisgICAgCiAgICAgaWYgKCFhY2Nlc3NDYXNlKQogICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CiAgICAgCkBAIC03NCw4ICsxMTcsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgU3RydWN0dXJlU3R1YkluZm86CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKIAotICAgIGNhY2hlVHlwZSA9
IENhY2hlVHlwZTo6U3R1YjsKLSAgICB1LnN0dWIgPSBhY2Nlc3MucmVsZWFzZSgpOworICAgIGlu
aXRTdHViKGNvZGVCbG9jaywgV1RGOjptb3ZlKGFjY2VzcykpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogI2luY2x1ZGUgIlNwaWxsUmVnaXN0ZXJzTW9kZS5oIgpAQCAtNTcsNDEgKzU4LDE5
IEBAIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKICAgICBTdHViCiB9OwogCi1zdHJ1
Y3QgU3RydWN0dXJlU3R1YkluZm8gewotICAgIFN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKLSAgICAgICAgOiBhY2Nlc3NUeXBlKGFjY2Vzc1R5cGUpCi0gICAgICAgICwg
Y2FjaGVUeXBlKENhY2hlVHlwZTo6VW5zZXQpCi0gICAgICAgICwgc2VlbihmYWxzZSkKLSAgICAg
ICAgLCByZXNldEJ5R0MoZmFsc2UpCi0gICAgICAgICwgdG9va1Nsb3dQYXRoKGZhbHNlKQotICAg
ICAgICAsIGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
aW5pdEdldEJ5SWRTZWxmKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2Jq
ZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCi0gICAgewotICAgICAgICBjYWNo
ZVR5cGUgPSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOwotCi0gICAgICAgIHUuYnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIG93bmVyLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKLSAg
ICAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0
UHV0QnlJZFJlcGxhY2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmpl
Y3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGNhY2hl
VHlwZSA9IENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U7Ci0KLSAgICAgICAgdS5ieUlkU2VsZi5i
YXNlT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgb3duZXIsIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOwot
ICAgICAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIGlu
aXRTdHViKHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gc3R1YikKLSAgICB7Ci0g
ICAgICAgIGNhY2hlVHlwZSA9IENhY2hlVHlwZTo6U3R1YjsKLSAgICAgICAgdS5zdHViID0gc3R1
Yi5yZWxlYXNlKCk7Ci0gICAgfQorY2xhc3MgU3RydWN0dXJlU3R1YkluZm8geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN0cnVjdHVyZVN0dWJJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBlKTsKKyAg
ICB+U3RydWN0dXJlU3R1YkluZm8oKTsKKworICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVC
bG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwor
ICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9i
amVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOworICAgIHZvaWQgaW5pdFN0dWIoQ29kZUJs
b2NrKiwgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPik7CiAKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgYWRkQWNjZXNzQ2FzZSgKLSAgICAgICAgVk0mLCBDb2RlQmxvY2sqLCBj
b25zdCBJZGVudGlmaWVyJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAg
Q29kZUJsb2NrKiwgY29uc3QgSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
Pik7CiAKICAgICB2b2lkIHJlc2V0KENvZGVCbG9jayopOwogCkBAIC0xMDEsMjUgKzgwLDU2IEBA
IHN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgLy8gZWl0aGVyIGVudGlyZWx5IG9yIGp1
c3QgZW5vdWdoIHRvIGVuc3VyZSB0aGF0IHRob3NlIGRlYWQgcG9pbnRlcnMgZG9uJ3QgZ2V0IHVz
ZWQgYW55bW9yZS4KICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoQ29kZUJsb2NrKik7CiAg
ICAgICAgIAotICAgIGJvb2wgc2Vlbk9uY2UoKQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb25z
aWRlckNhY2hpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNlZW47CisgICAgICAgIGV2ZXJD
b25zaWRlcmVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFjb3VudGRvd24pIHsKKyAgICAgICAgICAg
IC8vIENoZWNrIGlmIHdlIGhhdmUgYmVlbiBkb2luZyByZXBhdGNoaW5nIHRvbyBmcmVxdWVudGx5
LiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgY29vbCBvZmYKKyAgICAgICAgICAgIC8vIGZvciBhIHdo
aWxlLgorICAgICAgICAgICAgd2lsbFJlcGF0Y2goKTsKKyAgICAgICAgICAgIGlmIChyZXBhdGNo
Q291bnQgPiBPcHRpb25zOjpyZXBhdGNoQ291bnRGb3JDb29sRG93bigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2UndmUgYmVlbiByZXBhdGNoaW5nIHRvbyBtdWNoLCBzbyBkb24ndCBkbyBpdCBu
b3cuCisgICAgICAgICAgICAgICAgcmVwYXRjaENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAv
LyBUaGUgYW1vdW50IG9mIHRpbWUgd2UgcmVxdWlyZSBmb3IgY29vbC1kb3duIGRlcGVuZHMgb24g
dGhlIG51bWJlciBvZiB0aW1lcyB3ZSd2ZQorICAgICAgICAgICAgICAgIC8vIGhhZCB0byBjb29s
IGRvd24gaW4gdGhlIHBhc3QuIFRoZSByZWxhdGlvbnNoaXAgaXMgZXhwb25lbnRpYWwuIFRoZSBt
YXggdmFsdWUgd2UKKyAgICAgICAgICAgICAgICAvLyBhbGxvdyBoZXJlIGlzIDJeMjU2IC0gMiwg
c2luY2UgdGhlIHNsb3cgcGF0aHMgbWF5IGluY3JlbWVudCB0aGUgY291bnQgdG8gaW5kaWNhdGUK
KyAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZXknZCBsaWtlIHRvIHRlbXBvcmFyaWx5IHNraXAg
cGF0Y2hpbmcganVzdCB0aGlzIG9uY2UuCisgICAgICAgICAgICAgICAgY291bnRkb3duID0gV1RG
OjpsZWZ0U2hpZnRXaXRoU2F0dXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdD4oT3B0aW9uczo6Y29vbERvd25CYXNlKCkpLAorICAgICAgICAgICAgICAgICAg
ICBjb29sRG93bkNvdW50LAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSAtIDEpKTsKKyAgICAgICAgICAg
ICAgICB3aWxsQ29vbERvd24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBj
b3VudGRvd24tLTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgc2V0
U2VlbigpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHdpbGxSZXBhdGNoKCkKICAgICB7Ci0gICAg
ICAgIHNlZW4gPSB0cnVlOworICAgICAgICBXVEY6OmluY3JlbWVudFdpdGhTYXR1cmF0aW9uKHJl
cGF0Y2hDb3VudCk7CiAgICAgfQotICAgICAgICAKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGU7
Ci0gICAgQ2FjaGVUeXBlIGNhY2hlVHlwZTsKLSAgICBib29sIHNlZW47Ci0gICAgYm9vbCByZXNl
dEJ5R0MgOiAxOwotICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCB3aWxsQ29vbERvd24oKQorICAgIHsKKyAgICAgICAgV1RGOjppbmNyZW1lbnRXaXRo
U2F0dXJhdGlvbihjb29sRG93bkNvdW50KTsKKyAgICB9CisKKyAgICBDb2RlTG9jYXRpb25DYWxs
IGNhbGxSZXR1cm5Mb2NhdGlvbjsKIAogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXg7CiAKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFzZU9iamVjdFN0
cnVjdHVyZTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgfSBi
eUlkU2VsZjsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIHN0dWI7CisgICAgfSB1OworCiAg
ICAgc3RydWN0IHsKICAgICAgICAgdW5zaWduZWQgc3BpbGxNb2RlIDogODsKICAgICAgICAgaW50
OF90IGJhc2VHUFI7CkBAIC0xNDEsMTUgKzE1MSwxNCBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1Yklu
Zm8gewogI2VuZGlmCiAgICAgfSBwYXRjaDsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3Ry
dWN0dXJlOwotICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwotICAgICAgICB9IGJ5
SWRTZWxmOwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YjsKLSAgICB9IHU7Ci0KLSAg
ICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKKyAgICBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGU7CisgICAgQ2FjaGVUeXBlIGNhY2hlVHlwZTsKKyAgICB1aW50OF90IGNvdW50ZG93
bjsgLy8gV2UgcmVwYXRjaCBvbmx5IHdoZW4gdGhpcyBpcyB6ZXJvLiBJZiBub3QgemVybywgd2Ug
ZGVjcmVtZW50LgorICAgIHVpbnQ4X3QgcmVwYXRjaENvdW50OworICAgIHVpbnQ4X3QgY29vbERv
d25Db3VudDsKKyAgICBib29sIHJlc2V0QnlHQyA6IDE7CisgICAgYm9vbCB0b29rU2xvd1BhdGgg
OiAxOworICAgIGJvb2wgZXZlckNvbnNpZGVyZWQgOiAxOwogfTsKIAogaW5saW5lIENvZGVPcmln
aW4gZ2V0U3RydWN0dXJlU3R1YkluZm9Db2RlT3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHJ1
Y3R1cmVTdHViSW5mbykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTkw
NDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMTIgKzYzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1hcmtlZEFsbG9j
YXRvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAg
ICBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAg
ICBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFibGU7CiAgICAg
c3RydWN0IFN0cmluZ0p1bXBUYWJsZTsKLSAgICBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm87CiAK
ICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZy
b207CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCwxMCArMTg0LDggQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSk7CiAgICAgCiAgICAgYm9vbCBoYXNSZXN1bHQgPSBiYXNlVmFsdWUuZ2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KTsKLSAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoKSkKICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGhhc1Jlc3VsdD8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpKTsK
IH0KQEAgLTIxMCwxMCArMjA4LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbgogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogICAgIAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAgICAgICByZXBhdGNoSW4oZXhlYywgYmFzZSwg
aWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAgIHN0dWJJ
bmZvLT5zZWVuID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKIH0KQEAgLTMwOCwxMCArMzA0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZygpKQogICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKLSAgICBlbHNlCi0gICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTMzMiwxMCArMzI2LDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIGlmIChhY2Nl
c3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAgICAgICByZXBhdGNoUHV0QnlJRChleGVj
LCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKQEAgLTM1NiwxMCArMzQ4LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlYwogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChz
dHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0zODAsMTAgKzM3MCw4IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoKSkKICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9i
amVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwotICAgIGVs
c2UKLSAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAmJiAhbG9hZFRh
cmdldEZyb21Qcm94eSkgewogICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJv
cGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAg
ICAgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB0cnVlKTsKLSAg
ICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZih2bSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZihjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAg
ICB9CiAKQEAgLTMwOCw4ICszMDgsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeUlECiAgICAgICAgICAgICBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgPyBzbG90LnNs
b3RCYXNlKCkgOiBudWxscHRyKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoCi0gICAgICAgIHZtLCBjb2RlQmxvY2ss
IHByb3BlcnR5TmFtZSwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0ciA9CisgICAgICAgIHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2Nr
LCBwcm9wZXJ0eU5hbWUsIFdURjo6bW92ZShuZXdDYXNlKSk7CiAKICAgICBpZiAoIWNvZGVQdHIp
CiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtMzg0LDggKzM4NCw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgICAgICAgICByZXBh
dGNoQnlJZFNlbGZBY2Nlc3MoCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwKICAgICAgICAgICAgICAgICAgICAg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpLCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKAotICAgICAg
ICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0
QnlJZFJlcGxhY2UoY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICB9CiAK
QEAgLTQ1Miw4ICs0NTEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRC
eUlECiAgICAgICAgIH0KICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoCi0gICAgICAgIHZtLCBjb2RlQmxvY2ssIGlkZW50
LCBXVEY6Om1vdmUobmV3Q2FzZSkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShjb2RlQmxvY2ssIGlkZW50LCBXVEY6Om1vdmUobmV3
Q2FzZSkpOwogICAgIAogICAgIGlmICghY29kZVB0cikKICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CkBAIC01MTEsNyArNTA5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeVJl
cGF0Y2hJbigKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmluKAogICAgICAgICB2bSwgb3duZXIsIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0KTsKIAotICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZSh2
bSwgY29kZUJsb2NrLCBpZGVudCwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2NrLCBp
ZGVudCwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKICAgICBpZiAoIWNvZGVQdHIpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsOSBAQCB0eXBlZGVm
IGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGZvcmNlQ29kZUJsb2NrTGl2
ZW5lc3MsIGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBmb3JjZUlDRmFpbHVyZSwgZmFs
c2UsIG51bGxwdHIpIFwKICAgICBcCisgICAgdih1bnNpZ25lZCwgcmVwYXRjaENvdW50Rm9yQ29v
bERvd24sIDEwLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgY29vbERvd25CYXNlLCAyMCwg
bnVsbHB0cikgXAorICAgIFwKICAgICB2KGJvb2wsIGR1bXBHZW5lcmF0ZWRCeXRlY29kZXMsIGZh
bHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMs
IGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCB2YWxpZGF0ZUJ5dGVjb2RlLCBmYWxzZSwg
bnVsbHB0cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262406</attachid>
            <date>2015-10-04 12:26:42 -0700</date>
            <delta_ts>2015-10-04 23:10:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31247</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNTUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE1LTEwLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIGNhY2hlIHJlcGF0Y2hpbmcgc2hvdWxkIGJlIHRocm90dGxlZCBpZiBpdCBoYXBwZW5z
IGEgbG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk3OTYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjI2NzQ0MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3RpY2VkIGEgc2xpZ2h0IFBMVCBy
ZWdyZXNzaW9uIGZyb20gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg5NTg2LiBJ
dCdzIGJlY2F1c2UKKyAgICAgICAgc29tZSBwYWdlcyBkbyB0aGluZ3MgdGhhdCBvdXIgaW5saW5l
IGNhY2hlcyBtaXNoYW5kbGUsIGluIHRoZSBzZW5zZSB0aGF0IHNvbWUgSUNzIGVuZCB1cAorICAg
ICAgICByZXBhdGNoaW5nIHRoZW1zZWx2ZXMgdmVyeSBmcmVxdWVudGx5LiBUaGUgY29zdCBvZiBy
ZXBhdGNoaW5nIG91dHdlaWdocyB0aGUgc3BlZWQtdXAgb24gdGhvc2UKKyAgICAgICAgcGFnZXMu
IFRoZXJlIGFyZSBwcm9iYWJseSBzdXBlciBzbWFydCB0aGluZ3Mgd2UgY291bGQgZG8gdG8gdHVu
ZSB0aGUgSUMgaGV1cmlzdGljcyB0byBtYWtlIHRoZQorICAgICAgICBJQ3MgZG8gdGhlIHJpZ2h0
IHRoaW5nIG9uIHRob3NlIHBhZ2VzLiBCdXQgbW9yZSBmdW5kYW1lbnRhbGx5LCB3ZSBzaG91bGQg
ZW5zdXJlIHRoYXQgb3VyIElDcworICAgICAgICBiYWNrIG9mZiBmcm9tIGNvbnRpbnVvdXMgcmVw
YXRjaGluZyBpZiB0aGV5IHJlcGF0Y2ggYSBsb3QuIFRoYXQncyB3aGF0IHRoaXMgY2hhbmdlIGRv
ZXMuCisKKyAgICAgICAgV2l0aCB0aGlzIGNoYW5nZSwgU3RydWN0dXJlU3R1YkluZm8gY291bnRz
IHRoZSBudW1iZXIgb2YgcmVwYXRjaGluZ3MuIElmIHRoYXQgZXhjZWVkcyBhCisgICAgICAgIHRo
cmVzaG9sZCwgd2UgcHV0IHRoZSBJQyBpbnRvIGEgY29vbC1kb3duIG1vZGUsIHdoZXJlIHNvbWUg
bnVtYmVyIG9mIGZ1dHVyZSByZXBhdGNoIGV2ZW50cyBkbworICAgICAgICBub3RoaW5nIGJ1dCBk
ZWNyZW1lbnQgdGhlIGNvb2wtZG93biBjb3VudGVyLiBUaGUgZHVyYXRpb24gb2YgY29vbC1kb3du
IGluY3JlYXNlcyBleHBvbmVudGlhbGx5CisgICAgICAgIGV2ZXJ5IHRpbWUgd2UgaGF2ZSB0byBk
byBpdC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG91dGxpbmVzIGEgbG90IG9mIGNvZGUu
IFRoZSBmYWN0IHRoYXQgU3RydWN0dXJlU3R1YkluZm8gaGFkIGEgbG90IG9mIGlubGluZQorICAg
ICAgICBtZXRob2RzIHdhcyBzdGFydGluZyB0byBnZXQgb24gbXkgbmVydmVzLiBOb3cgaXQgb25s
eSBoYXMgaW5saW5lIG1ldGhvZHMgZm9yIHRoaW5ncyB0aGF0IG5lZWQKKyAgICAgICAgdG8gYmUg
aW5saW5lZC4gQWxzbywgSSBjaGFuZ2VkIFN0cnVjdHVyZVN0dWJJbmZvIHRvIGJlIGEgY2xhc3Mg
cmF0aGVyIHRoYW4gYSBzdHJ1Y3QuIE1heWJlCisgICAgICAgIHdpdGggZW5vdWdoIHN1Y2ggaW5j
cmVtZW50YWwgY2hhbmdlcywgZXZlbnR1YWxseSBTdHJ1Y3R1cmVTdHViSW5mbyB3aWxsIGFjdHVh
bGx5IGJlaGF2ZSBsaWtlIGEKKyAgICAgICAgcHJvcGVyIGNsYXNzLgorCisgICAgICAgIFRoaXMg
aGFzIG5vIGVmZmVjdCBvbiBKU0MgYmVuY2htYXJrcy4gSXQgcHJvZ3Jlc3NlcyBvbmUgb2YgdGhl
IHBhZ2VzIHRoYXQgd2FzIGhpdCBieSB0aGUKKyAgICAgICAgcmVncmVzc2lvbiBieSAxNSUuIEl0
J3MgaGFyZCB0byBzZWUgaWYgdGhpcyB0b3RhbGx5IGZpeGVzIHRoZSBlbnRpcmUgUExUIHJlZ3Jl
c3Npb24gc2luY2UgdGhlCisgICAgICAgIGdlb21lYW4gcmVncmVzc2lvbiB3YXMgdmVyeSBjbG9z
ZSB0byBub2lzZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNoZWNrSWZPcHRp
bWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpT
dHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp+U3Ry
dWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdl
dEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlk
UmVwbGFjZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0U3R1Yik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6Y29uc2lk
ZXJDYWNoaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OndpbGxSZXBhdGNo
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OndpbGxDb29sRG93bik6CisgICAg
ICAgIChKU0M6OmdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbik6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNlbGYpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRTdHViKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnNlZW5PbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnNldFNlZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4p
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTEwLTAzICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTkwNTIyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsMzkgKzM0MSwz
NyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoCiAgICAgICAgIGlm
IChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkg
R0MpIik7CiAgICAgICAgIAotICAgICAgICBpZiAoc3R1YkluZm8uc2VlbikgewotICAgICAgICAg
ICAgb3V0LnByaW50ZigiIGppdCgiKTsKKyAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBzdHViID0gbnVsbHB0cjsKKyAgICAg
ICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgUG9seW1vcnBo
aWNBY2Nlc3MqIHN0dWIgPSBudWxscHRyOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0
Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgewotICAgICAgICAgICAgY2FzZSBDYWNoZVR5cGU6Okdl
dEJ5SWRTZWxmOgotICAgICAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYiKTsKLSAgICAgICAg
ICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
YWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50Zigic3R1YiIpOwotICAg
ICAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgICAgICAgICAg
b3V0LnByaW50ZigidW5zZXQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChz
dHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgorICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0cnVj
dHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0dWIiKTsKKyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0
dWI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0Ogor
ICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChiYXNlU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsK
LSAgICAgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGJhc2VTdHJ1Y3R1
cmUsIGlkZW50KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUpIHsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJl
KG91dCwgInN0cnVjdCIsIGJhc2VTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoc3R1YikKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIp
OworICAgICAgICBpZiAoc3R1YikKKyAgICAgICAgICAgIG91dC5wcmludCgiLCAiLCAqc3R1Yik7
CiAKLSAgICAgICAgICAgIG91dC5wcmludGYoIikiKTsKLSAgICAgICAgfQorICAgICAgICBvdXQu
cHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWFwKTsKQEAgLTQx
MywyNyArNDExLDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cygK
ICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgi
IChSZXNldCBCeSBHQykiKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdHViSW5mby5zZWVuKSB7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgewotICAgICAgICAgICAgY2FzZSBDYWNo
ZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgicmVwbGFj
ZSwgIik7Ci0gICAgICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBzdHVi
SW5mby51LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIGlkZW50KTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7Ci0g
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJzdHViLCAiLCAqc3R1YkluZm8udS5zdHViKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ2Fj
aGVUeXBlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAgICAgICBvdXQu
cHJpbnRmKCIgaml0KCIpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNo
ZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgICAg
ICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUo
b3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdl
dCgpLCBpZGVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6
OlN0dWI6IHsKKyAgICAgICAgICAgIG91dC5wcmludCgic3R1YiwgIiwgKnN0dWJJbmZvLnUuc3R1
Yik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENhY2hlVHlw
ZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgb3V0LnBy
aW50ZigiKSIpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CkBAIC0xNTk0
LDYgKzE1OTAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAg
ICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVlKQogICAgICwgbV9kaWRGYWlsRlRMQ29t
cGlsYXRpb24oZmFsc2UpCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCisg
ICAgLCBtX3Byb2ZpbGluZ0ZvclRpZXJVcChmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpv
dGhlci5tX3ZtLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5nZXQoKSwgb3RoZXIubV91bmxpbmtl
ZENvZGUuZ2V0KCkpCiAgICAgLCBtX2hhc0RlYnVnZ2VyU3RhdGVtZW50KGZhbHNlKQogICAgICwg
bV9zdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRGlzYWJsZWQpCkBAIC0xNjU1LDYgKzE2NTIsNyBA
QCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgLCBtX3Nob3Vs
ZEFsd2F5c0JlSW5saW5lZCh0cnVlKQogICAgICwgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24oZmFs
c2UpCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCisgICAgLCBtX3Byb2Zp
bGluZ0ZvclRpZXJVcChmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKG1fZ2xvYmFsT2JqZWN0
LT52bSgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrKQogICAgICwgbV9oYXNE
ZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9k
ZURpc2FibGVkKQpAQCAtMjE0MSw2ICsyMTM5LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soV2Vi
QXNzZW1ibHlFeGVjdXRhYgogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQoZmFsc2UpCiAg
ICAgLCBtX2RpZEZhaWxGVExDb21waWxhdGlvbihmYWxzZSkKICAgICAsIG1faGFzQmVlbkNvbXBp
bGVkV2l0aEZUTChmYWxzZSkKKyAgICAsIG1fcHJvZmlsaW5nRm9yVGllclVwKGZhbHNlKQogICAg
ICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0
ZXBwaW5nTW9kZURpc2FibGVkKQogICAgICwgbV9udW1CcmVha3BvaW50cygwKQpAQCAtMzQzNyw2
ICszNDM2LDEwIEBAIGludDMyX3QgQ29kZUJsb2NrOjphZGp1c3RlZENvdW50ZXJWYWx1ZSgKIAog
Ym9vbCBDb2RlQmxvY2s6OmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkKIHsK
KyAgICAvLyBMZXQgZXZlcnlvbmUga25vdyB0aGF0IHRoaXMgQ29kZUJsb2NrIGlzIGJlaW5nIHBy
b2ZpbGVkLiBUaGlzIGNoYW5nZXMgb3VyIElDIGhldXJpc3RpY3MKKyAgICAvLyBzbGlnaHRseS4K
KyAgICBtX3Byb2ZpbGluZ0ZvclRpZXJVcCA9IHRydWU7CisgICAgCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgaWYgKERGRzo6V29ya2xpc3QqIHdvcmtsaXN0ID0gREZHOjpleGlzdGluZ0dsb2Jh
bERGR1dvcmtsaXN0T3JOdWxsKCkpIHsKICAgICAgICAgaWYgKHdvcmtsaXN0LT5jb21waWxhdGlv
blN0YXRlKERGRzo6Q29tcGlsYXRpb25LZXkodGhpcywgREZHOjpERkdNb2RlKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE5MDQz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtODcwLDYgKzg3MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1fZGlk
RmFpbEZUTENvbXBpbGF0aW9uIDogMTsKICAgICBib29sIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZU
TCA6IDE7CisgICAgYm9vbCBtX3Byb2ZpbGluZ0ZvclRpZXJVcCA6IDE7CiAKICAgICAvLyBJbnRl
cm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBiZSBwcml2
YXRlIGlmIGl0IHdhc24ndAogICAgIC8vIGZvciB0aGUgZmFjdCB0aGF0IHdlIHVzZSBpdCBmcm9t
IGFub255bW91cyBuYW1lc3BhY2VzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcsMTIgKzEzNyw5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvclMKICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLAogICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRl
RGF0YSkKIHsKLSAgICBpZiAoIXN0dWJJbmZvKQorICAgIGlmICghc3R1YkluZm8gfHwgIXN0dWJJ
bmZvLT5ldmVyQ29uc2lkZXJlZCkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbik7Ci0gICAgCi0gICAgaWYgKCFzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbik7Ci0gICAgCisKICAgICBQb2x5bW9ycGhpY0Fj
Y2VzcyogbGlzdCA9IDA7CiAgICAgU3RhdGUgc2xvd1BhdGhTdGF0ZSA9IFRha2VzU2xvd1BhdGg7
CiAgICAgaWYgKHN0dWJJbmZvLT5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CkBAIC0y
NjksNyArMjY2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCiAgICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2Rl
T3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEyNywxMyArMTEyNywxNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9seW1vcnBoaWNB
Y2Nlc3M6CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChiaW5hcnlTd2l0Y2gu
ZmFsbFRocm91Z2goKSk7CiAgICAgfQogCi0gICAgc3RhdGUuZmFpbEFuZElnbm9yZS5saW5rKCZq
aXQpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGlubGluZSBjYWNoZSBvcHRpbWl6YXRp
b24gY29kZSBrbm93cyB0aGF0IHdlIGFyZSB0YWtpbmcgc2xvdyBwYXRoIGJlY2F1c2UKLSAgICAv
LyBvZiBzb21ldGhpbmcgdGhhdCBpc24ndCBwYXRjaGFibGUuICJzZWVuIiBiZWluZyBmYWxzZSBt
ZWFucyB0aGF0IHdlIGJ5cGFzcyBwYXRjaGluZy4gVGhpcyBpcwotICAgIC8vIHByZXR0eSBncm9z
cyBidXQgaXQgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGhhdmUgdHdvIHNsb3cgcGF0aCBl
bnRyeXBvaW50cyAtIG9uZSBmb3IKLSAgICAvLyBwYXRjaGluZyBhbmQgb25lIGZvciBub3JtYWwg
c2xvdyBzdHVmZi4KLSAgICBqaXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGZh
bHNlKSwgJnN0dWJJbmZvLnNlZW4pOworICAgIGlmICghc3RhdGUuZmFpbEFuZElnbm9yZS5lbXB0
eSgpKSB7CisgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUubGluaygmaml0KTsKKyAgICAgICAg
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBpbmxpbmUgY2FjaGUgb3B0aW1pemF0aW9u
IGNvZGUga25vd3MgdGhhdCB3ZSBhcmUgdGFraW5nIHNsb3cgcGF0aCBiZWNhdXNlCisgICAgICAg
IC8vIG9mIHNvbWV0aGluZyB0aGF0IGlzbid0IHBhdGNoYWJsZS4gVGhlIHNsb3cgcGF0aCB3aWxs
IGRlY3JlbWVudCAiY291bnRkb3duIiBhbmQgd2lsbCBvbmx5CisgICAgICAgIC8vIHBhdGNoIHRo
aW5ncyBpZiB0aGUgY291bnRkb3duIHJlYWNoZXMgemVyby4gV2UgaW5jcmVtZW50IHRoZSBzbG93
IHBhdGggY291bnQgaGVyZSB0byBlbnN1cmUKKyAgICAgICAgLy8gdGhhdCB0aGUgc2xvdyBwYXRo
IGRvZXMgbm90IHRyeSB0byBwYXRjaC4KKyAgICAgICAgaml0LmxvYWQ4KCZzdHViSW5mby5jb3Vu
dGRvd24sIHN0YXRlLnNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIHN0YXRlLnNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuc3RvcmU4
KHN0YXRlLnNjcmF0Y2hHUFIsICZzdHViSW5mby5jb3VudGRvd24pOworICAgIH0KIAogICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNl
UmVnaXN0ZXJzKCkpIHsKQEAgLTExNjEsNiArMTE2NSw5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBQb2x5bW9ycGhpY0FjY2VzczoKICAgICAKICAgICBmb3IgKGF1dG8gY2FsbGJhY2sgOiBzdGF0
ZS5jYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGxpbmtCdWZmZXIpOworCisgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3Jp
Z2luLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVt
cChjYXNlcyksICJcbiIpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0g
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3M7
CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIGNsYXNzIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVT
dHViSW5mbzsKLXN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogc3RydWN0IEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTkwNDM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
MTggKzE0NCwxNSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAg
ICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7
Ci0gICAgaWYgKCFzdHViSW5mbykKKyAgICBpZiAoIXN0dWJJbmZvIHx8ICFzdHViSW5mby0+ZXZl
ckNvbnNpZGVyZWQpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKCk7CiAgICAgCiAgICAg
aWYgKHN0dWJJbmZvLT50b29rU2xvd1BhdGgpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIGlmICghc3R1YkluZm8tPnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKCk7Ci0gICAgCiAgICAgc3dpdGNoIChzdHViSW5mby0+Y2Fj
aGVUeXBlKSB7CiAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgotICAgICAgICAvLyBJZiB0aGUg
SklUIHNhdyBpdCBidXQgZGlkbid0IG9wdGltaXplIGl0LCB0aGVuIGFzc3VtZSB0aGF0IHRoaXMg
dGFrZXMgc2xvdyBwYXRoLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgYXR0ZW1wdGVk
IHRvIGNhY2hlIGJ1dCBmYWlsZWQgZm9yIHNvbWUgcmVhc29uLgogICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgCiAgICAgY2FzZSBDYWNoZVR5cGU6
OlB1dEJ5SWRSZXBsYWNlOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgJ
KHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3
LDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1
cmVTdHViSW5mbzsKIGNsYXNzIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVj
dCBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2aXNpb24gMTkw
NDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgRU5BQkxFKEpJVCkKK1N0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBjYWxsU2l0ZUluZGV4KFVJTlRfTUFYKQorICAg
ICwgYWNjZXNzVHlwZShhY2Nlc3NUeXBlKQorICAgICwgY2FjaGVUeXBlKENhY2hlVHlwZTo6VW5z
ZXQpCisgICAgLCBjb3VudGRvd24oMSkgLy8gRm9yIGEgdG90YWxseSBjbGVhciBzdHViLCB3ZSds
bCBwYXRjaCBpdCBhZnRlciB0aGUgZmlyc3QgZXhlY3V0aW9uLgorICAgICwgcmVwYXRjaENvdW50
KDApCisgICAgLCBjb29sRG93bkNvdW50KDApCisgICAgLCByZXNldEJ5R0MoZmFsc2UpCisgICAg
LCB0b29rU2xvd1BhdGgoZmFsc2UpCisgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKK3sKK30K
KworU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVTdHViSW5mbygpCit7Cit9CisKK3ZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7
CisgICAgY2FjaGVUeXBlID0gQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjsKKyAgICAKKyAgICB1LmJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KAorICAgICAgICAqY29kZUJsb2NrLT52bSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAg
ICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKK30KKwordm9pZCBTdHJ1Y3R1cmVTdHViSW5m
bzo6aW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjYWNoZVR5
cGUgPSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOworICAgIAorICAgIHUuYnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZS5zZXQoCisgICAgICAgICpjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgIHUuYnlJZFNl
bGYub2Zmc2V0ID0gb2Zmc2V0OworfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0U3R1
YihDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IHN0dWIpCit7
CisgICAgY2FjaGVUeXBlID0gQ2FjaGVUeXBlOjpTdHViOworICAgIHUuc3R1YiA9IHN0dWIucmVs
ZWFzZSgpOworfQorCiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiB7CiAgICAgc3dp
dGNoIChjYWNoZVR5cGUpIHsKQEAgLTQ5LDggKzkwLDEwIEBAIHZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86OmRlcmVmKCkKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIFN0cnVjdHVyZVN0dWJJbmZv
OjphZGRBY2Nlc3NDYXNlKAotICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNjZXNzQ2Fz
ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogeworICAgIFZNJiB2bSA9ICpj
b2RlQmxvY2stPnZtKCk7CisgICAgCiAgICAgaWYgKCFhY2Nlc3NDYXNlKQogICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CiAgICAgCkBAIC03NCw4ICsxMTcsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgU3RydWN0dXJlU3R1YkluZm86CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKIAotICAgIGNhY2hlVHlwZSA9
IENhY2hlVHlwZTo6U3R1YjsKLSAgICB1LnN0dWIgPSBhY2Nlc3MucmVsZWFzZSgpOworICAgIGlu
aXRTdHViKGNvZGVCbG9jaywgV1RGOjptb3ZlKGFjY2VzcykpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogI2luY2x1ZGUgIlNwaWxsUmVnaXN0ZXJzTW9kZS5oIgpAQCAtNTcsNDEgKzU4LDE5
IEBAIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKICAgICBTdHViCiB9OwogCi1zdHJ1
Y3QgU3RydWN0dXJlU3R1YkluZm8gewotICAgIFN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKLSAgICAgICAgOiBhY2Nlc3NUeXBlKGFjY2Vzc1R5cGUpCi0gICAgICAgICwg
Y2FjaGVUeXBlKENhY2hlVHlwZTo6VW5zZXQpCi0gICAgICAgICwgc2VlbihmYWxzZSkKLSAgICAg
ICAgLCByZXNldEJ5R0MoZmFsc2UpCi0gICAgICAgICwgdG9va1Nsb3dQYXRoKGZhbHNlKQotICAg
ICAgICAsIGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
aW5pdEdldEJ5SWRTZWxmKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2Jq
ZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCi0gICAgewotICAgICAgICBjYWNo
ZVR5cGUgPSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOwotCi0gICAgICAgIHUuYnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIG93bmVyLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKLSAg
ICAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0
UHV0QnlJZFJlcGxhY2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmpl
Y3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGNhY2hl
VHlwZSA9IENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U7Ci0KLSAgICAgICAgdS5ieUlkU2VsZi5i
YXNlT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgb3duZXIsIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOwot
ICAgICAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIGlu
aXRTdHViKHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gc3R1YikKLSAgICB7Ci0g
ICAgICAgIGNhY2hlVHlwZSA9IENhY2hlVHlwZTo6U3R1YjsKLSAgICAgICAgdS5zdHViID0gc3R1
Yi5yZWxlYXNlKCk7Ci0gICAgfQorY2xhc3MgU3RydWN0dXJlU3R1YkluZm8geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN0cnVjdHVyZVN0dWJJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBlKTsKKyAg
ICB+U3RydWN0dXJlU3R1YkluZm8oKTsKKworICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVC
bG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwor
ICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9i
amVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOworICAgIHZvaWQgaW5pdFN0dWIoQ29kZUJs
b2NrKiwgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPik7CiAKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgYWRkQWNjZXNzQ2FzZSgKLSAgICAgICAgVk0mLCBDb2RlQmxvY2sqLCBj
b25zdCBJZGVudGlmaWVyJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAg
Q29kZUJsb2NrKiwgY29uc3QgSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
Pik7CiAKICAgICB2b2lkIHJlc2V0KENvZGVCbG9jayopOwogCkBAIC0xMDEsMjUgKzgwLDU2IEBA
IHN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgLy8gZWl0aGVyIGVudGlyZWx5IG9yIGp1
c3QgZW5vdWdoIHRvIGVuc3VyZSB0aGF0IHRob3NlIGRlYWQgcG9pbnRlcnMgZG9uJ3QgZ2V0IHVz
ZWQgYW55bW9yZS4KICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoQ29kZUJsb2NrKik7CiAg
ICAgICAgIAotICAgIGJvb2wgc2Vlbk9uY2UoKQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb25z
aWRlckNhY2hpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNlZW47CisgICAgICAgIGV2ZXJD
b25zaWRlcmVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFjb3VudGRvd24pIHsKKyAgICAgICAgICAg
IC8vIENoZWNrIGlmIHdlIGhhdmUgYmVlbiBkb2luZyByZXBhdGNoaW5nIHRvbyBmcmVxdWVudGx5
LiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgY29vbCBvZmYKKyAgICAgICAgICAgIC8vIGZvciBhIHdo
aWxlLgorICAgICAgICAgICAgd2lsbFJlcGF0Y2goKTsKKyAgICAgICAgICAgIGlmIChyZXBhdGNo
Q291bnQgPiBPcHRpb25zOjpyZXBhdGNoQ291bnRGb3JDb29sRG93bigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2UndmUgYmVlbiByZXBhdGNoaW5nIHRvbyBtdWNoLCBzbyBkb24ndCBkbyBpdCBu
b3cuCisgICAgICAgICAgICAgICAgcmVwYXRjaENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAv
LyBUaGUgYW1vdW50IG9mIHRpbWUgd2UgcmVxdWlyZSBmb3IgY29vbC1kb3duIGRlcGVuZHMgb24g
dGhlIG51bWJlciBvZiB0aW1lcyB3ZSd2ZQorICAgICAgICAgICAgICAgIC8vIGhhZCB0byBjb29s
IGRvd24gaW4gdGhlIHBhc3QuIFRoZSByZWxhdGlvbnNoaXAgaXMgZXhwb25lbnRpYWwuIFRoZSBt
YXggdmFsdWUgd2UKKyAgICAgICAgICAgICAgICAvLyBhbGxvdyBoZXJlIGlzIDJeMjU2IC0gMiwg
c2luY2UgdGhlIHNsb3cgcGF0aHMgbWF5IGluY3JlbWVudCB0aGUgY291bnQgdG8gaW5kaWNhdGUK
KyAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZXknZCBsaWtlIHRvIHRlbXBvcmFyaWx5IHNraXAg
cGF0Y2hpbmcganVzdCB0aGlzIG9uY2UuCisgICAgICAgICAgICAgICAgY291bnRkb3duID0gV1RG
OjpsZWZ0U2hpZnRXaXRoU2F0dXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdD4oT3B0aW9uczo6Y29vbERvd25CYXNlKCkpLAorICAgICAgICAgICAgICAgICAg
ICBjb29sRG93bkNvdW50LAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSAtIDEpKTsKKyAgICAgICAgICAg
ICAgICB3aWxsQ29vbERvd24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBj
b3VudGRvd24tLTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgc2V0
U2VlbigpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHdpbGxSZXBhdGNoKCkKICAgICB7Ci0gICAg
ICAgIHNlZW4gPSB0cnVlOworICAgICAgICBXVEY6OmluY3JlbWVudFdpdGhTYXR1cmF0aW9uKHJl
cGF0Y2hDb3VudCk7CiAgICAgfQotICAgICAgICAKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGU7
Ci0gICAgQ2FjaGVUeXBlIGNhY2hlVHlwZTsKLSAgICBib29sIHNlZW47Ci0gICAgYm9vbCByZXNl
dEJ5R0MgOiAxOwotICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCB3aWxsQ29vbERvd24oKQorICAgIHsKKyAgICAgICAgV1RGOjppbmNyZW1lbnRXaXRo
U2F0dXJhdGlvbihjb29sRG93bkNvdW50KTsKKyAgICB9CisKKyAgICBDb2RlTG9jYXRpb25DYWxs
IGNhbGxSZXR1cm5Mb2NhdGlvbjsKIAogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXg7CiAKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFzZU9iamVjdFN0
cnVjdHVyZTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgfSBi
eUlkU2VsZjsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIHN0dWI7CisgICAgfSB1OworCiAg
ICAgc3RydWN0IHsKICAgICAgICAgdW5zaWduZWQgc3BpbGxNb2RlIDogODsKICAgICAgICAgaW50
OF90IGJhc2VHUFI7CkBAIC0xNDEsMTUgKzE1MSwxNCBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1Yklu
Zm8gewogI2VuZGlmCiAgICAgfSBwYXRjaDsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3Ry
dWN0dXJlOwotICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwotICAgICAgICB9IGJ5
SWRTZWxmOwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YjsKLSAgICB9IHU7Ci0KLSAg
ICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKKyAgICBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGU7CisgICAgQ2FjaGVUeXBlIGNhY2hlVHlwZTsKKyAgICB1aW50OF90IGNvdW50ZG93
bjsgLy8gV2UgcmVwYXRjaCBvbmx5IHdoZW4gdGhpcyBpcyB6ZXJvLiBJZiBub3QgemVybywgd2Ug
ZGVjcmVtZW50LgorICAgIHVpbnQ4X3QgcmVwYXRjaENvdW50OworICAgIHVpbnQ4X3QgY29vbERv
d25Db3VudDsKKyAgICBib29sIHJlc2V0QnlHQyA6IDE7CisgICAgYm9vbCB0b29rU2xvd1BhdGgg
OiAxOworICAgIGJvb2wgZXZlckNvbnNpZGVyZWQgOiAxOwogfTsKIAogaW5saW5lIENvZGVPcmln
aW4gZ2V0U3RydWN0dXJlU3R1YkluZm9Db2RlT3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHJ1
Y3R1cmVTdHViSW5mbykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTkw
NDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMTIgKzYzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1hcmtlZEFsbG9j
YXRvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAg
ICBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAg
ICBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFibGU7CiAgICAg
c3RydWN0IFN0cmluZ0p1bXBUYWJsZTsKLSAgICBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm87CiAK
ICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZy
b207CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCwxMCArMTg0LDggQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSk7CiAgICAgCiAgICAgYm9vbCBoYXNSZXN1bHQgPSBiYXNlVmFsdWUuZ2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KTsKLSAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoKSkKICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGhhc1Jlc3VsdD8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpKTsK
IH0KQEAgLTIxMCwxMCArMjA4LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbgogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogICAgIAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAgICAgICByZXBhdGNoSW4oZXhlYywgYmFzZSwg
aWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAgIHN0dWJJ
bmZvLT5zZWVuID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKIH0KQEAgLTMwOCwxMCArMzA0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZygpKQogICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKLSAgICBlbHNlCi0gICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTMzMiwxMCArMzI2LDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIGlmIChhY2Nl
c3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAgICAgICByZXBhdGNoUHV0QnlJRChleGVj
LCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKQEAgLTM1NiwxMCArMzQ4LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlYwogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChz
dHViSW5mby0+c2VlbikKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZygpKQogICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0zODAsMTAgKzM3MCw4IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoKSkKICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9i
amVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwotICAgIGVs
c2UKLSAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHJldmlzaW9uIDE5MDQzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAmJiAhbG9hZFRh
cmdldEZyb21Qcm94eSkgewogICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJv
cGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAg
ICAgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB0cnVlKTsKLSAg
ICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZih2bSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZihjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAg
ICB9CiAKQEAgLTMwOCw4ICszMDgsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeUlECiAgICAgICAgICAgICBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgPyBzbG90LnNs
b3RCYXNlKCkgOiBudWxscHRyKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoCi0gICAgICAgIHZtLCBjb2RlQmxvY2ss
IHByb3BlcnR5TmFtZSwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0ciA9CisgICAgICAgIHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2Nr
LCBwcm9wZXJ0eU5hbWUsIFdURjo6bW92ZShuZXdDYXNlKSk7CiAKICAgICBpZiAoIWNvZGVQdHIp
CiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtMzg0LDggKzM4NCw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgICAgICAgICByZXBh
dGNoQnlJZFNlbGZBY2Nlc3MoCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwKICAgICAgICAgICAgICAgICAgICAg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpLCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKAotICAgICAg
ICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0
QnlJZFJlcGxhY2UoY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICB9CiAK
QEAgLTQ1Miw4ICs0NTEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRC
eUlECiAgICAgICAgIH0KICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoCi0gICAgICAgIHZtLCBjb2RlQmxvY2ssIGlkZW50
LCBXVEY6Om1vdmUobmV3Q2FzZSkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShjb2RlQmxvY2ssIGlkZW50LCBXVEY6Om1vdmUobmV3
Q2FzZSkpOwogICAgIAogICAgIGlmICghY29kZVB0cikKICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CkBAIC01MTEsNyArNTA5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeVJl
cGF0Y2hJbigKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmluKAogICAgICAgICB2bSwgb3duZXIsIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0KTsKIAotICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZSh2
bSwgY29kZUJsb2NrLCBpZGVudCwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2NrLCBp
ZGVudCwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKICAgICBpZiAoIWNvZGVQdHIpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCShyZXZpc2lvbiAxOTA0MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsOSBAQCB0eXBlZGVm
IGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGZvcmNlQ29kZUJsb2NrTGl2
ZW5lc3MsIGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBmb3JjZUlDRmFpbHVyZSwgZmFs
c2UsIG51bGxwdHIpIFwKICAgICBcCisgICAgdih1bnNpZ25lZCwgcmVwYXRjaENvdW50Rm9yQ29v
bERvd24sIDEwLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgY29vbERvd25CYXNlLCAyMCwg
bnVsbHB0cikgXAorICAgIFwKICAgICB2KGJvb2wsIGR1bXBHZW5lcmF0ZWRCeXRlY29kZXMsIGZh
bHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMs
IGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCB2YWxpZGF0ZUJ5dGVjb2RlLCBmYWxzZSwg
bnVsbHB0cikgXApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDU1MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTAtMDQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgY2FjaGUgcmVwYXRjaGlu
ZyBzaG91bGQgYmUgdGhyb3R0bGVkIGlmIGl0IGhhcHBlbnMgYSBsb3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTc5NgorICAgICAgICByZGFyOi8v
cHJvYmxlbS8yMjY3NDQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBzb21lIGhlbHBlcnMgZm9yIHNhdHVyYXRlZCBtYXRoLgorCisgICAgICAg
ICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6aW5jcmVtZW50V2l0aFNhdHVyYXRp
b24pOgorICAgICAgICAoV1RGOjpsZWZ0U2hpZnRXaXRoU2F0dXJhdGlvbik6CisKIDIwMTUtMTAt
MDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0g
VW5yZXZpZXdlZCBDTWFrZSBidWlsZCBmaXhlcy4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01hdGhF
eHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgJKHJldmlz
aW9uIDE5MDQzNCkKKysrIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAwLDYgKzQwMCwyNSBAQCBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0IHZhbHVl
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSA9PSB2YWx1ZTsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIGluY3JlbWVudFdpdGhTYXR1cmF0aW9uKFQm
IHZhbHVlKQoreworICAgIGlmICh2YWx1ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgo
KSkKKyAgICAgICAgdmFsdWUrKzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBU
IGxlZnRTaGlmdFdpdGhTYXR1cmF0aW9uKFQgdmFsdWUsIHVuc2lnbmVkIHNoaWZ0QW1vdW50LCBU
IG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKQoreworICAgIFQgcmVzdWx0ID0g
dmFsdWUgPDwgc2hpZnRBbW91bnQ7CisgICAgLy8gV2Ugd2lsbCBoYXZlIHNhdHVyYXRlZCBpZiBz
aGlmdGluZyByaWdodCBkb2Vzbid0IHJlY292ZXIgdGhlIG9yaWdpbmFsIHZhbHVlLgorICAgIGlm
IChyZXN1bHQgPj4gc2hpZnRBbW91bnQgIT0gdmFsdWUpCisgICAgICAgIHJldHVybiBtYXg7Cisg
ICAgaWYgKHJlc3VsdCA+IG1heCkKKyAgICAgICAgcmV0dXJuIG1heDsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vICNpZm5kZWYgV1RGX01h
dGhFeHRyYXNfaAo=
</data>
<flag name="review"
          id="287599"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>