<?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>227677</bug_id>
          
          <creation_ts>2021-07-04 23:14:45 -0700</creation_ts>
          <short_desc>[JSC] Optimize Object.assign and putDirectInternal</short_desc>
          <delta_ts>2021-07-06 13:20:15 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>1774758</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-04 23:14:45 -0700</bug_when>
    <thetext>[JSC] Optimize Object.assign and putDirectInternal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774759</commentid>
    <comment_count>1</comment_count>
      <attachid>432871</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-04 23:21:05 -0700</bug_when>
    <thetext>Created attachment 432871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774760</commentid>
    <comment_count>2</comment_count>
      <attachid>432872</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-04 23:23:24 -0700</bug_when>
    <thetext>Created attachment 432872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774763</commentid>
    <comment_count>3</comment_count>
      <attachid>432873</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-05 00:15:48 -0700</bug_when>
    <thetext>Created attachment 432873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774825</commentid>
    <comment_count>4</comment_count>
      <attachid>432873</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-07-05 09:59:05 -0700</bug_when>
    <thetext>Comment on attachment 432873
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2941
&gt; +            // ToObject is idempotent if it succeeds. Plus, it is non-observable except for the case that an exception is thrown. And when the exception is thrown,
&gt; +            // we exit from DFG / FTL. Plus, we keep ordering of these two ToObject because clobberizing rule says clobberTop. So,
&gt; +            // we can say exitOK for each ToObject.

If it&apos;s only observable when an exception is thrown, then why do you need to put in ExitOK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775034</commentid>
    <comment_count>5</comment_count>
      <attachid>432873</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-06 12:22:05 -0700</bug_when>
    <thetext>Comment on attachment 432873
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2941
&gt;&gt; +            // we can say exitOK for each ToObject.
&gt; 
&gt; If it&apos;s only observable when an exception is thrown, then why do you need to put in ExitOK?

The reason is that, even for exception-exit, we make it ExitInvalid. In fix-up phase, we convert them to `Identify(Check:Object)` in many cases, and then we failed to insert these checks since the state is ExitInvalid.
We need to ensure that state is ExitOK after these ToObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775037</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-06 12:25:13 -0700</bug_when>
    <thetext>Committed r279604 (239428@main): &lt;https://commits.webkit.org/239428@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775038</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-06 12:26:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/80225148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775039</commentid>
    <comment_count>8</comment_count>
      <attachid>432873</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-06 12:30:12 -0700</bug_when>
    <thetext>Comment on attachment 432873
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +            2.2. Before r277620, we are checking m_replacementWatchpointSets&apos;s nullptr and that was fast. But after that, we are always
&gt; +                 calling HashMap::get, and it is not inlined. This means that if we have StructureRareData, we are always calling HashMap::get
&gt; +                 even though there is no m_replacementWatchpointSets set. This patch adds HashMap::isNullStorage to avoid this call by inlinely
&gt; +                 check this via `LIKELY(m_replacementWatchpointSets.isNullStorage())`.

It seems like this is not a unique case. Should we instead change HashMap::get so that the empty case is always inlined and marked LIKELY? Or add an overload of HashMap::get? Not wanting to block landing this; seems like a more-refined way to handle this that can help many other call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775043</commentid>
    <comment_count>9</comment_count>
      <attachid>432873</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-06 12:33:38 -0700</bug_when>
    <thetext>Comment on attachment 432873
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +                 check this via `LIKELY(m_replacementWatchpointSets.isNullStorage())`.
&gt; 
&gt; It seems like this is not a unique case. Should we instead change HashMap::get so that the empty case is always inlined and marked LIKELY? Or add an overload of HashMap::get? Not wanting to block landing this; seems like a more-refined way to handle this that can help many other call sites.

I think whether nullptr is LIKELY or not highly depends on the places. I think many HashMaps will have at least one entry and in that case, this LIKELY will rather hurt the performance.
But in this place, nullptr is highly expected, and that&apos;s why I inserted this branch for this place.
I think it is OK to inline `if (m_table)` check in HashMap::get globally, but I don&apos;t think putting `LIKELY` there is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775056</commentid>
    <comment_count>10</comment_count>
      <attachid>432873</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-06 13:20:15 -0700</bug_when>
    <thetext>Comment on attachment 432873
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt;&gt; +                 check this via `LIKELY(m_replacementWatchpointSets.isNullStorage())`.
&gt;&gt; 
&gt;&gt; It seems like this is not a unique case. Should we instead change HashMap::get so that the empty case is always inlined and marked LIKELY? Or add an overload of HashMap::get? Not wanting to block landing this; seems like a more-refined way to handle this that can help many other call sites.
&gt; 
&gt; I think whether nullptr is LIKELY or not highly depends on the places. I think many HashMaps will have at least one entry and in that case, this LIKELY will rather hurt the performance.
&gt; But in this place, nullptr is highly expected, and that&apos;s why I inserted this branch for this place.
&gt; I think it is OK to inline `if (m_table)` check in HashMap::get globally, but I don&apos;t think putting `LIKELY` there is good.

Sounds fine.

I am pretty sure that there are a lot of &quot;almost always empty&quot; maps. I agree that there are also many &quot;likely to have at least one thing&quot; maps. In the end we just have to measure like we always do. Could have multiple versions of get and find if this really has to be carefully optimized.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432871</attachid>
            <date>2021-07-04 23:21:05 -0700</date>
            <delta_ts>2021-07-04 23:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227677-20210704232105.patch</filename>
            <type>text/plain</type>
            <size>63196</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDVlOTZhNWZlYjg0MzNmMjg4MDc5ODAyZmMxMWI0NTBhZDk2ZjVlLi4zOWI0ZTA0MWFiMWQ1OGZm
M2RkMTQ2NGNjNGMyNzdiMTdjMGNlMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3QuYXNzaWduIGFuZCBwdXREaXJlY3RJ
bnRlcm5hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXByb3ZlcyBPYmplY3QuYXNzaWduIHBlcmZvcm1hbmNlIChhbmQgdGhpcyBy
ZXF1aXJlcyBwdXREaXJlY3RJbnRlcm5hbCBpbXByb3ZlbWVudCkuCisKKyAgICAgICAgMS4gT2Jq
ZWN0LmFzc2lnbiBpcyBoYW5kbGVkIGJ5IERGRyAvIEZUTCBhcyBPYmplY3RBc3NpZ24gbm9kZQor
ICAgICAgICAyLiBXZSBmb3VuZCB0aGF0IHB1dERpcmVjdEludGVybmFsIGlzIHN1Ym9wdGltYWwu
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBzZXZlcmFsIGJvdHRsZW5lY2tzLiBUaGV5IGFyZSBzdXBlciBj
cml0aWNhbCBmcm9tIHRoZSBtZWFzdXJlbWVudCBvZgorICAgICAgICAgICBtaWNyb2JlbmNobWFy
a3MuCisgICAgICAgICAgICAyLjEuIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGlzIG5vdCBmcmVlLiBXZSBzaG91bGQgZG8g
dGhhdCBvbmx5IHdoZW4gd2UgbmVlZCBpdC4KKyAgICAgICAgICAgIDIuMi4gQmVmb3JlIHIyNzc2
MjAsIHdlIGFyZSBjaGVja2luZyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMncyBudWxscHRy
IGFuZCB0aGF0IHdhcyBmYXN0LiBCdXQgYWZ0ZXIgdGhhdCwgd2UgYXJlIGFsd2F5cworICAgICAg
ICAgICAgICAgICBjYWxsaW5nIEhhc2hNYXA6OmdldCwgYW5kIGl0IGlzIG5vdCBpbmxpbmVkLiBU
aGlzIG1lYW5zIHRoYXQgaWYgd2UgaGF2ZSBTdHJ1Y3R1cmVSYXJlRGF0YSwgd2UgYXJlIGFsd2F5
cyBjYWxsaW5nIEhhc2hNYXA6OmdldAorICAgICAgICAgICAgICAgICBldmVuIHRob3VnaCB0aGVy
ZSBpcyBubyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMgc2V0LiBUaGlzIHBhdGNoIGFkZHMg
SGFzaE1hcDo6aXNOdWxsU3RvcmFnZSB0byBhdm9pZCB0aGlzIGNhbGwgYnkgaW5saW5lbHkKKyAg
ICAgICAgICAgICAgICAgY2hlY2sgdGhpcyB2aWEgYExJS0VMWShtX3JlcGxhY2VtZW50V2F0Y2hw
b2ludFNldHMuaXNOdWxsU3RvcmFnZSgpKWAuCisgICAgICAgICAgICAyLjMuIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSBoYXMgdmVyeSBjaGVhcCBm
YXN0IHBhdGggYW5kIHdlIG11c3QgaW5saW5lIHRoZW0gdG8gZ2V0IHBlcmZvcm1hbmNlIGJlbmVm
aXQKKyAgICAgICAgICAgICAgICAgZm9yIG1ham9yIHNpbmdsZS10cmFuc2l0aW9uIGNhc2UuCisK
KyAgICAgICAgQWRkZWQgbWljcm9iZW5jaG1hcmtzIHNob3cgc2lnbmlmaWNhbnQgcGVyZm9ybWFu
Y2UgaW1wcm92ZW1lbnRzLiBBbmQgU3BlZWRvbWV0ZXIyIHNob3dzIDAuNiAtIDEuMCUgaW1wcm92
ZW1lbnQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAgICAgICAgICAgIG9iamVjdC1h
c3NpZ24tdHJhbnNpdGlvbiAgICAgIDEwNS4yNTM5Ky0wLjI5NzAgICAgIF4gICAgIDg4LjgwNDYr
LTAuMjAyOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTg1MnggZmFzdGVyCisgICAgICAgICAgICBv
YmplY3QtYXNzaWduLXJlcGxhY2UgICAgICAgICAxMTYuMTU2OCstMC4wOTA1ICAgICBeICAgICA3
NS4wNjczKy0wLjA2NTggICAgICAgIF4gZGVmaW5pdGVseSAxLjU0NzR4IGZhc3RlcgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXYXRjaHBv
aW50RmlyZTo6ZmlyZUFsbFNsb3cpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRG
aXJlOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXYXRjaHBvaW50RmlyZTo6fkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OkRlZmVycmVk
V2F0Y2hwb2ludEZpcmU6OkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOgorICAgICAgICAoSlNDOjpE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKToKKyAgICAgICAgKEpTQzo6RmlyZURldGFp
bDo6RmlyZURldGFpbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpcmVEZXRhaWw6On5GaXJl
RGV0YWlsKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklU
X09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEFzc2lnbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RB
c3NpZ24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6
aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RBc3NpZ25HZW5lcmljKToK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3RvcklubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmNhblBlcmZvcm1GYXN0UHJvcGVy
dHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRy
YW5zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkUmVwbGFjZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRyYW5zaXRpb24g
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmdldCBjb25z
dCk6CisKIDIwMjEtMDctMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBuZXcgcmV2aXNpb24gdmFyaWFibGUgaW4gcGtnY29uZmln
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzNlOTEyNWYzZDg0MzQ2ZWYzMDkyZWVkNjVmOTY3ZWFhMjNlMjY0NS4uZmJh
N2NiZWViNzRlZWE4YjZiNjE1ZmJkOWJhZDliMGE1YmU0YTBlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wNy0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5hc3NpZ24gYW5kIHB1dERpcmVjdEludGVybmFsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNo
TWFwLmg6CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxl
Lmg6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6aXNOdWxsU3RvcmFnZSBjb25zdCk6CisKIDIw
MjEtMDctMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERp
c2FibGUgcmVsYXkgZm9yIFVEUCBzb2NrZXRzIHdoZW4gbm90IG5lZWRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4MWM4NjBhNTNhZGI2Nzc5NmRiZWQwODM5NjdmZGYzNDkxYTI4
MzA5Li5iYTUxNDYyNGMxNzZiMzU1YWU5MzM3ZTE0NmVjMGYxYTk2YjUzYzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg3Nyw2ICsxODc3LDcgQEAKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3
MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzc0MTY2RTI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3Ry
dWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVz
LmggKi87IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5o
ICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0IwMDM2MzE2RCAvKiBX
YXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICovOyB9OwpAQCAtNTEy
OSw2ICs1MTMwLDcgQEAKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBE
QTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
Y3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3MTE5OTEyNTNGQTg3
RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3
ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE5OSw3ICs2MjAxLDYgQEAKIAkJMTQyOUQ5MkMwRUQy
MkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMEZCNTcwNjgyNjdBNjQyRTAwODBGQThCIC8qIEhhc2hhYmxlUmVnaXN0ZXJT
ZXQuaCAqLywKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJz
LmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJz
LmggKi8sCiAJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nw
b29sZXJzLmggKi8sCkBAIC02MjI2LDYgKzYyMjcsNyBAQAogCQkJCTBGNzY2RDJFMTVBOERDREQw
MDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRjkzMjc0QzFDMUY2
NkFBMDBDRjY1NjQgLyogR1BSSW5mby5jcHAgKi8sCiAJCQkJMEYyNEU1M0YxN0VBOUY1OTAwQUJC
MjE3IC8qIEdQUkluZm8uaCAqLywKKwkJCQkwRkI1NzA2ODI2N0E2NDJFMDA4MEZBOEIgLyogSGFz
aGFibGVSZWdpc3RlclNldC5oICovLAogCQkJCURDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLywKIAkJCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovLAogCQkJCURFNUEwOUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNw
cCAqLywKQEAgLTc3NjcsNiArNzc2OSw3IEBACiAJCQkJMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUy
IC8qIE51bWVyaWNTdHJpbmdzLmggKi8sCiAJCQkJQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8q
IE9iamVjdENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIg
LyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkg
LyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCiAJCQkJRkU0OEU2MzcxRUIxMThBRDAw
NUQ3QTk2IC8qIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwICovLAogCQkJCUZFNDhFNjM2
MUVCMTE4OEYwMDVEN0E5NiAvKiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmggKi8sCiAJCQkJ
RTNDMjk1REMxRUQyQ0JBQTAwRDMwMTZGIC8qIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50LmggKi8sCkBAIC05MTU3LDcgKzkxNjAsNiBAQAogCQkJCUZFOTEyQjUxMjUzMTFB
RDEwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkI3NjdFN0IyNjc5MUYyNzAwMTdGOEQxIC8qIEFz
c2VtYmx5SGVscGVyc1Nwb29sZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzcwQjRGNjFCRjI2
MjA1MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE2OEJEODcyNDQ3QkE0RTAwODBGRkI0IC8qIEFnZ3Jl
Z2F0ZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MThFMTVDMzI0NDdCMjI3MDA0NDdBNTYg
LyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjU3LDYg
KzkyNTksNyBAQAogCQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQzM5MkFCMUMzQkVCMDUwMDI0MUY1MyAvKiBBc3Nl
bWJsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIx
NyAvKiBBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFG
MjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCThCNjAxNkY2MUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAv
KiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAg
LTk5MDQsNiArOTkwNyw3IEBACiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRs
ZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyog
SGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMg
LyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU3MDY5MjY3QTY0MkUwMDgw
RkE4QiAvKiBIYXNoYWJsZVJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUEwOTA4
MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
RjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNPd25Qcm9wZXJ0eUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDk3LDcgKzEwMTAxLDYgQEAKIAkJCQkwRjJCNjZFNTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZFNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTM4RDI1MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpTQXJy
YXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1NzA2OTI2
N0E2NDJFMDA4MEZBOEIgLyogSGFzaGFibGVSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RTkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEg
LyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzODUsNiArMTAzODgsNyBA
QAogCQkJCTc5QUMzMEZGMUY5OTUzNjQwMDQ4NEZENyAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBPYmplY3RDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjIxQkRBMDhF
RjAwMzMxQjg0IC8qIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM3NDE2NkUyNjkxMkJDNzAwQzgwNzg5IC8qIE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU0OEU2MzgxRUIxMThEMjAwNUQ3QTk2IC8qIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzI5NUREMUVEMkNCREEwMEQz
MDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEM0U0MEExQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcAppbmRleCA5MTMzYzgwODJiYmRiMjc3MDZkNTc5ZjZjODhmNTc3NzZh
NzQ3ZDI2Li45NGYwNzEwNTFmYjI5YWNkYjY5Zjk2ODRiNGE0ZmM4YjNlZGJlNTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCkBAIC0xOTQsMjAg
KzE5NCw5IEBAIHZvaWQgSW5saW5lV2F0Y2hwb2ludFNldDo6ZnJlZUZhdCgpCiAgICAgZmF0KCkt
PmRlcmVmKCk7CiB9CiAKLURlZmVycmVkV2F0Y2hwb2ludEZpcmU6OkRlZmVycmVkV2F0Y2hwb2lu
dEZpcmUoVk0mIHZtKQotICAgIDogbV92bSh2bSkKLSAgICAsIG1fd2F0Y2hwb2ludHNUb0ZpcmUo
Q2xlYXJXYXRjaHBvaW50KQordm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsU2xv
dygpCiB7Ci19Ci0KLURlZmVycmVkV2F0Y2hwb2ludEZpcmU6On5EZWZlcnJlZFdhdGNocG9pbnRG
aXJlKCkKLXsKLX0KLQotdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKCkKLXsK
LSAgICBpZiAobV93YXRjaHBvaW50c1RvRmlyZS5zdGF0ZSgpID09IElzV2F0Y2hlZCkKLSAgICAg
ICAgbV93YXRjaHBvaW50c1RvRmlyZS5maXJlQWxsKG1fdm0sICp0aGlzKTsKKyAgICBtX3dhdGNo
cG9pbnRzVG9GaXJlLmZpcmVBbGwobV92bSwgKnRoaXMpOwogfQogCiB2b2lkIERlZmVycmVkV2F0
Y2hwb2ludEZpcmU6OnRha2VXYXRjaHBvaW50c1RvRmlyZShXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50c1RvRmlyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5o
CmluZGV4IDEzYjg2N2Q5YmM2YjI2ZDBkZDVkZmJhNTFlMjFiZTEzMGVjZGI1ZjQuLjk2MDgzODMw
ZTE2MWFmMTZiMTY1OWNmZjI1ZmJmMzlkMjgwNTM0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaApAQCAtNDYsMTQgKzQ2LDggQEAgY2xhc3MgRmlyZURl
dGFpbCB7CiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgPSBkZWxldGU7CiAgICAgCiBw
dWJsaWM6Ci0gICAgRmlyZURldGFpbCgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB2aXJ0dWFs
IH5GaXJlRGV0YWlsKCkKLSAgICB7Ci0gICAgfQotICAgIAorICAgIEZpcmVEZXRhaWwoKSA9IGRl
ZmF1bHQ7CisgICAgdmlydHVhbCB+RmlyZURldGFpbCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0ID0gMDsKIH07CiAKQEAgLTUzNCwxNCArNTI4
LDIyIEBAIGNsYXNzIElubGluZVdhdGNocG9pbnRTZXQgewogY2xhc3MgRGVmZXJyZWRXYXRjaHBv
aW50RmlyZSA6IHB1YmxpYyBGaXJlRGV0YWlsIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRlZmVy
cmVkV2F0Y2hwb2ludEZpcmUoKSBvdmVycmlkZTsKKyAgICBEZWZlcnJlZFdhdGNocG9pbnRGaXJl
KFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fd2F0Y2hwb2ludHNUb0Zp
cmUoQ2xlYXJXYXRjaHBvaW50KQorICAgIHsKKyAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHRha2VXYXRjaHBvaW50c1RvRmlyZShXYXRjaHBvaW50U2V0Kik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKCk7CisgICAgdm9pZCBmaXJlQWxsKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3dhdGNocG9pbnRzVG9GaXJlLnN0YXRlKCkgPT0gSXNXYXRjaGVkKQorICAg
ICAgICAgICAgZmlyZUFsbFNsb3coKTsKKyAgICB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3Qgb3ZlcnJpZGUgPSAwOwogcHJpdmF0ZToKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpcmVBbGxTbG93KCk7CisKICAgICBWTSYgbV92bTsKICAgICBXYXRjaHBvaW50
U2V0IG1fd2F0Y2hwb2ludHNUb0ZpcmU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGUzNDMz
ZjRhZWE3ZmM4Mzg3NzBiMzNmYjZhMTNiYWEyM2UxMmExMTcuLjRiNWYwZDYyMDA5ZWU2OTBiZGRm
NDMzMDEwMjI4YWQwYTRhZTQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMxMjMsNiArMzEy
MywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXRGb3JOb2RlKG5vZGUs
IG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE9iamVjdEFz
c2lnbjogeworICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBmYzgxZjY5MDQyOTkzM2M4OTZiZDEzNzUyNDdkZWE4NDIxMDViNGM4Li5i
NDg3YmMwNWY0ZTNlZGRlODhmMThlYjU1ZGUwOGZmYzdhY2E5YzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjkzMCw2ICsyOTMw
LDI3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgT2JqZWN0QXNzaWduSW50cmluc2ljOiB7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAg
ICAgICAgICAvLyBUb09iamVjdCBpcyBpZGVtcG90ZW50IGlmIGl0IHN1Y2NlZWRzLiBQbHVzLCBp
dCBpcyBub24tb2JzZXJ2YWJsZSBleGNlcHQgZm9yIHRoZSBjYXNlIHRoYXQgYW4gZXhjZXB0aW9u
IGlzIHRocm93bi4gQW5kIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24sCisgICAgICAgICAg
ICAvLyB3ZSBleGl0IGZyb20gREZHIC8gRlRMLiBQbHVzLCB3ZSBrZWVwIG9yZGVyaW5nIG9mIHRo
ZXNlIHR3byBUb09iamVjdCBiZWNhdXNlIGNsb2JiZXJpemluZyBydWxlIHNheXMgY2xvYmJlclRv
cC4gU28sCisgICAgICAgICAgICAvLyB3ZSBjYW4gc2F5IGV4aXRPSyBmb3IgZWFjaCBUb09iamVj
dC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBVSU5UMzJfTUFYOwor
ICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGVy
cm9yU3RyaW5nSW5kZXgpLCBPcEluZm8oU3BlY05vbmUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnRJbmNsdWRpbmdUaGlzKDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAg
ICAgICAgTm9kZSogc291cmNlID0gYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGVycm9yU3Ry
aW5nSW5kZXgpLCBPcEluZm8oU3BlY05vbmUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnRJbmNsdWRpbmdUaGlzKDIsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAg
YWRkVG9HcmFwaChPYmplY3RBc3NpZ24sIEVkZ2UodGFyZ2V0LCBLbm93bkNlbGxVc2UpLCBFZGdl
KHNvdXJjZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICBzZXRSZXN1bHQodGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBPYmpl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDAxMjRjZGU4N2JiZDAx
N2IwMTNiMDYwNjBjNzk0YjA3NzZhZTQ2MTMuLjlkMTAwNGZlNTNmM2Q0NDdkZjEwM2ZhY2EwZDJl
MTBlYzRmZjVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xNjc5LDYgKzE2NzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0QXNzaWduOiB7CisgICAgICAgIGNsb2Ji
ZXJUb3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgT2JqZWN0Q3JlYXRl
OiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAg
IGNhc2UgT2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IGFkY2I3MjlkZDBkM2UyMGIwZmI2MWVmNDQ1OWVkZjcxZWEwNDI5ZDIuLjUzYWJmZWE5MWRm
MjI0YmQ0ODI1NTBkYmU1NzgyZDU5Y2FkZDk4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTM2NCw2ICszNjQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgY2FzZSBPYmpl
Y3RBc3NpZ246CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgog
ICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGI2ZGFiYjRjYWZkY2E0MTQ2NmE3ZTk4MmM3
YzQ2YmVmOTdmMDQyYWQuLjBhMDA2MzAzMWNmMDgzYTZjMjIwMGI5NmQxZjIxOTZlYjBjNTc1ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjAw
OCw2ICsyMDA4LDExIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE9iamVjdEFzc2lnbjogewor
ICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBVbnR5cGVkVXNlIGNhc2VzLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBmOWYyNjVlMDRlM2I4Nzdk
ZGM4YWU3ZDllYmQzZmRlZDYzNmQzMDY4Li4wYTU5M2U1NmE3ODZkMzkzZmQ4N2I2NTU3ZDM1MmUz
ZjBkNDA2YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAg
LTEzNSw2ICsxMzUsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBU
b051bWJlcjoKICAgICBjYXNlIFRvTnVtZXJpYzoKKyAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNh
c2UgUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5OgogICAgIGNhc2UgUmVnRXhwTWF0Y2hGYXN0
R2xvYmFsOgogICAgICAgICByZXN1bHQgPSBFeGl0c0ZvckV4Y2VwdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggYTAxMGI1NTJkMGEyOTA1MWMyNDU1ZjJm
ZTdiZDhlNTA5NzZiNDliZC4uNWQ0YjE3ZmIzNzY1Mjg4ODk4YTkzMDhjZjY2NTgxNDIxN2M1MGFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjkyLDYgKzI5
Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDaGVja05v
dEpTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBhcnNlSW50LCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhPYmplY3RBc3NpZ24s
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNDIyODczZGY3OGM1YjBjZTA3NGFj
Mjk4ZGYyMjMzNTBiMjRmMWRmYy4uZjYwNGViOWJkODEzMDFkMmZlOThiMDQzNTFiMzYzNzMwZWEz
ZTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiSlNXZWFrTWFwSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3RvcklubGluZXMu
aCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKICNpbmNs
dWRlICJSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIgpAQCAtMzA0LDYgKzMwNCw2OCBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0LCBKU0NlbGwq
LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk9iamVjdEFzc2lnbk9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiB0YXJnZXQsIEpTT2JqZWN0KiBzb3VyY2UpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGJvb2wgdGFyZ2V0Q2FuUGVyZm9ybUZhc3RQdXQgPSBqc0R5bmFtaWND
YXN0PEpTRmluYWxPYmplY3QqPih2bSwgdGFyZ2V0KSAmJiB0YXJnZXQtPmNhblBlcmZvcm1GYXN0
UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8odm0pICYmIHRhcmdldC0+aXNTdHJ1Y3R1cmVFeHRlbnNp
YmxlKHZtKTsKKworICAgIGlmICh0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCkgeworICAgICAgICBW
ZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgOD4gcHJvcGVydGllczsKKyAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgdmFsdWVzOworICAgICAgICBpZiAoIXNvdXJjZS0+c3RhdGlj
UHJvcGVydGllc1JlaWZpZWQodm0pKSB7CisgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3Rh
dGljUHJvcGVydGllcyhnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjYW5QZXJmb3Jt
RmFzdFByb3BlcnR5RW51bWVyYXRpb25Gb3JPYmplY3RBc3NpZ24oc291cmNlLT5zdHJ1Y3R1cmUo
dm0pKSkgeworICAgICAgICAgICAgLy8gfHNvdXJjZXwgU3RydWN0dXJlIGRvZXMgbm90IGhhdmUg
YW55IGdldHRlcnMuIEFuZCB0YXJnZXQgY2FuIHBlcmZvcm0gZmFzdCBwdXQuCisgICAgICAgICAg
ICAvLyBTbyBlbnVtZXJhdGluZyBwcm9wZXJ0aWVzIGFuZCBwdXR0aW5nIHByb3BlcnRpZXMgYXJl
IG5vbiBvYnNlcnZhYmxlLgorCisgICAgICAgICAgICAvLyBGSVhNRTogSXQgZG9lc24ndCBzZWVt
IGxpa2Ugd2Ugc2hvdWxkIGhhdmUgdG8gZG8gdGhpcyBpbiB0d28gcGhhc2VzLCBidXQKKyAgICAg
ICAgICAgIC8vIHdlJ3JlIHJ1bm5pbmcgaW50byBjcmFzaGVzIHdoZXJlIGl0IGFwcGVhcnMgdGhh
dCBzb3VyY2UgaXMgdHJhbnNpdGlvbmluZworICAgICAgICAgICAgLy8gdW5kZXIgdXMsIGFuZCBl
dmVuIGVuZHMgdXAgaW4gYSBzdGF0ZSB3aGVyZSBpdCBoYXMgYSBudWxsIGJ1dHRlcmZseS4gTXkK
KyAgICAgICAgICAgIC8vIGxlYWRpbmcgaHlwb3RoZXNpcyBoZXJlIGlzIHRoYXQgd2UgZmlyZSBz
b21lIHZhbHVlIHJlcGxhY2VtZW50IHdhdGNocG9pbnQKKyAgICAgICAgICAgIC8vIHRoYXQgZW5k
cyB1cCB0cmFuc2l0aW9uaW5nIHRoZSBzdHJ1Y3R1cmUgdW5kZXJuZWF0aCB1cy4KKyAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4MzcKKwor
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZmFzdCBwYXRoIGlzIHZlcnkgc2ltaWxhciB0byBP
YmplY3RDb25zdHJ1Y3Rvcicgb25lLiBCdXQgZXh0cmFjdGluZyBpdCB0byBhIGZ1bmN0aW9uIGNh
dXNlZCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgLy8gcmVncmVzc2lvbiBpbiBvYmplY3QtYXNz
aWduLXJlcGxhY2UuIFNpbmNlIHRoZSBjb2RlIGlzIHNtYWxsIGFuZCBmYXN0IHBhdGgsIHdlIGtl
ZXAgYm90aC4KKworICAgICAgICAgICAgLy8gRG8gbm90IGNsZWFyIHNpbmNlIFZlY3Rvcjo6Y2xl
YXIgc2hyaW5rcyB0aGUgYmFja2luZyBzdG9yZS4KKyAgICAgICAgICAgIHByb3BlcnRpZXMucmVz
aXplKDApOworICAgICAgICAgICAgdmFsdWVzLmNsZWFyKCk7CisgICAgICAgICAgICBzb3VyY2Ut
PnN0cnVjdHVyZSh2bSktPmZvckVhY2hQcm9wZXJ0eSh2bSwgWyZdIChjb25zdCBQcm9wZXJ0eU1h
cEVudHJ5JiBlbnRyeSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmF0dHJp
YnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZShlbnRyeS5rZXkpOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRl
TmFtZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIHByb3BlcnRpZXMuYXBwZW5kKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coc291cmNlLT5nZXREaXJlY3QoZW50cnkub2Zmc2V0
KSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgcHV0IHByb3BlcnRpZXMgaW4g
YSBiYXRjaGluZyBtYW5uZXIgdG8gYWNjZWxlcmF0ZSBPYmplY3QuYXNzaWduIG1vcmUuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NTM1OAorICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBwdXRQcm9wZXJ0eVNsb3QodGFy
Z2V0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2
bSwgcHJvcGVydGllc1tpXS5nZXQoKSwgdmFsdWVzLmF0KGkpLCBwdXRQcm9wZXJ0eVNsb3QpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgc2NvcGUucmVsZWFzZSgpOworICAgIG9iamVjdEFzc2lnbkdlbmVyaWMoZ2xvYmFsT2JqZWN0
LCB2bSwgdGFyZ2V0LCBzb3VyY2UpOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3QgaW5saW5lQ2FwYWNpdHkpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKaW5kZXggOTljMzkyNTFkMWY1OTljY2I2MTIwMWIwNWViMDVmMDFhYmFk
ZWIxZC4uOGY2NGVkYzE4Y2I1MjczYzJhYzliOGUyOWM0YWFkZmJiMTMxOWQ4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTUzLDYgKzUzLDcgQEAgSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVz
LCBKU0FycmF5KiwgKEpTR2xvYmEKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
T2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVjdCwgSlNBcnJheSosIChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmpl
Y3RDcmVhdGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwgSlND
ZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqLCBKU09iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNv
bnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25DcmVhdGVQcm9taXNlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogY29uc3RydWN0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDMyOWJl
NWE1ZmM5ZDdhNmJkMzMxMTE3YWExY2QwYTQzZTNiOWY0Mi4uYWE3YzYxZTYwYWY1MDdlYjkxN2Uz
MDZiYWI4NTM3YzBlODllMmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE0NTksNiAr
MTQ1OSw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBjYXNlIERhdGFWaWV3
U2V0OgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgorICAgICAgICBjYXNlIE9iamVj
dEFzc2lnbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRo
aXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGY2YzkxZTIzYmYwNTJhZmRlNzRlMzI3ZDY0OGFhYmY4YTI1MWJjODMuLjBmOWJkZTZhMzE1ZGE3
MTcyYTMwZjYxOWVlMmQwYjliNDYwZTJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MDEsNiArNTAxLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0
b3I6CiAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICBjYXNlIE9iamVjdEFzc2ln
bjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtleXM6CiAgICAgY2Fz
ZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2YWYzNjAyNjNkMWMyZDgzZjU2MjA4YWRi
YjUzNjkzN2M1YmIxZjI2Li5iNTQ0OTY0Y2U4ZmMwMDVlMGE3NzliOTdkYThlM2Q4MDg3YmJlZWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMTQwNDgsNiArMTQwNDgsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICB9CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSogbm9kZSkK
K3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0YXJnZXQodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNvdXJjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICBHUFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOworICAgIEdQUlJlZyBzb3Vy
Y2VHUFIgPSBzb3VyY2UuZ3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdENyZWF0ZShOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMjA4ODU5ZGQ0NWQ2OGZhNWY3M2Q0YWM5ZDE3MTUzOGEzNmFjZDdiNi4u
OThjNzYxNmI4ZmQyZmJmNWM0ZGQ4YTU3NzE1MDhhZDI2NzlmOTlkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTU1Miw2ICsxNTUyLDcg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXko
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
T2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKik7CisgICAgdm9pZCBj
b21waWxlT2JqZWN0QXNzaWduKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUNyZWF0ZVByb21pc2UoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMDNkMjg0NzMxMWZlYzE5MmI2
NDU1YjhjYzMyYTAzNTEwMDgyOTM0Zi4uOWQ0MDM2OTYxMGQ4OWU0MWU1MTZmNmM0YTQyNWU1ZmQ3
MTAyYTFiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zMjY4LDYgKzMyNjgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIE9iamVjdEFzc2lnbjogeworICAgICAgICBjb21waWxlT2JqZWN0QXNzaWduKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAg
ICBjb21waWxlT2JqZWN0Q3JlYXRlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI2NGEx
MzE2MjQwMTYyMmRjMTU4YmNiMTI2YzM0YWQ0NGFlNzNkNmIuLjJlYTk1MTc3YjliZjQ1Njg3MTk1
YmEzZGNhYmFmYjRhZWRlNzA2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzk4NCw2ICszOTg0LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBPYmplY3RBc3NpZ246IHsKKyAgICAgICAgY29tcGlsZU9iamVjdEFzc2lnbihu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsK
ICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0ZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNjU0Y2Vi
NDg0MThjMTc2NmMxYjcwYWZkNjhiYzRmNzVmMDM0MTY1ZC4uYTFhNWZkMjQ0Y2YyMTEwMzI2NDE5
N2E3NmFlMzBjN2Y2MGY3OWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMjIyLDYgKzIyMiw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9y
OgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2UgQ2FsbE51bWJlckNv
bnN0cnVjdG9yOgorICAgIGNhc2UgT2JqZWN0QXNzaWduOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRl
OgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFt
ZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggM2QwODcyODA4MjdkMmFlZjdjMzJlZWQyYWZkMTg2MmY0YzM5YWRjNi4uNjA4NTIwZTFkOTdj
OTE1YWJjYjVlM2NiOTgyMDdmNjE5YmVkOTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTExMyw2ICsxMTEzLDkgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAg
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBPYmplY3RBc3NpZ246CisgICAgICAgICAgICBjb21waWxlT2Jq
ZWN0QXNzaWduKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmplY3RDcmVh
dGU6CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTcwNzYsNiArNzA3OSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9
CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlT2JqZWN0QXNzaWduKCkKKyAgICB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25PYmplY3RB
c3NpZ25PYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSkpOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZU9iamVjdENyZWF0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggMDgyNGI0
ZDJmOTM3N2QxYmFjZjBhNWY1YmE4MmNkOGE2Mjg1YTU0OC4uZmY1ZjE5MjQ2OTBmNjJmNDhjNTEz
NjViNTJlNmM1NjNiNGU2Mjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuY3BwCkBAIC0xNTcsNiArMTU3LDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFt
ZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cFRlc3RGYXN0SW50
cmluc2ljIjsKICAgICBjYXNlIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYzoKICAgICAgICAgcmV0
dXJuICJSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMiOworICAgIGNhc2UgT2JqZWN0QXNzaWduSW50
cmluc2ljOgorICAgICAgICByZXR1cm4gIk9iamVjdEFzc2lnbkludHJpbnNpYyI7CiAgICAgY2Fz
ZSBPYmplY3RDcmVhdGVJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiT2JqZWN0Q3JlYXRlSW50
cmluc2ljIjsKICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5zaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGNiNDRjOWJkNTg1
OTdkMjMzZDVjZmRlOTAzODBhZjYxYmY0YzI2NTkuLjhlNjhlN2U3NGZiNzhjZGJkMzMyNGNmYmYw
YTI1ZWQ2ZDIwZDZkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC05NCw2ICs5NCw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAgUmVn
RXhwVGVzdEludHJpbnNpYywKICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywKICAgICBSZWdF
eHBNYXRjaEZhc3RJbnRyaW5zaWMsCisgICAgT2JqZWN0QXNzaWduSW50cmluc2ljLAogICAgIE9i
amVjdENyZWF0ZUludHJpbnNpYywKICAgICBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzSW50cmlu
c2ljLAogICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDBiMTljY2I2NDcwOTdlNzRhMmIwNWE3
ODRhODdjNTlhMTk4MTM0M2EuLmUwYWEwZjNhZTM5OTZhMmYyMzk2MTU0NmMwMzhmMzRlZDdlNGE0
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIx
MDcsMjIgKzIxMDcsMjMgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgICAgIHNs
b3Quc2V0Tm9uY29uZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUg
ZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwotICAgICAgICBpZiAoc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNl
dCkgeyB9KTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZz
ZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpKTsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHN0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7CiAgICAg
ICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAhdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQoc3RydWN0
dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpKTsKKyAgICAgICAgICAgIGlm
IChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5s
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwogICAgICAgICB9Ci0KLSAgICAgICAg
QVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpKSk7Ci0KLSAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQotICAg
ICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Y2xlYXIoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZGFh
OWQ4M2IwOGMzYWYwZWY5M2EwMGNiNTAxMDVjODE5ODVjOGZjZi4uMzI3NTM0NDBiZjkxOTBiYjkx
NGZiY2I3YjExODBiY2M2M2IzOWRlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTM4MCwxMCArMzgwLDYgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgLy8gV2Ugd2Fu
dCB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMg
b2JqZWN0IGhhcyBzd2l0Y2hlZCBzdHJ1Y3R1cmUuCi0gICAgLy8gVGhpcyBhbGxvd3MgYWRhcHRp
dmUgd2F0Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUgbmV3IHN0cnVjdHVyZSBpcyB0aGUgb25l
IHdlIHdhbnQuCi0gICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUg
ZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKLQogICAgIHVuc2lnbmVkIGN1
cnJlbnRBdHRyaWJ1dGVzOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZz
ZXQpIHsKQEAgLTM5NSw5ICszOTEsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKIAogICAg
ICAgICAvLyBGSVhNRTogQ2hlY2sgYXR0cmlidXRlcyBhZ2FpbnN0IFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUuIENoYW5naW5nIEdldHRlclNldHRlciBzaG91bGQgd29y
ayB3L28gdHJhbnNpdGlvbi4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDM0MgotICAgICAgICBpZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3du
UHJvcGVydHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkp
KQorICAgICAgICBpZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkgJiYgKGF0dHJp
YnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKSB7CisgICAgICAgICAgICAv
LyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZpcmUgYWZ0
ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0cnVjdHVyZS4KKyAgICAgICAgICAgIC8vIFRo
aXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9ic2VydmUgaWYgdGhlIG5ldyBzdHJ1
Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgorICAgICAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0
dXJlKTsKICAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVD
aGFuZ2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
JmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDA2LDggKzQwNSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZQogICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKHZtKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKAotICAgICAgICB2bSwgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCwgc2xvdC5jb250ZXh0KCks
ICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKKyAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUg
dHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZpcmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRj
aGVkIHN0cnVjdHVyZS4KKyAgICAvLyBUaGlzIGFsbG93cyBhZGFwdGl2ZSB3YXRjaHBvaW50cyB0
byBvYnNlcnZlIGlmIHRoZSBuZXcgc3RydWN0dXJlIGlzIHRoZSBvbmUgd2Ugd2FudC4KKyAgICBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9p
bnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRk
TmV3UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgb2Zmc2V0LCBzbG90LmNvbnRleHQoKSwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwog
ICAgIAogICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA5Y2E0NGQyYzQ2N2VhNTg3Zjhi
N2JlN2RjNjFjYWY5MWY2NThjYzEzLi45MDIzZGM1MzY1OTliMzgzOWFhZjQyYmNhYzA5OGNkMjkx
YzZmZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVk
ZSAiU3ltYm9sLmgiCkBAIC03NSw3ICs3Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAg
IGlzRnJvemVuICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbiAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGlzRXh0ZW5zaWJsZSAgICAgICAg
ICAgICAgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCiAgIGlzICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0
b3JJcyAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyIE9iamVjdElz
SW50cmluc2ljCi0gIGFzc2lnbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24gICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIGFzc2lnbiAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24gICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyIE9iamVjdEFzc2lnbkludHJpbnNpYwogICB2YWx1ZXMg
ICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzICAgICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBlbnRyaWVzICAgICAgICAgICAgICAgICAgIG9i
amVjdENvbnN0cnVjdG9yRW50cmllcyAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQogICBmcm9tRW50cmllcyAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtMjYzLDYgKzI2NCw0
MyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JLZXlzLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVk
ZSwgQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OktleXMpKSk7CiB9CiAKK3ZvaWQgb2JqZWN0QXNz
aWduR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0
KiB0YXJnZXQsIEpTT2JqZWN0KiBzb3VyY2UpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgLy8gW1tHZXRPd25Qcm9wZXJ0eU5hbWVzXV0sIFtbR2V0
XV0gZXRjLiBjb3VsZCBtb2RpZnkgdGFyZ2V0IG9iamVjdCBhbmQgaW52YWxpZGF0ZSB0aGlzIGFz
c3VtcHRpb24uCisgICAgLy8gRm9yIGV4YW1wbGUsIFtbR2V0XV0gb2Ygc291cmNlIG9iamVjdCBj
b3VsZCBjb25maWd1cmUgc2V0dGVyIHRvIHRhcmdldCBvYmplY3QuIFNvIGRpc2FibGUgdGhlIGZh
c3QgcGF0aC4KKworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXModm0sIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7
CisgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMoc291cmNl
LCBnbG9iYWxPYmplY3QsIHByb3BlcnRpZXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICB1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG51bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICBjb25zdCBhdXRvJiBw
cm9wZXJ0eU5hbWUgPSBwcm9wZXJ0aWVzW2pdOworICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFt
ZS5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9w
ZXJ0eVNsb3Qoc291cmNlLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGlmICghaGFz
UHJvcGVydHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNsb3QuYXR0cmli
dXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgaWYgKExJS0VMWSghc2xvdC5p
c1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSkKKyAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRW
YWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZhbHVlID0gc291cmNlLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBwdXRQcm9wZXJ0eVNsb3QodGFyZ2V0LCB0cnVlKTsKKyAgICAgICAgdGFyZ2V0
LT5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0
eVNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
IH0KK30KKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWdu
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI5NCwyOSArMzMyLDYgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGNhblBl
cmZvcm1GYXN0UHJvcGVydHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbiA9IFtdIChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92
ZXJyaWRlc0FueUZvcm1PZkdldE93blByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbmRleGVkIHByb3Bl
cnRpZXMgY2FuIGJlIGhhbmRsZWQuCi0gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTM1OAotICAgICAgICAgICAgICAgIGlmIChoYXNJ
bmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAvLyBD
YW5ub3QgcGVyZm9ybSBmYXN0IFtbUHV0XV0gdG8gfHRhcmdldHwgaWYgdGhlIHByb3BlcnR5IG5h
bWVzIG9mIHRoZSB8c291cmNlfCBjb250YWluICJfX3Byb3RvX18iLgotICAgICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2lu
YWxQcm90bygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9OwotCiAgICAgICAgICAgICBpZiAoY2Fu
UGVyZm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2JqZWN0QXNzaWduKHNvdXJjZS0+c3Ry
dWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgICAgICAvLyB8c291cmNlfCBTdHJ1Y3R1cmUgZG9l
cyBub3QgaGF2ZSBhbnkgZ2V0dGVycy4gQW5kIHRhcmdldCBjYW4gcGVyZm9ybSBmYXN0IHB1dC4K
ICAgICAgICAgICAgICAgICAvLyBTbyBlbnVtZXJhdGluZyBwcm9wZXJ0aWVzIGFuZCBwdXR0aW5n
IHByb3BlcnRpZXMgYXJlIG5vbiBvYnNlcnZhYmxlLgpAQCAtMzI4LDYgKzM0Myw5IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBlbmRzIHVwIHRyYW5z
aXRpb25pbmcgdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoIHVzLgogICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4MzcKIAorICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGZhc3QgcGF0aCBpcyB2ZXJ5IHNpbWlsYXIgdG8gREZH
T3BlcmF0aW9ucycgb25lLiBCdXQgZXh0cmFjdGluZyBpdCB0byBhIGZ1bmN0aW9uIGNhdXNlZCBw
ZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgIC8vIHJlZ3Jlc3Npb24gaW4gb2JqZWN0LWFzc2ln
bi1yZXBsYWNlLiBTaW5jZSB0aGUgY29kZSBpcyBzbWFsbCBhbmQgZmFzdCBwYXRoLCB3ZSBrZWVw
IGJvdGguCisKICAgICAgICAgICAgICAgICAvLyBEbyBub3QgY2xlYXIgc2luY2UgVmVjdG9yOjpj
bGVhciBzaHJpbmtzIHRoZSBiYWNraW5nIHN0b3JlLgogICAgICAgICAgICAgICAgIHByb3BlcnRp
ZXMucmVzaXplKDApOwogICAgICAgICAgICAgICAgIHZhbHVlcy5jbGVhcigpOwpAQCAtMzU1LDM4
ICszNzMsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JBc3Np
Z24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gW1tHZXRPd25Qcm9wZXJ0eU5hbWVzXV0sIFtbR2V0XV0gZXRjLiBj
b3VsZCBtb2RpZnkgdGFyZ2V0IG9iamVjdCBhbmQgaW52YWxpZGF0ZSB0aGlzIGFzc3VtcHRpb24u
Ci0gICAgICAgIC8vIEZvciBleGFtcGxlLCBbW0dldF1dIG9mIHNvdXJjZSBvYmplY3QgY291bGQg
Y29uZmlndXJlIHNldHRlciB0byB0YXJnZXQgb2JqZWN0LiBTbyBkaXNhYmxlIHRoZSBmYXN0IHBh
dGguCiAgICAgICAgIHRhcmdldENhblBlcmZvcm1GYXN0UHV0ID0gZmFsc2U7Ci0KLSAgICAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyh2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5n
c0FuZFN5bWJvbHMsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKLSAgICAgICAgc291cmNl
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMoc291cmNlLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnRpZXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAg
ICBvYmplY3RBc3NpZ25HZW5lcmljKGdsb2JhbE9iamVjdCwgdm0sIHRhcmdldCwgc291cmNlKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgICAgICB1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaiA9IDA7IGogPCBudW1Qcm9wZXJ0aWVzOyBqKyspIHsKLSAgICAgICAgICAgIGNvbnN0
IGF1dG8mIHByb3BlcnR5TmFtZSA9IHByb3BlcnRpZXNbal07Ci0gICAgICAgICAgICBBU1NFUlQo
IXByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpOwotCi0gICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChzb3VyY2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Q
cm9wZXJ0eSk7Ci0gICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdChzb3VyY2UsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7Ci0gICAgICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlOwotICAgICAgICAgICAgaWYgKExJS0VMWSghc2xvdC5pc1RhaW50ZWRCeU9w
YXF1ZU9iamVjdCgpKSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHZhbHVlID0gc291cmNlLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJnZXQsIHRydWUpOwotICAgICAgICAg
ICAgdGFyZ2V0LT5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhcmdl
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaAppbmRleCA3NGUwN2EwNmNjMTM2YWE4MGU4ZTQ3ZTNhYTBhZmU5NmFmMDIwZTc5Li4x
MjJiNzZhYWExZTZkZjM1ZGQzMTQ0NDE2NWFkNjYyODU4YzYyYzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTE2NSw2ICsx
NjUsNyBAQCBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBjbwogSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwog
SlNBcnJheSogb3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlLCBzdGQ6Om9wdGlvbmFsPENhY2hl
ZFByb3BlcnR5TmFtZXNLaW5kPik7CiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Cit2b2lkIG9iamVjdEFzc2ln
bkdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpTT2JqZWN0
KiBzb3VyY2UpOwogCiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9y
SXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9ySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNjNmZTJlNTI2OGJkZDdhZjY4MDA5
OGNkMDY5YzUzMDIyYmVkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIGNhblBlcmZvcm1GYXN0
UHJvcGVydHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNBbnlGb3JtT2ZHZXRPd25Qcm9wZXJ0eU5hbWVzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogSW5kZXhlZCBwcm9wZXJ0aWVzIGNhbiBiZSBoYW5k
bGVkLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NTgKKyAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RydWN0dXJlLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RydWN0
dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RydWN0dXJlLT5oYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgLy8gQ2Fubm90IHBlcmZvcm0gZmFzdCBbW1B1dF1dIHRvIHx0YXJnZXR8IGlmIHRoZSBw
cm9wZXJ0eSBuYW1lcyBvZiB0aGUgfHNvdXJjZXwgY29udGFpbiAiX19wcm90b19fIi4KKyAgICBp
ZiAoc3RydWN0dXJlLT5oYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFs
UHJvdG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDliMmUxNWExYTA2ZDhlODg4ZDBhMGIxMTJmZjUwNjdhMjE0NDMyZjMuLjQ5
YWM3NDVkNjVjZmU0M2U0ZDdhMmE1MTQ4OTJmNDg1ZGYwMGQ1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNjEsMTYgKzYxLDYgQEAgc3RhdGlj
IFNpbmdsZVNsb3RUcmFuc2l0aW9uV2Vha093bmVyJiBzaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcigpCiAgICAgcmV0dXJuIG93bmVyOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRyYW5zaXRpb24oKSBjb25zdAotewotICAgIEFTU0VS
VChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICBpZiAoV2Vha0ltcGwqIGltcGwgPSB0aGlzLT53
ZWFrSW1wbCgpKSB7Ci0gICAgICAgIGlmIChpbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZl
KQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxTdHJ1Y3R1cmUqPihpbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogaW5saW5lIHZvaWQg
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzZXRTaW5nbGVUcmFuc2l0aW9uKFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKQEAgLTg5LDE1
ICs3OSw2IEBAIGJvb2wgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpjb250YWlucyhVbmlxdWVk
U3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCBhdHRyaWJ1CiAgICAgcmV0dXJuIG1hcCgpLT5nZXQo
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXkocmVwLCBhdHRyaWJ1dGVzLCB0cmFu
c2l0aW9uS2luZCkpOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmdldChVbmlxdWVkU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBU
cmFuc2l0aW9uS2luZCB0cmFuc2l0aW9uS2luZCkgY29uc3QKLXsKLSAgICBpZiAoaXNVc2luZ1Np
bmdsZVNsb3QoKSkgewotICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBzaW5nbGVUcmFu
c2l0aW9uKCk7Ci0gICAgICAgIHJldHVybiAodHJhbnNpdGlvbiAmJiB0cmFuc2l0aW9uLT5tX3Ry
YW5zaXRpb25Qcm9wZXJ0eU5hbWUgPT0gcmVwICYmIHRyYW5zaXRpb24tPnRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzICYmIHRyYW5zaXRpb24tPnRyYW5zaXRpb25L
aW5kKCkgPT0gdHJhbnNpdGlvbktpbmQpID8gdHJhbnNpdGlvbiA6IG51bGxwdHI7Ci0gICAgfQot
ICAgIHJldHVybiBtYXAoKS0+Z2V0KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5
KHJlcCwgYXR0cmlidXRlcywgdHJhbnNpdGlvbktpbmQpKTsKLX0KLQogdm9pZCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAg
IGlmIChpc1VzaW5nU2luZ2xlU2xvdCgpKSB7CkBAIC00NzUsMzcgKzQ1Niw2IEBAIFByb3BlcnR5
VGFibGUqIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBz
ZXRQcm9wZXJ0eVRhYmxlCiAgICAgcmV0dXJuIHRhYmxlOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCi17Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKLQotICAg
IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7Ci0KLSAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRGlj
dGlvbmFyeSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChTdHJ1Y3R1cmUq
IGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHVp
ZCwgYXR0cmlidXRlcywgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb24pKSB7Ci0gICAg
ICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgp
LCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwotICAgICAgICBvZmZzZXQg
PSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsKLSAgICAgICAgcmV0dXJu
IGV4aXN0aW5nVHJhbnNpdGlvbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCi17Ci0gICAgQVNTRVJU
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwotICAgIHJldHVybiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZS51aWQoKSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKLX0KLQotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihz
dHJ1Y3R1cmUtPm1fbG9jayk7Ci0gICAgcmV0dXJuIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgdWlkLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwot
fQotCiBib29sIFN0cnVjdHVyZTo6aG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKFZNJiB2bSwg
SlNPYmplY3QqIGJhc2UpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGJhc2UtPnN0cnVjdHVyZSh2bSkg
PT0gdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4
IDlmMjA2YzdlZThmOGU2OGQ0MTliYmE3MWZjOGFjMzI0YzQ0YWY5N2EuLmYyNTVjYWM3NGQzYzYz
ZTJiMDM4OGQ2NTJiMjVkNjhhOTlkZjhmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBs
OwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERlZmVyR0M7CitjbGFzcyBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRh
OwpAQCAtMTA5LDIwICsxMTAsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVGaXJlRGV0YWlsIGZpbmFsIDog
cHVibGljIEZpcmVEZXRhaWwgewogICAgIGNvbnN0IFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiB9
OwogCi1jbGFzcyBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBmaW5h
bCA6IHB1YmxpYyBEZWZlcnJlZFdhdGNocG9pbnRGaXJlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk7Ci1wdWJsaWM6
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+RGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUoKSBmaW5hbDsKLSAgICAKLSAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgZmluYWw7Ci0KLSAgICBjb25zdCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9Ci0KLXByaXZh
dGU6Ci0gICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLX07Ci0KIGNsYXNzIFN0cnVj
dHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3Qgc2hv
cnRJbnZhbGlkT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpIC0g
MTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IHVzZVJhcmVEYXRhRmxhZyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKTsKQEAgLTE5Miw3ICsxNzksNyBAQCBjbGFz
cyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkTmV3UHJvcGVydHlUcmFuc2l0aW9u
KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9w
ZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFByb3BlcnR5U2xvdDo6
VW5rbm93bkNvbnRleHQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9m
ZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxw
dHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKaW5kZXggZDA2YmU0ZTE3OTU2ZGQ0YmRhYzQ5YjhmZmZkMWE4NjMwOGY2ZDNiYS4uM2VjZDgz
Mzk1NTBiYTFlYThkZmU4NGFiZDk0YTlhNDcyMjlhYjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMzcsNiArMzcsMjAgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlIGZpbmFsIDogcHVibGljIERlZmVycmVkV2F0Y2hwb2ludEZpcmUgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKTsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZShWTSYsIFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIH5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSgpIGZp
bmFsOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7CisKKyAgICBj
b25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKK307CisKIGlu
bGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5m
bywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJ
bmNsdWRpbmdIaXN0b3J5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQo
dm0uc3RydWN0dXJlU3RydWN0dXJlKTsKQEAgLTM1OCw3ICszNzIsMTAgQEAgaW5saW5lIHZvaWQg
U3RydWN0dXJlOjpkaWRSZXBsYWNlUHJvcGVydHkoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewog
ICAgIGlmIChMSUtFTFkoIWhhc1JhcmVEYXRhKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgV2F0
Y2hwb2ludFNldCogc2V0ID0gcmFyZURhdGEoKS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRz
LmdldChvZmZzZXQpOworICAgIGF1dG8qIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsKKyAg
ICBpZiAoTElLRUxZKHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMuaXNOdWxs
U3RvcmFnZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IHJh
cmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMuZ2V0KG9mZnNldCk7CiAgICAgaWYg
KExJS0VMWSghc2V0KSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldC0+ZmlyZUFsbCh2bSgpLCAi
UHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOwpAQCAtMzcwLDcgKzM4Nyw5IEBAIGlubGluZSBX
YXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OnByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0
KFByb3BlcnR5T2Zmc2V0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdHJ5UmFy
ZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy5nZXQob2Zmc2V0
KTsKKyAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMuaXNOdWxs
U3RvcmFnZSgpKQorICAgICAgICByZXR1cm4gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0cy5nZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRGV0YWlsc0Z1bmM+CkBAIC02ODksNCArNzA4LDU0IEBAIGlubGluZSBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsCiAgICAgcmV0dXJuIG5vblByb3BlcnR5VHJhbnNpdGlvblNsb3codm0sIHN0cnVj
dHVyZSwgdHJhbnNpdGlvbktpbmQpOwogfQogCitpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBvZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25h
cnkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoU3RydWN0dXJlKiBleGlz
dGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldCh1aWQsIGF0
dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uKSkgeworICAgICAgICB2
YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhp
c3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgb2Zmc2V0ID0gZXhp
c3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBleGlz
dGluZ1RyYW5zaXRpb247CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FMV0FZ
U19JTkxJTkUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7Cisg
ICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHJldHVybiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZS51aWQoKSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworQUxXQVlTX0lOTElORSBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwg
dW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gYWRk
UHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCB1aWQs
IGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKK2lubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
VXNpbmdTaW5nbGVTbG90KCkpOworICAgIGlmIChXZWFrSW1wbCogaW1wbCA9IHRoaXMtPndlYWtJ
bXBsKCkpIHsKKyAgICAgICAgaWYgKGltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpCisg
ICAgICAgICAgICByZXR1cm4ganNDYXN0PFN0cnVjdHVyZSo+KGltcGwtPmpzVmFsdWUoKS5hc0Nl
bGwoKSk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitpbmxpbmUgU3RydWN0dXJl
KiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmdldChVbmlxdWVkU3RyaW5nSW1wbCogcmVwLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZCB0cmFuc2l0aW9uS2luZCkgY29uc3QK
K3sKKyAgICBpZiAoaXNVc2luZ1NpbmdsZVNsb3QoKSkgeworICAgICAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSBzaW5nbGVUcmFuc2l0aW9uKCk7CisgICAgICAgIHJldHVybiAodHJhbnNpdGlv
biAmJiB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPT0gcmVwICYmIHRyYW5z
aXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzICYmIHRy
YW5zaXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gdHJhbnNpdGlvbktpbmQpID8gdHJhbnNpdGlv
biA6IG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBtYXAoKS0+Z2V0KFN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZTo6SGFzaDo6S2V5KHJlcCwgYXR0cmlidXRlcywgdHJhbnNpdGlvbktpbmQpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNo
TWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggMTRlMmJjMzg5NzIxMzBiYzgz
MmFjOWE1OGI3ZDVkZTlmNGY3YmRmNi4uMjZhZGRjNDFlNDc1MTY4YjgxMTg3NTVhNjQzNGIxZTA2
M2YwZDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hNYXAuaApAQCAtMTM3LDYgKzEzNyw4IEBAIGNsYXNzIEhhc2hNYXAgZmlu
YWwgewogICAgIC8vIFNhbWUgYXMgZ2V0KCksIGJ1dCBhZ2dyZXNzaXZlbHkgaW5saW5lZC4KICAg
ICBNYXBwZWRQZWVrVHlwZSBpbmxpbmVHZXQoY29uc3QgS2V5VHlwZSYpIGNvbnN0OwogCisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzTnVsbFN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltcGwu
aXNOdWxsU3RvcmFnZSgpOyB9CisKICAgICAvLyBSZXBsYWNlcyB0aGUgdmFsdWUgYnV0IG5vdCB0
aGUga2V5IGlmIHRoZSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50LgogICAgIC8vIFJldHVybiB2YWx1
ZSBpbmNsdWRlcyBib3RoIGFuIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sCiAgICAgLy8g
YW5kIGFuIGlzTmV3RW50cnkgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyBlbnRyeSB3YXMg
YWRkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmgKaW5kZXggMmEyNzI4MDYwZjViZWJmYzczMWZlOWEyODdiYzk2NTc4YjRl
MzI0Yy4uNDZlNWJiOTViOGExNjJhOTMzYTFlMjU3M2VkZGU2NzBkNDQ1MDIxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQu
aApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBIYXNoU2V0IGZpbmFsIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChjb25zdCBU
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNvbnN0OwogCisgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzTnVsbFN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNOdWxsU3RvcmFnZSgp
OyB9CiAKICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3Ig
dG8gdGhlIGFkZGVkIHZhbHVlJ3MgbG9jYXRpb24sCiAgICAgLy8gYW5kIGFuIGlzTmV3RW50cnkg
Ym9vbCB0aGF0IGluZGljYXRlcyBpZiBpdCBpcyBhIG5ldyBvciBleGlzdGluZyBlbnRyeSBpbiB0
aGUgc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBiZTdlY2Q5ZmI3NmJiMTFlZTgzMDQxZmI0NzQ1ZWNj
M2U0OWEwN2M2Li41MTUwZWQ2YTI2NzYzZmE5MjlhOWQ0ODVkMWNkYjRjOTViN2RmMmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaApAQCAtNTAwLDYgKzUwMCw4IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBUJik7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5
cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7CiAKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzTnVsbFN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiAhbV90YWJsZTsgfQorCiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25zdDsKICNl
bHNlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDg5ZTVmODgxMTBkYjc0MjJkZGJhMzRlMDU3OWRlOWE1ZmNiZWZjYzYuLmFlYzQ5Zjk4YWM5
NTY3Yjk5MzEyNmQ4MTVkNWFkM2ZjZGNmM2EzNDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDctMDQg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRp
bWl6ZSBPYmplY3QuYXNzaWduIGFuZCBwdXREaXJlY3RJbnRlcm5hbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Njc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0
LWFzc2lnbi1yZXBsYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9vYmplY3QtYXNzaWduLXRyYW5zaXRpb24uanM6IEFkZGVkLgorICAgICAg
ICAodGVzdCk6CisKIDIwMjEtMDYtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgVHVybiBvZmYgZGF0YSBJQ3MgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi1yZXBsYWNlLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi1yZXBsYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMjAy
MWZlMzEzMzQ1YWZmYzhmYWU1ZDY3MWM0MjMxNmMwMWU1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtYXNzaWduLXJlcGxhY2UuanMKQEAgLTAsMCAr
MSwxMiBAQAorZnVuY3Rpb24gdGVzdCh0YXJnZXQsIHNvdXJjZSkKK3sKKyAgICBPYmplY3QuYXNz
aWduKHRhcmdldCwgc291cmNlKTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgdGFyZ2V0ID0g
e307Cit2YXIgc291cmNlID0geworICAgIGE6NDIsIGI6NDIsIGM6NDIKK307Citmb3IgKHZhciBp
ID0gMDsgaSA8IDJlNjsgKytpKQorICAgIHRlc3QodGFyZ2V0LCBzb3VyY2UpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi10cmFuc2l0aW9uLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi10cmFuc2l0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIxMDU2MTZjYWFiNTE5NmNjYWEwNjk1MTE3YzRlM2FkMTg0ZmM1MWUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtYXNzaWduLXRyYW5zaXRp
b24uanMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gdGVzdCh0YXJnZXQsIHNvdXJjZSkKK3sK
KyAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit2YXIgc291cmNlID0geworICAgIGE6NDIsIGI6NDIsIGM6NDIKK307Citmb3IgKHZhciBpID0g
MDsgaSA8IDJlNjsgKytpKQorICAgIHRlc3Qoe30sIHNvdXJjZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432872</attachid>
            <date>2021-07-04 23:23:24 -0700</date>
            <delta_ts>2021-07-05 00:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227677-20210704232324.patch</filename>
            <type>text/plain</type>
            <size>63119</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDVlOTZhNWZlYjg0MzNmMjg4MDc5ODAyZmMxMWI0NTBhZDk2ZjVlLi4zOWI0ZTA0MWFiMWQ1OGZm
M2RkMTQ2NGNjNGMyNzdiMTdjMGNlMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3QuYXNzaWduIGFuZCBwdXREaXJlY3RJ
bnRlcm5hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXByb3ZlcyBPYmplY3QuYXNzaWduIHBlcmZvcm1hbmNlIChhbmQgdGhpcyBy
ZXF1aXJlcyBwdXREaXJlY3RJbnRlcm5hbCBpbXByb3ZlbWVudCkuCisKKyAgICAgICAgMS4gT2Jq
ZWN0LmFzc2lnbiBpcyBoYW5kbGVkIGJ5IERGRyAvIEZUTCBhcyBPYmplY3RBc3NpZ24gbm9kZQor
ICAgICAgICAyLiBXZSBmb3VuZCB0aGF0IHB1dERpcmVjdEludGVybmFsIGlzIHN1Ym9wdGltYWwu
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBzZXZlcmFsIGJvdHRsZW5lY2tzLiBUaGV5IGFyZSBzdXBlciBj
cml0aWNhbCBmcm9tIHRoZSBtZWFzdXJlbWVudCBvZgorICAgICAgICAgICBtaWNyb2JlbmNobWFy
a3MuCisgICAgICAgICAgICAyLjEuIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGlzIG5vdCBmcmVlLiBXZSBzaG91bGQgZG8g
dGhhdCBvbmx5IHdoZW4gd2UgbmVlZCBpdC4KKyAgICAgICAgICAgIDIuMi4gQmVmb3JlIHIyNzc2
MjAsIHdlIGFyZSBjaGVja2luZyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMncyBudWxscHRy
IGFuZCB0aGF0IHdhcyBmYXN0LiBCdXQgYWZ0ZXIgdGhhdCwgd2UgYXJlIGFsd2F5cworICAgICAg
ICAgICAgICAgICBjYWxsaW5nIEhhc2hNYXA6OmdldCwgYW5kIGl0IGlzIG5vdCBpbmxpbmVkLiBU
aGlzIG1lYW5zIHRoYXQgaWYgd2UgaGF2ZSBTdHJ1Y3R1cmVSYXJlRGF0YSwgd2UgYXJlIGFsd2F5
cyBjYWxsaW5nIEhhc2hNYXA6OmdldAorICAgICAgICAgICAgICAgICBldmVuIHRob3VnaCB0aGVy
ZSBpcyBubyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMgc2V0LiBUaGlzIHBhdGNoIGFkZHMg
SGFzaE1hcDo6aXNOdWxsU3RvcmFnZSB0byBhdm9pZCB0aGlzIGNhbGwgYnkgaW5saW5lbHkKKyAg
ICAgICAgICAgICAgICAgY2hlY2sgdGhpcyB2aWEgYExJS0VMWShtX3JlcGxhY2VtZW50V2F0Y2hw
b2ludFNldHMuaXNOdWxsU3RvcmFnZSgpKWAuCisgICAgICAgICAgICAyLjMuIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSBoYXMgdmVyeSBjaGVhcCBm
YXN0IHBhdGggYW5kIHdlIG11c3QgaW5saW5lIHRoZW0gdG8gZ2V0IHBlcmZvcm1hbmNlIGJlbmVm
aXQKKyAgICAgICAgICAgICAgICAgZm9yIG1ham9yIHNpbmdsZS10cmFuc2l0aW9uIGNhc2UuCisK
KyAgICAgICAgQWRkZWQgbWljcm9iZW5jaG1hcmtzIHNob3cgc2lnbmlmaWNhbnQgcGVyZm9ybWFu
Y2UgaW1wcm92ZW1lbnRzLiBBbmQgU3BlZWRvbWV0ZXIyIHNob3dzIDAuNiAtIDEuMCUgaW1wcm92
ZW1lbnQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAgICAgICAgICAgIG9iamVjdC1h
c3NpZ24tdHJhbnNpdGlvbiAgICAgIDEwNS4yNTM5Ky0wLjI5NzAgICAgIF4gICAgIDg4LjgwNDYr
LTAuMjAyOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTg1MnggZmFzdGVyCisgICAgICAgICAgICBv
YmplY3QtYXNzaWduLXJlcGxhY2UgICAgICAgICAxMTYuMTU2OCstMC4wOTA1ICAgICBeICAgICA3
NS4wNjczKy0wLjA2NTggICAgICAgIF4gZGVmaW5pdGVseSAxLjU0NzR4IGZhc3RlcgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXYXRjaHBv
aW50RmlyZTo6ZmlyZUFsbFNsb3cpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRG
aXJlOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXYXRjaHBvaW50RmlyZTo6fkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OkRlZmVycmVk
V2F0Y2hwb2ludEZpcmU6OkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOgorICAgICAgICAoSlNDOjpE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKToKKyAgICAgICAgKEpTQzo6RmlyZURldGFp
bDo6RmlyZURldGFpbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpcmVEZXRhaWw6On5GaXJl
RGV0YWlsKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklU
X09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEFzc2lnbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RB
c3NpZ24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6
aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RBc3NpZ25HZW5lcmljKToK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3RvcklubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmNhblBlcmZvcm1GYXN0UHJvcGVy
dHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRy
YW5zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkUmVwbGFjZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRyYW5zaXRpb24g
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmdldCBjb25z
dCk6CisKIDIwMjEtMDctMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBuZXcgcmV2aXNpb24gdmFyaWFibGUgaW4gcGtnY29uZmln
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzNlOTEyNWYzZDg0MzQ2ZWYzMDkyZWVkNjVmOTY3ZWFhMjNlMjY0NS4uZmJh
N2NiZWViNzRlZWE4YjZiNjE1ZmJkOWJhZDliMGE1YmU0YTBlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wNy0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIE9wdGltaXplIE9iamVjdC5hc3NpZ24gYW5kIHB1dERpcmVjdEludGVybmFsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNo
TWFwLmg6CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxl
Lmg6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6aXNOdWxsU3RvcmFnZSBjb25zdCk6CisKIDIw
MjEtMDctMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERp
c2FibGUgcmVsYXkgZm9yIFVEUCBzb2NrZXRzIHdoZW4gbm90IG5lZWRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4MWM4NjBhNTNhZGI2Nzc5NmRiZWQwODM5NjdmZGYzNDkxYTI4
MzA5Li5iYTUxNDYyNGMxNzZiMzU1YWU5MzM3ZTE0NmVjMGYxYTk2YjUzYzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg3Nyw2ICsxODc3LDcgQEAKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3
MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzc0MTY2RTI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3Ry
dWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVz
LmggKi87IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5o
ICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0IwMDM2MzE2RCAvKiBX
YXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICovOyB9OwpAQCAtNTEy
OSw2ICs1MTMwLDcgQEAKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBE
QTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
Y3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3MTE5OTEyNTNGQTg3
RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3
ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE5OSw3ICs2MjAxLDYgQEAKIAkJMTQyOUQ5MkMwRUQy
MkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMEZCNTcwNjgyNjdBNjQyRTAwODBGQThCIC8qIEhhc2hhYmxlUmVnaXN0ZXJT
ZXQuaCAqLywKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJz
LmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJz
LmggKi8sCiAJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nw
b29sZXJzLmggKi8sCkBAIC02MjI2LDYgKzYyMjcsNyBAQAogCQkJCTBGNzY2RDJFMTVBOERDREQw
MDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRjkzMjc0QzFDMUY2
NkFBMDBDRjY1NjQgLyogR1BSSW5mby5jcHAgKi8sCiAJCQkJMEYyNEU1M0YxN0VBOUY1OTAwQUJC
MjE3IC8qIEdQUkluZm8uaCAqLywKKwkJCQkwRkI1NzA2ODI2N0E2NDJFMDA4MEZBOEIgLyogSGFz
aGFibGVSZWdpc3RlclNldC5oICovLAogCQkJCURDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLywKIAkJCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovLAogCQkJCURFNUEwOUZGMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNw
cCAqLywKQEAgLTc3NjcsNiArNzc2OSw3IEBACiAJCQkJMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUy
IC8qIE51bWVyaWNTdHJpbmdzLmggKi8sCiAJCQkJQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8q
IE9iamVjdENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIg
LyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkg
LyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCiAJCQkJRkU0OEU2MzcxRUIxMThBRDAw
NUQ3QTk2IC8qIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwICovLAogCQkJCUZFNDhFNjM2
MUVCMTE4OEYwMDVEN0E5NiAvKiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmggKi8sCiAJCQkJ
RTNDMjk1REMxRUQyQ0JBQTAwRDMwMTZGIC8qIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50LmggKi8sCkBAIC05MTU3LDcgKzkxNjAsNiBAQAogCQkJCUZFOTEyQjUxMjUzMTFB
RDEwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkI3NjdFN0IyNjc5MUYyNzAwMTdGOEQxIC8qIEFz
c2VtYmx5SGVscGVyc1Nwb29sZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzcwQjRGNjFCRjI2
MjA1MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE2OEJEODcyNDQ3QkE0RTAwODBGRkI0IC8qIEFnZ3Jl
Z2F0ZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MThFMTVDMzI0NDdCMjI3MDA0NDdBNTYg
LyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjU3LDYg
KzkyNTksNyBAQAogCQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQzM5MkFCMUMzQkVCMDUwMDI0MUY1MyAvKiBBc3Nl
bWJsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIx
NyAvKiBBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFG
MjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCThCNjAxNkY2MUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAv
KiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAg
LTk5MDQsNiArOTkwNyw3IEBACiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRs
ZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyog
SGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMg
LyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU3MDY5MjY3QTY0MkUwMDgw
RkE4QiAvKiBIYXNoYWJsZVJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUEwOTA4
MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
RjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNPd25Qcm9wZXJ0eUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDk3LDcgKzEwMTAxLDYgQEAKIAkJCQkwRjJCNjZFNTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZFNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTM4RDI1MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpTQXJy
YXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1NzA2OTI2
N0E2NDJFMDA4MEZBOEIgLyogSGFzaGFibGVSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RTkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEg
LyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzODUsNiArMTAzODgsNyBA
QAogCQkJCTc5QUMzMEZGMUY5OTUzNjQwMDQ4NEZENyAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBPYmplY3RDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjIxQkRBMDhF
RjAwMzMxQjg0IC8qIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM3NDE2NkUyNjkxMkJDNzAwQzgwNzg5IC8qIE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU0OEU2MzgxRUIxMThEMjAwNUQ3QTk2IC8qIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzI5NUREMUVEMkNCREEwMEQz
MDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEM0U0MEExQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcAppbmRleCA5MTMzYzgwODJiYmRiMjc3MDZkNTc5ZjZjODhmNTc3NzZh
NzQ3ZDI2Li45NGYwNzEwNTFmYjI5YWNkYjY5Zjk2ODRiNGE0ZmM4YjNlZGJlNTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCkBAIC0xOTQsMjAg
KzE5NCw5IEBAIHZvaWQgSW5saW5lV2F0Y2hwb2ludFNldDo6ZnJlZUZhdCgpCiAgICAgZmF0KCkt
PmRlcmVmKCk7CiB9CiAKLURlZmVycmVkV2F0Y2hwb2ludEZpcmU6OkRlZmVycmVkV2F0Y2hwb2lu
dEZpcmUoVk0mIHZtKQotICAgIDogbV92bSh2bSkKLSAgICAsIG1fd2F0Y2hwb2ludHNUb0ZpcmUo
Q2xlYXJXYXRjaHBvaW50KQordm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsU2xv
dygpCiB7Ci19Ci0KLURlZmVycmVkV2F0Y2hwb2ludEZpcmU6On5EZWZlcnJlZFdhdGNocG9pbnRG
aXJlKCkKLXsKLX0KLQotdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKCkKLXsK
LSAgICBpZiAobV93YXRjaHBvaW50c1RvRmlyZS5zdGF0ZSgpID09IElzV2F0Y2hlZCkKLSAgICAg
ICAgbV93YXRjaHBvaW50c1RvRmlyZS5maXJlQWxsKG1fdm0sICp0aGlzKTsKKyAgICBtX3dhdGNo
cG9pbnRzVG9GaXJlLmZpcmVBbGwobV92bSwgKnRoaXMpOwogfQogCiB2b2lkIERlZmVycmVkV2F0
Y2hwb2ludEZpcmU6OnRha2VXYXRjaHBvaW50c1RvRmlyZShXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50c1RvRmlyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5o
CmluZGV4IDEzYjg2N2Q5YmM2YjI2ZDBkZDVkZmJhNTFlMjFiZTEzMGVjZGI1ZjQuLjk2MDgzODMw
ZTE2MWFmMTZiMTY1OWNmZjI1ZmJmMzlkMjgwNTM0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaApAQCAtNDYsMTQgKzQ2LDggQEAgY2xhc3MgRmlyZURl
dGFpbCB7CiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgPSBkZWxldGU7CiAgICAgCiBw
dWJsaWM6Ci0gICAgRmlyZURldGFpbCgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB2aXJ0dWFs
IH5GaXJlRGV0YWlsKCkKLSAgICB7Ci0gICAgfQotICAgIAorICAgIEZpcmVEZXRhaWwoKSA9IGRl
ZmF1bHQ7CisgICAgdmlydHVhbCB+RmlyZURldGFpbCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0ID0gMDsKIH07CiAKQEAgLTUzNCwxNCArNTI4
LDIyIEBAIGNsYXNzIElubGluZVdhdGNocG9pbnRTZXQgewogY2xhc3MgRGVmZXJyZWRXYXRjaHBv
aW50RmlyZSA6IHB1YmxpYyBGaXJlRGV0YWlsIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRlZmVy
cmVkV2F0Y2hwb2ludEZpcmUoKSBvdmVycmlkZTsKKyAgICBEZWZlcnJlZFdhdGNocG9pbnRGaXJl
KFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fd2F0Y2hwb2ludHNUb0Zp
cmUoQ2xlYXJXYXRjaHBvaW50KQorICAgIHsKKyAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHRha2VXYXRjaHBvaW50c1RvRmlyZShXYXRjaHBvaW50U2V0Kik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKCk7CisgICAgdm9pZCBmaXJlQWxsKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3dhdGNocG9pbnRzVG9GaXJlLnN0YXRlKCkgPT0gSXNXYXRjaGVkKQorICAg
ICAgICAgICAgZmlyZUFsbFNsb3coKTsKKyAgICB9CiAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3Qgb3ZlcnJpZGUgPSAwOwogcHJpdmF0ZToKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpcmVBbGxTbG93KCk7CisKICAgICBWTSYgbV92bTsKICAgICBXYXRjaHBvaW50
U2V0IG1fd2F0Y2hwb2ludHNUb0ZpcmU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGUzNDMz
ZjRhZWE3ZmM4Mzg3NzBiMzNmYjZhMTNiYWEyM2UxMmExMTcuLjRiNWYwZDYyMDA5ZWU2OTBiZGRm
NDMzMDEwMjI4YWQwYTRhZTQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMxMjMsNiArMzEy
MywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXRGb3JOb2RlKG5vZGUs
IG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE9iamVjdEFz
c2lnbjogeworICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBmYzgxZjY5MDQyOTkzM2M4OTZiZDEzNzUyNDdkZWE4NDIxMDViNGM4Li5i
NDg3YmMwNWY0ZTNlZGRlODhmMThlYjU1ZGUwOGZmYzdhY2E5YzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjkzMCw2ICsyOTMw
LDI3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgT2JqZWN0QXNzaWduSW50cmluc2ljOiB7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAg
ICAgICAgICAvLyBUb09iamVjdCBpcyBpZGVtcG90ZW50IGlmIGl0IHN1Y2NlZWRzLiBQbHVzLCBp
dCBpcyBub24tb2JzZXJ2YWJsZSBleGNlcHQgZm9yIHRoZSBjYXNlIHRoYXQgYW4gZXhjZXB0aW9u
IGlzIHRocm93bi4gQW5kIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24sCisgICAgICAgICAg
ICAvLyB3ZSBleGl0IGZyb20gREZHIC8gRlRMLiBQbHVzLCB3ZSBrZWVwIG9yZGVyaW5nIG9mIHRo
ZXNlIHR3byBUb09iamVjdCBiZWNhdXNlIGNsb2JiZXJpemluZyBydWxlIHNheXMgY2xvYmJlclRv
cC4gU28sCisgICAgICAgICAgICAvLyB3ZSBjYW4gc2F5IGV4aXRPSyBmb3IgZWFjaCBUb09iamVj
dC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBVSU5UMzJfTUFYOwor
ICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGVy
cm9yU3RyaW5nSW5kZXgpLCBPcEluZm8oU3BlY05vbmUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnRJbmNsdWRpbmdUaGlzKDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAg
ICAgICAgTm9kZSogc291cmNlID0gYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGVycm9yU3Ry
aW5nSW5kZXgpLCBPcEluZm8oU3BlY05vbmUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnRJbmNsdWRpbmdUaGlzKDIsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAg
YWRkVG9HcmFwaChPYmplY3RBc3NpZ24sIEVkZ2UodGFyZ2V0LCBLbm93bkNlbGxVc2UpLCBFZGdl
KHNvdXJjZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICBzZXRSZXN1bHQodGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBPYmpl
Y3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDAxMjRjZGU4N2JiZDAx
N2IwMTNiMDYwNjBjNzk0YjA3NzZhZTQ2MTMuLjlkMTAwNGZlNTNmM2Q0NDdkZjEwM2ZhY2EwZDJl
MTBlYzRmZjVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xNjc5LDYgKzE2NzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0QXNzaWduOiB7CisgICAgICAgIGNsb2Ji
ZXJUb3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgT2JqZWN0Q3JlYXRl
OiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAg
IGNhc2UgT2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IGFkY2I3MjlkZDBkM2UyMGIwZmI2MWVmNDQ1OWVkZjcxZWEwNDI5ZDIuLjUzYWJmZWE5MWRm
MjI0YmQ0ODI1NTBkYmU1NzgyZDU5Y2FkZDk4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTM2NCw2ICszNjQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgY2FzZSBPYmpl
Y3RBc3NpZ246CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgog
ICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGI2ZGFiYjRjYWZkY2E0MTQ2NmE3ZTk4MmM3
YzQ2YmVmOTdmMDQyYWQuLjM3OWJiZGVlYjk1NjcxMzg0NjkwMzQzZjM3YzM4NjM5NTBlODcwMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjg5
Miw2ICsyODkyLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICAg
ICAgY2FzZSBPYmplY3RBc3NpZ246CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBB
U1NFUlRfRU5BQkxFRAogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKaW5kZXggZjlmMjY1ZTA0ZTNiODc3ZGRjOGFlN2Q5ZWJkM2ZkZWQ2MzZk
MzA2OC4uMGE1OTNlNTZhNzg2ZDM5M2ZkODdiNjU1N2QzNTJlM2YwZDQwNmFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAgRXhp
dE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0
YXRlKQogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBU
b051bWVyaWM6CisgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIFJlZ0V4cEV4ZWNOb25HbG9i
YWxPclN0aWNreToKICAgICBjYXNlIFJlZ0V4cE1hdGNoRmFzdEdsb2JhbDoKICAgICAgICAgcmVz
dWx0ID0gRXhpdHNGb3JFeGNlcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IGEwMTBiNTUyZDBhMjkwNTFjMjQ1NWYyZmU3YmQ4ZTUwOTc2YjQ5YmQuLjVk
NGIxN2ZiMzc2NTI4ODg5OGE5MzA4Y2Y2NjU4MTQyMTdjNTBhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tOb3RKU0Nhc3QsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhQYXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKEdldFByb3RvdHlwZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0QXNzaWduLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oT2JqZWN0Q3JlYXRlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oT2JqZWN0S2V5cywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKE9iamVjdEdldE93blByb3BlcnR5TmFtZXMsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCmluZGV4IDQyMjg3M2RmNzhjNWIwY2UwNzRhYzI5OGRmMjIzMzUwYjI0ZjFkZmMu
LmY2MDRlYjliZDgxMzAxZDJmZTk4YjA0MzUxYjM2MzczMGVhM2UwMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNjMsNyArNjMsNyBAQAogI2lu
Y2x1ZGUgIkpTV2Vha01hcElubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNs
dWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlSW50LmgiCiAjaW5jbHVkZSAiUmVnRXhwR2xvYmFsRGF0
YUlubGluZXMuaCIKQEAgLTMwNCw2ICszMDQsNjggQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIHByb3RvdHlwZSk7
CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmpl
Y3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0
LCBKU09iamVjdCogc291cmNlKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBib29s
IHRhcmdldENhblBlcmZvcm1GYXN0UHV0ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4o
dm0sIHRhcmdldCkgJiYgdGFyZ2V0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZUV4Y2x1ZGluZ1By
b3RvKHZtKSAmJiB0YXJnZXQtPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSk7CisKKyAgICBpZiAo
dGFyZ2V0Q2FuUGVyZm9ybUZhc3RQdXQpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIDg+IHByb3BlcnRpZXM7CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IHZhbHVlczsKKyAgICAgICAgaWYgKCFzb3VyY2UtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKHZt
KSkgeworICAgICAgICAgICAgc291cmNlLT5yZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2FuUGVyZm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0
aW9uRm9yT2JqZWN0QXNzaWduKHNvdXJjZS0+c3RydWN0dXJlKHZtKSkpIHsKKyAgICAgICAgICAg
IC8vIHxzb3VyY2V8IFN0cnVjdHVyZSBkb2VzIG5vdCBoYXZlIGFueSBnZXR0ZXJzLiBBbmQgdGFy
Z2V0IGNhbiBwZXJmb3JtIGZhc3QgcHV0LgorICAgICAgICAgICAgLy8gU28gZW51bWVyYXRpbmcg
cHJvcGVydGllcyBhbmQgcHV0dGluZyBwcm9wZXJ0aWVzIGFyZSBub24gb2JzZXJ2YWJsZS4KKwor
ICAgICAgICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHdlIHNob3VsZCBoYXZl
IHRvIGRvIHRoaXMgaW4gdHdvIHBoYXNlcywgYnV0CisgICAgICAgICAgICAvLyB3ZSdyZSBydW5u
aW5nIGludG8gY3Jhc2hlcyB3aGVyZSBpdCBhcHBlYXJzIHRoYXQgc291cmNlIGlzIHRyYW5zaXRp
b25pbmcKKyAgICAgICAgICAgIC8vIHVuZGVyIHVzLCBhbmQgZXZlbiBlbmRzIHVwIGluIGEgc3Rh
dGUgd2hlcmUgaXQgaGFzIGEgbnVsbCBidXR0ZXJmbHkuIE15CisgICAgICAgICAgICAvLyBsZWFk
aW5nIGh5cG90aGVzaXMgaGVyZSBpcyB0aGF0IHdlIGZpcmUgc29tZSB2YWx1ZSByZXBsYWNlbWVu
dCB3YXRjaHBvaW50CisgICAgICAgICAgICAvLyB0aGF0IGVuZHMgdXAgdHJhbnNpdGlvbmluZyB0
aGUgc3RydWN0dXJlIHVuZGVybmVhdGggdXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM3CisKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGZhc3QgcGF0aCBpcyB2ZXJ5IHNpbWlsYXIgdG8gT2JqZWN0Q29uc3RydWN0b3InIG9u
ZS4gQnV0IGV4dHJhY3RpbmcgaXQgdG8gYSBmdW5jdGlvbiBjYXVzZWQgcGVyZm9ybWFuY2UKKyAg
ICAgICAgICAgIC8vIHJlZ3Jlc3Npb24gaW4gb2JqZWN0LWFzc2lnbi1yZXBsYWNlLiBTaW5jZSB0
aGUgY29kZSBpcyBzbWFsbCBhbmQgZmFzdCBwYXRoLCB3ZSBrZWVwIGJvdGguCisKKyAgICAgICAg
ICAgIC8vIERvIG5vdCBjbGVhciBzaW5jZSBWZWN0b3I6OmNsZWFyIHNocmlua3MgdGhlIGJhY2tp
bmcgc3RvcmUuCisgICAgICAgICAgICBwcm9wZXJ0aWVzLnJlc2l6ZSgwKTsKKyAgICAgICAgICAg
IHZhbHVlcy5jbGVhcigpOworICAgICAgICAgICAgc291cmNlLT5zdHJ1Y3R1cmUodm0pLT5mb3JF
YWNoUHJvcGVydHkodm0sIFsmXSAoY29uc3QgUHJvcGVydHlNYXBFbnRyeSYgZW50cnkpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICAgICAgICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoZW50cnkua2V5KTsKKyAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLmFwcGVu
ZChlbnRyeS5rZXkpOworICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmRXaXRoQ3Jhc2hPbk92
ZXJmbG93KHNvdXJjZS0+Z2V0RGlyZWN0KGVudHJ5Lm9mZnNldCkpOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIGNvdWxkIHB1dCBwcm9wZXJ0aWVzIGluIGEgYmF0Y2hpbmcgbWFubmVyIHRv
IGFjY2VsZXJhdGUgT2JqZWN0LmFzc2lnbiBtb3JlLgorICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUzNTgKKyAgICAgICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHByb3BlcnRpZXNbaV0uZ2V0
KCksIHZhbHVlcy5hdChpKSwgcHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICBvYmplY3RBc3NpZ25HZW5lcmljKGdsb2JhbE9iamVjdCwgdm0sIHRhcmdldCwgc291cmNl
KTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVRoaXMsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY29uc3RydWN0
b3IsIHVpbnQzMl90IGlubGluZUNhcGFjaXR5KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4
IDk5YzM5MjUxZDFmNTk5Y2NiNjEyMDFiMDVlYjA1ZjAxYWJhZGViMWQuLjhmNjRlZGMxOGNiNTI3
M2MyYWM5YjhlMjljNGFhZGZiYjEzMTlkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCkBAIC01Myw2ICs1Myw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgSlNBcnJheSosIChKU0dsb2Jh
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5
TmFtZXNPYmplY3QsIEpTQXJyYXkqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmpl
Y3RBc3NpZ25PYmplY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVRoaXMsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3Qg
aW5saW5lQ2FwYWNpdHkpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3Jl
YXRlUHJvbWlzZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVj
dG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUludGVybmFs
UHJvbWlzZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9y
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQzMjliZTVhNWZjOWQ3YTZiZDMzMTExN2Fh
MWNkMGE0M2UzYjlmNDIuLmFhN2M2MWU2MGFmNTA3ZWI5MTdlMzA2YmFiODUzN2MwZTg5ZTJlMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xNDU5LDYgKzE0NTksNyBAQCBjbGFzcyBQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2xl
YXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJ
bnZhbGlkYXRpb25Qb2ludDoKKyAgICAgICAgY2FzZSBPYmplY3RBc3NpZ246CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNh
dXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBmNmM5MWUyM2JmMDUyYWZkZTc0
ZTMyN2Q2NDhhYWJmOGEyNTFiYzgzLi4wZjliZGU2YTMxNWRhNzE3MmEzMGY2MTllZTJkMGI5YjQ2
MGUyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtNTAxLDYgKzUwMSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBD
cmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgQ3JlYXRl
QXN5bmNHZW5lcmF0b3I6CisgICAgY2FzZSBPYmplY3RBc3NpZ246CiAgICAgY2FzZSBPYmplY3RD
cmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVy
dHlOYW1lczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggNmFmMzYwMjYzZDFjMmQ4M2Y1NjIwOGFkYmI1MzY5MzdjNWJiMWYyNi4uYjU0
NDk2NGNlOGZjMDA1ZTBhNzc5Yjk3ZGE4ZTNkODA4N2JiZWViMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MDQ4LDYgKzE0MDQ4
LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0QXNzaWduKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgdGFyZ2V0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBzb3VyY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgR1BSUmVnIHRhcmdl
dEdQUiA9IHRhcmdldC5ncHIoKTsKKyAgICBHUFJSZWcgc291cmNlR1BSID0gc291cmNlLmdwcigp
OworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9i
amVjdEFzc2lnbk9iamVjdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwg
c291cmNlR1BSKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQo
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9k
ZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDIwODg1
OWRkNDVkNjhmYTVmNzNkNGFjOWQxNzE1MzhhMzZhY2Q3YjYuLjk4Yzc2MTZiOGZkMmZiZjVjNGRk
OGE1NzcxNTA4YWQyNjc5Zjk5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTE1NTIsNiArMTU1Miw3IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVUb1RoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdl
dE93blByb3BlcnR5TmFtZXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU9iamVjdEFzc2lnbihO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVQcm9taXNlKE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDAzZDI4NDczMTFmZWMxOTJiNjQ1NWI4Y2MzMmEwMzUxMDA4Mjkz
NGYuLjlkNDAzNjk2MTBkODllNDFlNTE2ZjZjNGE0MjVlNWZkNzEwMmExYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzI2OCw2ICszMjY4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RBc3NpZ246IHsK
KyAgICAgICAgY29tcGlsZU9iamVjdEFzc2lnbihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0
ZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNjRhMTMxNjI0MDE2MjJkYzE1OGJjYjEy
NmMzNGFkNDRhZTczZDZiLi4yZWE5NTE3N2I5YmY0NTY4NzE5NWJhM2RjYWJhZmI0YWVkZTcwNmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTM5ODQsNiArMzk4NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0QXNz
aWduOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RBc3NpZ24obm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAgICAgICAgIGNvbXBpbGVPYmpl
Y3RDcmVhdGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDY1NGNlYjQ4NDE4YzE3NjZjMWI3MGFmZDY4
YmM0Zjc1ZjAzNDE2NWQuLmExYTVmZDI0NGNmMjExMDMyNjQxOTdhNzZhZTMwYzdmNjBmNzllNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTIyMiw2ICsyMjIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJp
bmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxOdW1iZXJDb25zdHJ1Y3RvcjoKKyAgICBjYXNl
IE9iamVjdEFzc2lnbjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtl
eXM6CiAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNkMDg3MjgwODI3ZDJhZWY3
YzMyZWVkMmFmZDE4NjJmNGMzOWFkYzYuLjYwODUyMGUxZDk3YzkxNWFiY2I1ZTNjYjk4MjA3ZjYx
OWJlZDkzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTExMTMsNiArMTExMyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgY29tcGlsZUNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
T2JqZWN0QXNzaWduOgorICAgICAgICAgICAgY29tcGlsZU9iamVjdEFzc2lnbigpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAgICAgY29t
cGlsZU9iamVjdENyZWF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MDc2LDYgKzcwNzks
MTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQg
Y29tcGlsZU9iamVjdEFzc2lnbigpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUo
KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDA4MjRiNGQyZjkzNzdkMWJhY2YwYTVmNWJh
ODJjZDhhNjI4NWE1NDguLmZmNWYxOTI0NjkwZjYyZjQ4YzUxMzY1YjUyZTZjNTYzYjRlNjI4OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTU3
LDYgKzE1Nyw4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNp
YykKICAgICAgICAgcmV0dXJuICJSZWdFeHBUZXN0RmFzdEludHJpbnNpYyI7CiAgICAgY2FzZSBS
ZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiUmVnRXhwTWF0Y2hGYXN0
SW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEFzc2lnbkludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuICJPYmplY3RBc3NpZ25JbnRyaW5zaWMiOwogICAgIGNhc2UgT2JqZWN0Q3JlYXRlSW50cmlu
c2ljOgogICAgICAgICByZXR1cm4gIk9iamVjdENyZWF0ZUludHJpbnNpYyI7CiAgICAgY2FzZSBP
YmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBjYjQ0YzliZDU4NTk3ZDIzM2Q1Y2ZkZTkwMzgwYWY2
MWJmNGMyNjU5Li44ZTY4ZTdlNzRmYjc4Y2RiZDMzMjRjZmJmMGEyNWVkNmQyMGQ2ZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtOTQsNiArOTQsNyBA
QCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIFJlZ0V4cFRlc3RJbnRyaW5zaWMsCiAg
ICAgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMsCiAgICAgUmVnRXhwTWF0Y2hGYXN0SW50cmluc2lj
LAorICAgIE9iamVjdEFzc2lnbkludHJpbnNpYywKICAgICBPYmplY3RDcmVhdGVJbnRyaW5zaWMs
CiAgICAgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYywKICAgICBPYmplY3RHZXRQ
cm90b3R5cGVPZkludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCAwYjE5Y2NiNjQ3MDk3ZTc0YTJiMDVhNzg0YTg3YzU5YTE5ODEzNDNhLi5l
MGFhMGYzYWUzOTk2YTJmMjM5NjE1NDZjMDM4ZjM0ZWQ3ZTRhNDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yMTA3LDIyICsyMTA3LDIzIEBAIGJv
b2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVyCiAgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJs
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKSkKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkg
ewogICAgICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIFtdIChjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXImLCBQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZzZXQpIHsgfSk7Ci0gICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKSk7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQpCisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+Y2xlYXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2lu
dEZpcmUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwogICAgICAgICAgICAgc2xvdC5zZXRIaXQo
b2Zmc2V0KTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgfHwgIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgdGhpc09iamVjdC0+c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpKSk7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpCisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KS0+Y2xlYXIoKTsKICAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNl
dChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSkpOwotCi0gICAg
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKLSAgICAgICAgICAgIHRoaXNPYmplY3Qt
PmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFyKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHNsb3Quc2V0Q29uZmlndXJhYmxlTWlzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGRhYTlkODNiMDhjM2FmMGVmOTNhMDBj
YjUwMTA1YzgxOTg1YzhmY2YuLjMyNzUzNDQwYmY5MTkwYmI5MTRmYmNiN2IxMTgwYmNjNjNiMzlk
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCkBAIC0zODAsMTAgKzM4MCw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIC8vIFdlIHdhbnQgdGhlIHN0cnVjdHVyZSB0cmFu
c2l0aW9uIHdhdGNocG9pbnQgdG8gZmlyZSBhZnRlciB0aGlzIG9iamVjdCBoYXMgc3dpdGNoZWQg
c3RydWN0dXJlLgotICAgIC8vIFRoaXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9i
c2VydmUgaWYgdGhlIG5ldyBzdHJ1Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgotICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7Ci0KICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAg
ICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmli
dXRlcyk7CiAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CkBAIC0zOTUsOSArMzkx
LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAKICAgICAgICAgLy8gRklYTUU6IENoZWNr
IGF0dHJpYnV0ZXMgYWdhaW5zdCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZh
bHVlLiBDaGFuZ2luZyBHZXR0ZXJTZXR0ZXIgc2hvdWxkIHdvcmsgdy9vIHRyYW5zaXRpb24uCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQzNDIK
LSAgICAgICAgaWYgKG1vZGUgPT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5ICYmIChhdHRyaWJ1
dGVzICE9IGN1cnJlbnRBdHRyaWJ1dGVzIHx8IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nvck9yVmFsdWUpKSkKKyAgICAgICAgaWYgKG1vZGUg
PT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5ICYmIChhdHRyaWJ1dGVzICE9IGN1cnJlbnRBdHRy
aWJ1dGVzIHx8IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0
b21BY2Nlc3Nvck9yVmFsdWUpKSkgeworICAgICAgICAgICAgLy8gV2Ugd2FudCB0aGUgc3RydWN0
dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0IGhhcyBz
d2l0Y2hlZCBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBhZGFwdGl2ZSB3
YXRjaHBvaW50cyB0byBvYnNlcnZlIGlmIHRoZSBuZXcgc3RydWN0dXJlIGlzIHRoZSBvbmUgd2Ug
d2FudC4KKyAgICAgICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsICZkZWZlcnJlZFdhdGNocG9pbnRG
aXJlKSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzbG90LnNl
dEV4aXN0aW5nUHJvcGVydHkodGhpcywgb2Zmc2V0KTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQwNiw4ICs0MDUsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICBpZiAoKG1v
ZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZE5l
d1Byb3BlcnR5VHJhbnNpdGlvbigKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpLCAmZGVmZXJyZWRXYXRjaHBvaW50
RmlyZSk7CisgICAgLy8gV2Ugd2FudCB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2lu
dCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0IGhhcyBzd2l0Y2hlZCBzdHJ1Y3R1cmUuCisgICAg
Ly8gVGhpcyBhbGxvd3MgYWRhcHRpdmUgd2F0Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUgbmV3
IHN0cnVjdHVyZSBpcyB0aGUgb25lIHdlIHdhbnQuCisgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJl
KTsKKyAgICBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCwgc2xvdC5j
b250ZXh0KCksICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKICAgICAKICAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zm
c2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggOWNhNDRkMmM0NjdlYTU4N2Y4YjdiZTdkYzYxY2FmOTFmNjU4Y2Mx
My4uOTAyM2RjNTM2NTk5YjM4MzlhYWY0MmJjYWMwOThjZDI5MWM2ZmZhYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlN5bWJvbC5oIgpAQCAtNzUs
NyArNzYsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBpc0Zyb3plbiAgICAgICAgICAg
ICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4gICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICBpc0V4dGVuc2libGUgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVj
dG9ySXNFeHRlbnNpYmxlICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBpcyAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXMgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMiBPYmplY3RJc0ludHJpbnNpYwotICBhc3NpZ24g
ICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yQXNzaWduICAgICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBhc3NpZ24gICAgICAgICAgICAgICAgICAgIG9i
amVjdENvbnN0cnVjdG9yQXNzaWduICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMiBPYmplY3RBc3NpZ25JbnRyaW5zaWMKICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvclZhbHVlcyAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKICAgZW50cmllcyAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckVudHJp
ZXMgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZnJvbUVudHJpZXMg
ICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTI2Myw2ICsyNjQsNDMgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yS2V5cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShv
d25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENhY2hlZFByb3BlcnR5TmFt
ZXNLaW5kOjpLZXlzKSkpOwogfQogCit2b2lkIG9iamVjdEFzc2lnbkdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU09iamVjdCogdGFyZ2V0LCBKU09iamVjdCog
c291cmNlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIC8vIFtbR2V0T3duUHJvcGVydHlOYW1lc11dLCBbW0dldF1dIGV0Yy4gY291bGQgbW9kaWZ5
IHRhcmdldCBvYmplY3QgYW5kIGludmFsaWRhdGUgdGhpcyBhc3N1bXB0aW9uLgorICAgIC8vIEZv
ciBleGFtcGxlLCBbW0dldF1dIG9mIHNvdXJjZSBvYmplY3QgY291bGQgY29uZmlndXJlIHNldHRl
ciB0byB0YXJnZXQgb2JqZWN0LiBTbyBkaXNhYmxlIHRoZSBmYXN0IHBhdGguCisKKyAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5k
U3ltYm9scywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOworICAgIHNvdXJjZS0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0aWVzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Qcm9w
ZXJ0aWVzOyBqKyspIHsKKyAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVy
dGllc1tqXTsKKyAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKTsK
KworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzb3VyY2UsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAgIGJvb2wgaGFzUHJvcGVydHkg
PSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHNvdXJjZSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEpTVmFs
dWUgdmFsdWU7CisgICAgICAgIGlmIChMSUtFTFkoIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSkpCisgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS0+
Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVy
dHlTbG90KHRhcmdldCwgdHJ1ZSk7CisgICAgICAgIHRhcmdldC0+cHV0SW5saW5lKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0yOTQsMjkgKzMzMiw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBjYW5QZXJmb3JtRmFzdFByb3BlcnR5RW51
bWVyYXRpb25Gb3JPYmplY3RBc3NpZ24gPSBbXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNBbnlGb3JtT2ZHZXRP
d25Qcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogSW5kZXhlZCBwcm9wZXJ0aWVzIGNhbiBiZSBoYW5kbGVk
LgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODUzNTgKLSAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoc3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gQ2Fubm90IHBlcmZvcm0gZmFzdCBb
W1B1dF1dIHRvIHx0YXJnZXR8IGlmIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgfHNvdXJjZXwg
Y29udGFpbiAiX19wcm90b19fIi4KLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNV
bmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8oKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfTsKLQogICAgICAgICAgICAgaWYgKGNhblBlcmZvcm1GYXN0UHJvcGVydHlF
bnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbihzb3VyY2UtPnN0cnVjdHVyZSh2bSkpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gfHNvdXJjZXwgU3RydWN0dXJlIGRvZXMgbm90IGhhdmUgYW55IGdldHRl
cnMuIEFuZCB0YXJnZXQgY2FuIHBlcmZvcm0gZmFzdCBwdXQuCiAgICAgICAgICAgICAgICAgLy8g
U28gZW51bWVyYXRpbmcgcHJvcGVydGllcyBhbmQgcHV0dGluZyBwcm9wZXJ0aWVzIGFyZSBub24g
b2JzZXJ2YWJsZS4KQEAgLTMyOCw2ICszNDMsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICAgICAgICAgIC8vIHRoYXQgZW5kcyB1cCB0cmFuc2l0aW9uaW5nIHRoZSBzdHJ1Y3R1
cmUgdW5kZXJuZWF0aCB1cy4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM3CiAKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBmYXN0IHBhdGggaXMgdmVyeSBzaW1pbGFyIHRvIERGR09wZXJhdGlvbnMnIG9uZS4gQnV0
IGV4dHJhY3RpbmcgaXQgdG8gYSBmdW5jdGlvbiBjYXVzZWQgcGVyZm9ybWFuY2UKKyAgICAgICAg
ICAgICAgICAvLyByZWdyZXNzaW9uIGluIG9iamVjdC1hc3NpZ24tcmVwbGFjZS4gU2luY2UgdGhl
IGNvZGUgaXMgc21hbGwgYW5kIGZhc3QgcGF0aCwgd2Uga2VlcCBib3RoLgorCiAgICAgICAgICAg
ICAgICAgLy8gRG8gbm90IGNsZWFyIHNpbmNlIFZlY3Rvcjo6Y2xlYXIgc2hyaW5rcyB0aGUgYmFj
a2luZyBzdG9yZS4KICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnJlc2l6ZSgwKTsKICAgICAg
ICAgICAgICAgICB2YWx1ZXMuY2xlYXIoKTsKQEAgLTM1NSwzOCArMzczLDkgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIFtb
R2V0T3duUHJvcGVydHlOYW1lc11dLCBbW0dldF1dIGV0Yy4gY291bGQgbW9kaWZ5IHRhcmdldCBv
YmplY3QgYW5kIGludmFsaWRhdGUgdGhpcyBhc3N1bXB0aW9uLgotICAgICAgICAvLyBGb3IgZXhh
bXBsZSwgW1tHZXRdXSBvZiBzb3VyY2Ugb2JqZWN0IGNvdWxkIGNvbmZpZ3VyZSBzZXR0ZXIgdG8g
dGFyZ2V0IG9iamVjdC4gU28gZGlzYWJsZSB0aGUgZmFzdCBwYXRoLgogICAgICAgICB0YXJnZXRD
YW5QZXJmb3JtRmFzdFB1dCA9IGZhbHNlOwotCi0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBQcml2YXRl
U3ltYm9sTW9kZTo6RXhjbHVkZSk7Ci0gICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0aWVzLCBEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgb2JqZWN0QXNzaWduR2VuZXJp
YyhnbG9iYWxPYmplY3QsIHZtLCB0YXJnZXQsIHNvdXJjZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICAgICAgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVt
UHJvcGVydGllczsgaisrKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0aWVzW2pdOwotICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNQcml2
YXRlTmFtZSgpKTsKLQotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc291cmNlLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgICAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9w
ZXJ0eVNsb3Qoc291cmNlLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgaWYg
KCFoYXNQcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKLSAgICAg
ICAgICAgIGlmIChMSUtFTFkoIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCi0gICAg
ICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS0+
Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBwdXRQ
cm9wZXJ0eVNsb3QodGFyZ2V0LCB0cnVlKTsKLSAgICAgICAgICAgIHRhcmdldC0+cHV0SW5saW5l
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLSAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggNzRlMDdh
MDZjYzEzNmFhODBlOGU0N2UzYWEwYWZlOTZhZjAyMGU3OS4uMTIyYjc2YWFhMWU2ZGYzNWRkMzE0
NDQxNjVhZDY2Mjg1OGM2MmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC0xNjUsNiArMTY1LDcgQEAgSlNWYWx1ZSBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiwgY28KIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIEpTQXJyYXkqIG93blByb3BlcnR5
S2V5cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZSwgc3RkOjpvcHRpb25hbDxDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZD4p
OwogYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwordm9pZCBvYmplY3RBc3NpZ25HZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgVk0mLCBKU09iamVjdCogdGFyZ2V0LCBKU09iamVjdCogc291cmNlKTsKIAogSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvcklzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3RvcklubGluZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YzYzZmUyZTUyNjhiZGQ3YWY2ODAwOThjZDA2OWM1MzAyMmJlZDIwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3JJbmxpbmVzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FMV0FZU19JTkxJTkUgYm9vbCBjYW5QZXJmb3JtRmFzdFByb3BlcnR5RW51bWVyYXRpb25G
b3JPYmplY3RBc3NpZ24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzQW55Rm9y
bU9mR2V0T3duUHJvcGVydHlOYW1lcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8g
RklYTUU6IEluZGV4ZWQgcHJvcGVydGllcyBjYW4gYmUgaGFuZGxlZC4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzU4CisgICAgaWYgKGhhc0luZGV4
ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKHN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0cnVjdHVyZS0+aGFzUmVhZE9ubHlPckdl
dHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIENhbm5vdCBwZXJm
b3JtIGZhc3QgW1tQdXRdXSB0byB8dGFyZ2V0fCBpZiB0aGUgcHJvcGVydHkgbmFtZXMgb2YgdGhl
IHxzb3VyY2V8IGNvbnRhaW4gIl9fcHJvdG9fXyIuCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzVW5k
ZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA5YjJlMTVh
MWEwNmQ4ZTg4OGQwYTBiMTEyZmY1MDY3YTIxNDQzMmYzLi40OWFjNzQ1ZDY1Y2ZlNDNlNGQ3YTJh
NTE0ODkyZjQ4NWRmMDBkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKQEAgLTYxLDE2ICs2MSw2IEBAIHN0YXRpYyBTaW5nbGVTbG90VHJhbnNpdGlv
bldlYWtPd25lciYgc2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXIoKQogICAgIHJldHVybiBv
d25lcjsKIH0KIAotaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpz
aW5nbGVUcmFuc2l0aW9uKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNVc2luZ1NpbmdsZVNsb3Qo
KSk7Ci0gICAgaWYgKFdlYWtJbXBsKiBpbXBsID0gdGhpcy0+d2Vha0ltcGwoKSkgewotICAgICAg
ICBpZiAoaW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSkKLSAgICAgICAgICAgIHJldHVy
biBqc0Nhc3Q8U3RydWN0dXJlKj4oaW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGlubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZTo6c2V0U2luZ2xlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBB
U1NFUlQoaXNVc2luZ1NpbmdsZVNsb3QoKSk7CkBAIC04OSwxNSArNzksNiBAQCBib29sIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6Y29udGFpbnMoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5z
aWduZWQgYXR0cmlidQogICAgIHJldHVybiBtYXAoKS0+Z2V0KFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZTo6SGFzaDo6S2V5KHJlcCwgYXR0cmlidXRlcywgdHJhbnNpdGlvbktpbmQpKTsKIH0KIAot
aW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpnZXQoVW5pcXVlZFN0
cmluZ0ltcGwqIHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcywgVHJhbnNpdGlvbktpbmQgdHJhbnNp
dGlvbktpbmQpIGNvbnN0Ci17Ci0gICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKLSAgICAg
ICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwotICAgICAgICBy
ZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1l
ID09IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkgPT0g
YXR0cmlidXRlcyAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5zaXRpb25L
aW5kKSA/IHRyYW5zaXRpb24gOiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gbWFwKCktPmdl
dChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleShyZXAsIGF0dHJpYnV0ZXMsIHRy
YW5zaXRpb25LaW5kKSk7Ci19Ci0KIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBpZiAoaXNVc2luZ1NpbmdsZVNs
b3QoKSkgewpAQCAtNDc1LDM3ICs0NTYsNiBAQCBQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1h
dGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYgdm0sIGJvb2wgc2V0UHJvcGVydHlUYWJsZQogICAg
IHJldHVybiB0YWJsZTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYg
b2Zmc2V0KQotewotICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0KLSAgICBvZmZzZXQgPSBpbnZhbGlkT2Zm
c2V0OwotCi0gICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24g
PSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldCh1aWQsIGF0dHJpYnV0ZXMsIFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uKSkgewotICAgICAgICB2YWxpZGF0ZU9mZnNldChl
eGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9u
LT5pbmxpbmVDYXBhY2l0eSgpKTsKLSAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9u
LT50cmFuc2l0aW9uT2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247
Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQotewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVh
ZCgpKTsKLSAgICByZXR1cm4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIG9mZnNldCk7
Ci19Ci0KLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
KQotewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2spOwot
ICAgIHJldHVybiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChz
dHJ1Y3R1cmUsIHVpZCwgYXR0cmlidXRlcywgb2Zmc2V0KTsKLX0KLQogYm9vbCBTdHJ1Y3R1cmU6
OmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZShWTSYgdm0sIEpTT2JqZWN0KiBiYXNlKSBjb25z
dAogewogICAgIEFTU0VSVChiYXNlLT5zdHJ1Y3R1cmUodm0pID09IHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA5ZjIwNmM3ZWU4ZjhlNjhkNDE5
YmJhNzFmYzhhYzMyNGM0NGFmOTdhLi5mMjU1Y2FjNzRkM2M2M2UyYjAzODhkNjUyYjI1ZDY4YTk5
ZGY4ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAt
NTUsNiArNTUsNyBAQCBjbGFzcyBVbmlxdWVkU3RyaW5nSW1wbDsKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBEZWZlckdDOworY2xhc3MgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKQEAgLTEwOSwyMCArMTEwLDYg
QEAgY2xhc3MgU3RydWN0dXJlRmlyZURldGFpbCBmaW5hbCA6IHB1YmxpYyBGaXJlRGV0YWlsIHsK
ICAgICBjb25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogfTsKIAotY2xhc3MgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZmluYWwgOiBwdWJsaWMgRGVmZXJyZWRX
YXRjaHBvaW50RmlyZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUpOwotcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKFZNJiwgU3RydWN0
dXJlKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKCkgZmluYWw7Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0IGZpbmFsOwotCi0gICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFN0cnVj
dHVyZSogbV9zdHJ1Y3R1cmU7Ci19OwotCiBjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IHNob3J0SW52YWxpZE9mZnNldCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSAtIDE7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MTZfdCB1c2VSYXJlRGF0YUZsYWcgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCk7CkBAIC0xOTIsNyArMTc5LDcgQEAgY2xhc3MgU3RydWN0dXJlIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGFkZE5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmLCBQdXRQcm9w
ZXJ0eVNsb3Q6OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
Q29uY3VycmVudGx5KFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zm
c2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlTmV3UHJv
cGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9m
ZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxw
dHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGQwNmJlNGUxNzk1
NmRkNGJkYWM0OWI4ZmZmZDFhODYzMDhmNmQzYmEuLjNlY2Q4MzM5NTUwYmExZWE4ZGZlODRhYmQ5
NGE5YTQ3MjI5YWI5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTM3LDYgKzM3LDIwIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitjbGFzcyBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBmaW5hbCA6
IHB1YmxpYyBEZWZlcnJlZFdhdGNocG9pbnRGaXJlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk7CitwdWJsaWM6Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+RGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUoKSBmaW5hbDsKKworICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQorCitwcml2YXRlOgorICAgIGNv
bnN0IFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Cit9OworCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKHZtLnN0cnVjdHVyZVN0cnVjdHVy
ZSk7CkBAIC0zNTgsNyArMzcyLDEwIEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6ZGlkUmVwbGFj
ZVByb3BlcnR5KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoTElLRUxZKCFoYXNS
YXJlRGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IHJh
cmVEYXRhKCktPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy5nZXQob2Zmc2V0KTsKKyAgICBh
dXRvKiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CisgICAgaWYgKExJS0VMWShyYXJlRGF0
YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLmlzTnVsbFN0b3JhZ2UoKSkpCisgICAgICAg
IHJldHVybjsKKyAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSByYXJlRGF0YS0+bV9yZXBsYWNlbWVu
dFdhdGNocG9pbnRTZXRzLmdldChvZmZzZXQpOwogICAgIGlmIChMSUtFTFkoIXNldCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBzZXQtPmZpcmVBbGwodm0oKSwgIlByb3BlcnR5IGRpZCBnZXQgcmVw
bGFjZWQiKTsKQEAgLTM3MCw3ICszODcsOSBAQCBpbmxpbmUgV2F0Y2hwb2ludFNldCogU3RydWN0
dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChQcm9wZXJ0eU9mZnNldAogICAg
IFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9IHRyeVJhcmVEYXRhKCk7CiAgICAgaWYgKCFy
YXJlRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJhcmVEYXRhLT5t
X3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMuZ2V0KG9mZnNldCk7CisgICAgaWYgKCFyYXJlRGF0
YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLmlzTnVsbFN0b3JhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMuZ2V0KG9mZnNldCk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERldGFpbHNGdW5j
PgpAQCAtNjg5LDQgKzcwOCw1NCBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblBy
b3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIHJldHVy
biBub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KHZtLCBzdHJ1Y3R1cmUsIHRyYW5zaXRpb25LaW5k
KTsKIH0KIAoraW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCkKK3sKKyAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOworICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworCisgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsK
KworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQodWlkLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9u
S2luZDo6UHJvcGVydHlBZGRpdGlvbikpIHsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3Rp
bmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5s
aW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJh
bnNpdGlvbk9mZnNldCgpOworICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAg
IH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxh
dGlvblRocmVhZCgpKTsKKyAgICByZXR1cm4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGlu
Z1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMs
IG9mZnNldCk7Cit9CisKK0FMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJuIGFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgdWlkLCBhdHRyaWJ1dGVzLCBvZmZzZXQp
OworfQorCitpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmds
ZVRyYW5zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsK
KyAgICBpZiAoV2Vha0ltcGwqIGltcGwgPSB0aGlzLT53ZWFrSW1wbCgpKSB7CisgICAgICAgIGlm
IChpbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxTdHJ1Y3R1cmUqPihpbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjpnZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcywg
VHJhbnNpdGlvbktpbmQgdHJhbnNpdGlvbktpbmQpIGNvbnN0Cit7CisgICAgaWYgKGlzVXNpbmdT
aW5nbGVTbG90KCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJh
bnNpdGlvbigpOworICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90
cmFuc2l0aW9uUHJvcGVydHlOYW1lID09IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJv
cGVydHlBdHRyaWJ1dGVzKCkgPT0gYXR0cmlidXRlcyAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9u
S2luZCgpID09IHRyYW5zaXRpb25LaW5kKSA/IHRyYW5zaXRpb24gOiBudWxscHRyOworICAgIH0K
KyAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6Oktl
eShyZXAsIGF0dHJpYnV0ZXMsIHRyYW5zaXRpb25LaW5kKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dURi93
dGYvSGFzaE1hcC5oCmluZGV4IDE0ZTJiYzM4OTcyMTMwYmM4MzJhYzlhNThiN2Q1ZGU5ZjRmN2Jk
ZjYuLjI2YWRkYzQxZTQ3NTE2OGI4MTE4NzU1YTY0MzRiMWUwNjNmMGQ4YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgK
QEAgLTEzNyw2ICsxMzcsOCBAQCBjbGFzcyBIYXNoTWFwIGZpbmFsIHsKICAgICAvLyBTYW1lIGFz
IGdldCgpLCBidXQgYWdncmVzc2l2ZWx5IGlubGluZWQuCiAgICAgTWFwcGVkUGVla1R5cGUgaW5s
aW5lR2V0KGNvbnN0IEtleVR5cGUmKSBjb25zdDsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c051bGxTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzTnVsbFN0b3JhZ2UoKTsgfQor
CiAgICAgLy8gUmVwbGFjZXMgdGhlIHZhbHVlIGJ1dCBub3QgdGhlIGtleSBpZiB0aGUga2V5IGlz
IGFscmVhZHkgcHJlc2VudC4KICAgICAvLyBSZXR1cm4gdmFsdWUgaW5jbHVkZXMgYm90aCBhbiBp
dGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLAogICAgIC8vIGFuZCBhbiBpc05ld0VudHJ5IGJv
b2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgZW50cnkgd2FzIGFkZGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4
IDJhMjcyODA2MGY1YmViZmM3MzFmZTlhMjg3YmM5NjU3OGI0ZTMyNGMuLjQ2ZTViYjk1YjhhMTYy
YTkzM2ExZTI1NzNlZGRlNjcwZDQ0NTAyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTg2LDYgKzg2LDcgQEAg
Y2xhc3MgSGFzaFNldCBmaW5hbCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFQ+IGl0ZXJhdG9yIGZpbmQoY29uc3QgVCYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBib29sIGNvbnRhaW5zKGNv
bnN0IFQmKSBjb25zdDsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bGxTdG9yYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLmlzTnVsbFN0b3JhZ2UoKTsgfQogCiAgICAgLy8gVGhlIHJl
dHVybiB2YWx1ZSBpbmNsdWRlcyBib3RoIGFuIGl0ZXJhdG9yIHRvIHRoZSBhZGRlZCB2YWx1ZSdz
IGxvY2F0aW9uLAogICAgIC8vIGFuZCBhbiBpc05ld0VudHJ5IGJvb2wgdGhhdCBpbmRpY2F0ZXMg
aWYgaXQgaXMgYSBuZXcgb3IgZXhpc3RpbmcgZW50cnkgaW4gdGhlIHNldC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgK
aW5kZXggYmU3ZWNkOWZiNzZiYjExZWU4MzA0MWZiNDc0NWVjYzNlNDlhMDdjNi4uNTE1MGVkNmEy
Njc2M2ZhOTI5YTlkNDg1ZDFjZGI0Yzk1YjdkZjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTUwMCw2
ICs1MDAsOCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFi
bGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4gVmFsdWVUeXBlKiBsb29rdXAoY29uc3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29u
c3QgVCYpOwogCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bGxTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gIW1fdGFibGU7IH0KKwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIHZv
aWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3Q7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4OWU1Zjg4MTEwZGI3NDIy
ZGRiYTM0ZTA1NzlkZTlhNWZjYmVmY2M2Li5hZWM0OWY5OGFjOTU2N2I5OTMxMjZkODE1ZDVhZDNm
Y2RjZjNhMzQ2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA3LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgT2JqZWN0LmFzc2lnbiBh
bmQgcHV0RGlyZWN0SW50ZXJuYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29iamVjdC1hc3NpZ24tcmVwbGFjZS5qczog
QWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0
LWFzc2lnbi10cmFuc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorCiAyMDIxLTA2
LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb2Zm
IGRhdGEgSUNzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L29iamVjdC1hc3NpZ24tcmVwbGFjZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1hc3NpZ24tcmVwbGFjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTIwMjFmZTMxMzM0NWFmZmM4ZmFlNWQ2
NzFjNDIzMTZjMDFlNTYyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3Mvb2JqZWN0LWFzc2lnbi1yZXBsYWNlLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRl
c3QodGFyZ2V0LCBzb3VyY2UpCit7CisgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7
Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIHRhcmdldCA9IHt9OwordmFyIHNvdXJjZSA9IHsK
KyAgICBhOjQyLCBiOjQyLCBjOjQyCit9OworZm9yICh2YXIgaSA9IDA7IGkgPCAyZTY7ICsraSkK
KyAgICB0ZXN0KHRhcmdldCwgc291cmNlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL29iamVjdC1hc3NpZ24tdHJhbnNpdGlvbi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL29iamVjdC1hc3NpZ24tdHJhbnNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTA1NjE2Y2FhYjUx
OTZjY2FhMDY5NTExN2M0ZTNhZDE4NGZjNTFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsMTEg
QEAKK2Z1bmN0aW9uIHRlc3QodGFyZ2V0LCBzb3VyY2UpCit7CisgICAgT2JqZWN0LmFzc2lnbih0
YXJnZXQsIHNvdXJjZSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIHNvdXJjZSA9IHsKKyAg
ICBhOjQyLCBiOjQyLCBjOjQyCit9OworZm9yICh2YXIgaSA9IDA7IGkgPCAyZTY7ICsraSkKKyAg
ICB0ZXN0KHt9LCBzb3VyY2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432873</attachid>
            <date>2021-07-05 00:15:48 -0700</date>
            <delta_ts>2021-07-05 09:59:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227677-20210705001547.patch</filename>
            <type>text/plain</type>
            <size>60403</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YjI4MzJhN2RhMzE2NDNmM2ZhM2FlYmQwZDgxZDJjZDUyMmE4Yjk2Li4zZTNiYTAzZGUwZjRiYzAy
MzlkM2E0ZTA4YjNmYzc4MTNhZGU0YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3QuYXNzaWduIGFuZCBwdXREaXJlY3RJ
bnRlcm5hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXByb3ZlcyBPYmplY3QuYXNzaWduIHBlcmZvcm1hbmNlIChhbmQgdGhpcyBy
ZXF1aXJlcyBwdXREaXJlY3RJbnRlcm5hbCBpbXByb3ZlbWVudCkuCisKKyAgICAgICAgMS4gT2Jq
ZWN0LmFzc2lnbiBpcyBoYW5kbGVkIGJ5IERGRyAvIEZUTCBhcyBPYmplY3RBc3NpZ24gbm9kZQor
ICAgICAgICAyLiBXZSBmb3VuZCB0aGF0IHB1dERpcmVjdEludGVybmFsIGlzIHN1Ym9wdGltYWwu
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBzZXZlcmFsIGJvdHRsZW5lY2tzLiBUaGV5IGFyZSBzdXBlciBj
cml0aWNhbCBmcm9tIHRoZSBtZWFzdXJlbWVudCBvZgorICAgICAgICAgICBtaWNyb2JlbmNobWFy
a3MuCisgICAgICAgICAgICAyLjEuIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGlzIG5vdCBmcmVlLiBXZSBzaG91bGQgZG8g
dGhhdCBvbmx5IHdoZW4gd2UgbmVlZCBpdC4KKyAgICAgICAgICAgIDIuMi4gQmVmb3JlIHIyNzc2
MjAsIHdlIGFyZSBjaGVja2luZyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMncyBudWxscHRy
IGFuZCB0aGF0IHdhcyBmYXN0LiBCdXQgYWZ0ZXIgdGhhdCwgd2UgYXJlIGFsd2F5cworICAgICAg
ICAgICAgICAgICBjYWxsaW5nIEhhc2hNYXA6OmdldCwgYW5kIGl0IGlzIG5vdCBpbmxpbmVkLiBU
aGlzIG1lYW5zIHRoYXQgaWYgd2UgaGF2ZSBTdHJ1Y3R1cmVSYXJlRGF0YSwgd2UgYXJlIGFsd2F5
cyBjYWxsaW5nIEhhc2hNYXA6OmdldAorICAgICAgICAgICAgICAgICBldmVuIHRob3VnaCB0aGVy
ZSBpcyBubyBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMgc2V0LiBUaGlzIHBhdGNoIGFkZHMg
SGFzaE1hcDo6aXNOdWxsU3RvcmFnZSB0byBhdm9pZCB0aGlzIGNhbGwgYnkgaW5saW5lbHkKKyAg
ICAgICAgICAgICAgICAgY2hlY2sgdGhpcyB2aWEgYExJS0VMWShtX3JlcGxhY2VtZW50V2F0Y2hw
b2ludFNldHMuaXNOdWxsU3RvcmFnZSgpKWAuCisgICAgICAgICAgICAyLjMuIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSBoYXMgdmVyeSBjaGVhcCBm
YXN0IHBhdGggYW5kIHdlIG11c3QgaW5saW5lIHRoZW0gdG8gZ2V0IHBlcmZvcm1hbmNlIGJlbmVm
aXQKKyAgICAgICAgICAgICAgICAgZm9yIG1ham9yIHNpbmdsZS10cmFuc2l0aW9uIGNhc2UuCisK
KyAgICAgICAgQWRkZWQgbWljcm9iZW5jaG1hcmtzIHNob3cgc2lnbmlmaWNhbnQgcGVyZm9ybWFu
Y2UgaW1wcm92ZW1lbnRzLiBBbmQgU3BlZWRvbWV0ZXIyIHNob3dzIDAuNiAtIDEuMCUgaW1wcm92
ZW1lbnQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAgICAgICAgICAgIG9iamVjdC1h
c3NpZ24tdHJhbnNpdGlvbiAgICAgIDEwNS4yNTM5Ky0wLjI5NzAgICAgIF4gICAgIDg4LjgwNDYr
LTAuMjAyOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTg1MnggZmFzdGVyCisgICAgICAgICAgICBv
YmplY3QtYXNzaWduLXJlcGxhY2UgICAgICAgICAxMTYuMTU2OCstMC4wOTA1ICAgICBeICAgICA3
NS4wNjczKy0wLjA2NTggICAgICAgIF4gZGVmaW5pdGVseSAxLjU0NzR4IGZhc3RlcgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXYXRjaHBv
aW50RmlyZTo6ZmlyZUFsbFNsb3cpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRG
aXJlOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXYXRjaHBvaW50RmlyZTo6fkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OkRlZmVycmVk
V2F0Y2hwb2ludEZpcmU6OkRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOgorICAgICAgICAoSlNDOjpE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKToKKyAgICAgICAgKEpTQzo6RmlyZURldGFp
bDo6RmlyZURldGFpbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpcmVEZXRhaWw6On5GaXJl
RGV0YWlsKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklU
X09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEFzc2lnbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RB
c3NpZ24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6
aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RBc3NpZ25HZW5lcmljKToK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3RvcklubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmNhblBlcmZvcm1GYXN0UHJvcGVy
dHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRy
YW5zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkUmVwbGFjZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRyYW5zaXRpb24g
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmdldCBjb25z
dCk6CisKIDIwMjEtMDctMDQgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
IAogICAgICAgICBBY3RpdmVTY3JhdGNoQnVmZmVyU2NvcGUgc2hvdWxkIHRha2UgdGhlIGJ1ZmZl
ciBhcyBhcmd1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBjNzE4Yjc3ODY1MDUwZWE3YTRjNjEzOGNmYzYwZjYzODVlOTEw
MDlkLi4wYjAzYjEyMGRkMzBkMWY3NTYyYjFhMzdkYWUwNTQ2MzY1ZjRjZjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTA3LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgT2JqZWN0LmFzc2lnbiBhbmQgcHV0RGlyZWN0SW50
ZXJuYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAqIHd0Zi9I
YXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjppc051bGxTdG9yYWdlIGNvbnN0
KToKKwogMjAyMS0wNy0wMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIE9ubHkgdXNlIFdlYkdMIG9uIE1ldGFsIGJ5IGRlZmF1bHQgb24gc2Fm
ZSB2ZXJzaW9ucyBvZiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MTg0
NDcwYTg0NDcwZDZjZmRmNTJmODM4MGJmNTM2N2MxOWI5NmZkLi5mZmYwMjIzYjE5YjI4MjJmYjZl
NTBlMmRlMmU3Y2JiNTU3NDA5MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTg4Nyw2ICsxODg3LDcgQEAKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVh
dGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1
NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzcx
MTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc0MTY2
RTI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc0MTY2RDI2OTEyQkM3MDBD
ODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CiAJCUUzNzUwQ0M4MjUw
MkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBB
QUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzODM1MDBBMjM5MEQ5M0IwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMx
NkQgLyogV2FzbUdsb2JhbC5oICovOyB9OwpAQCAtNTE0OSw2ICs1MTUwLDcgQEAKIAkJRTM2Q0M5
NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdENvbnN0cnVj
dG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc1MENDNzI1MDJF
ODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVB
bmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Nzc5Nyw2ICs3Nzk5LDcgQEAKIAkJCQkxNDJEMzkzODEwM0U0NTYwMDA3RENCNTIgLyogTnVtZXJp
Y1N0cmluZ3MuaCAqLywKIAkJCQlCQzI2ODBDNjBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29u
c3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4MEM3MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RD
b25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RD
b25zdHJ1Y3RvcklubGluZXMuaCAqLywKIAkJCQlGRTQ4RTYzNzFFQjExOEFEMDA1RDdBOTYgLyog
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgKi8sCiAJCQkJRkU0OEU2MzYxRUIxMTg4RjAw
NUQ3QTk2IC8qIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCAqLywKIAkJCQlFM0MyOTVEQzFF
RDJDQkFBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQu
aCAqLywKQEAgLTEwNDE1LDYgKzEwNDE4LDcgQEAKIAkJCQk3OUFDMzBGRjFGOTk1MzY0MDA0ODRG
RDcgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ0NTBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5NkI3MzIyMUJEQTA4RUYwMDMzMUI4NCAvKiBPYmplY3RDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAvKiBP
YmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNDhFNjM4MUVC
MTE4RDIwMDVEN0E5NiAvKiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFM0MyOTVERDFFRDJDQkRBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNFNDBBMUI2MThCNjYw
MEM4MEUxRSAvKiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKaW5kZXggOTEzM2M4
MDgyYmJkYjI3NzA2ZDU3OWY2Yzg4ZjU3Nzc2YTc0N2QyNi4uOTRmMDcxMDUxZmIyOWFjZGI2OWY5
Njg0YjRhNGZjOGIzZWRiZTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcApAQCAtMTk0LDIwICsxOTQsOSBAQCB2b2lkIElubGluZVdhdGNocG9p
bnRTZXQ6OmZyZWVGYXQoKQogICAgIGZhdCgpLT5kZXJlZigpOwogfQogCi1EZWZlcnJlZFdhdGNo
cG9pbnRGaXJlOjpEZWZlcnJlZFdhdGNocG9pbnRGaXJlKFZNJiB2bSkKLSAgICA6IG1fdm0odm0p
Ci0gICAgLCBtX3dhdGNocG9pbnRzVG9GaXJlKENsZWFyV2F0Y2hwb2ludCkKK3ZvaWQgRGVmZXJy
ZWRXYXRjaHBvaW50RmlyZTo6ZmlyZUFsbFNsb3coKQogewotfQotCi1EZWZlcnJlZFdhdGNocG9p
bnRGaXJlOjp+RGVmZXJyZWRXYXRjaHBvaW50RmlyZSgpCi17Ci19Ci0KLXZvaWQgRGVmZXJyZWRX
YXRjaHBvaW50RmlyZTo6ZmlyZUFsbCgpCi17Ci0gICAgaWYgKG1fd2F0Y2hwb2ludHNUb0ZpcmUu
c3RhdGUoKSA9PSBJc1dhdGNoZWQpCi0gICAgICAgIG1fd2F0Y2hwb2ludHNUb0ZpcmUuZmlyZUFs
bChtX3ZtLCAqdGhpcyk7CisgICAgbV93YXRjaHBvaW50c1RvRmlyZS5maXJlQWxsKG1fdm0sICp0
aGlzKTsKIH0KIAogdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjp0YWtlV2F0Y2hwb2ludHNU
b0ZpcmUoV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHNUb0ZpcmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAppbmRleCAxM2I4NjdkOWJjNmIyNmQwZGQ1ZGZi
YTUxZTIxYmUxMzBlY2RiNWY0Li45NjA4MzgzMGUxNjFhZjE2YjE2NTljZmYyNWZiZjM5ZDI4MDUz
NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2lu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKQEAg
LTQ2LDE0ICs0Niw4IEBAIGNsYXNzIEZpcmVEZXRhaWwgewogICAgIHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QpID0gZGVsZXRlOwogICAgIAogcHVibGljOgotICAgIEZpcmVEZXRhaWwoKQotICAg
IHsKLSAgICB9Ci0gICAgCi0gICAgdmlydHVhbCB+RmlyZURldGFpbCgpCi0gICAgewotICAgIH0K
LSAgICAKKyAgICBGaXJlRGV0YWlsKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfkZpcmVEZXRh
aWwoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dCA9IDA7CiB9OwogCkBAIC01MzQsMTQgKzUyOCwyMiBAQCBjbGFzcyBJbmxpbmVXYXRjaHBvaW50
U2V0IHsKIGNsYXNzIERlZmVycmVkV2F0Y2hwb2ludEZpcmUgOiBwdWJsaWMgRmlyZURldGFpbCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7CiBwdWJs
aWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVmZXJyZWRXYXRjaHBvaW50RmlyZShWTSYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIH5EZWZlcnJlZFdhdGNocG9pbnRGaXJlKCkgb3ZlcnJpZGU7
CisgICAgRGVmZXJyZWRXYXRjaHBvaW50RmlyZShWTSYgdm0pCisgICAgICAgIDogbV92bSh2bSkK
KyAgICAgICAgLCBtX3dhdGNocG9pbnRzVG9GaXJlKENsZWFyV2F0Y2hwb2ludCkKKyAgICB7Cisg
ICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0YWtlV2F0Y2hwb2ludHNUb0ZpcmUo
V2F0Y2hwb2ludFNldCopOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbCgpOwor
ICAgIHZvaWQgZmlyZUFsbCgpCisgICAgeworICAgICAgICBpZiAobV93YXRjaHBvaW50c1RvRmly
ZS5zdGF0ZSgpID09IElzV2F0Y2hlZCkKKyAgICAgICAgICAgIGZpcmVBbGxTbG93KCk7CisgICAg
fQogCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IG92ZXJyaWRlID0gMDsK
IHByaXZhdGU6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsU2xvdygpOworCiAg
ICAgVk0mIG1fdm07CiAgICAgV2F0Y2hwb2ludFNldCBtX3dhdGNocG9pbnRzVG9GaXJlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAppbmRleCBlMzQzM2Y0YWVhN2ZjODM4NzcwYjMzZmI2YTEzYmFhMjNl
MTJhMTE3Li40YjVmMGQ2MjAwOWVlNjkwYmRkZjQzMzAxMDIyOGFkMGE0YWU0Njc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC0zMTIzLDYgKzMxMjMsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IGJyZWFrOwogCisgICAgY2FzZSBPYmplY3RBc3NpZ246IHsKKyAgICAgICAgY2xvYmJlcldvcmxk
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAg
ICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVl
KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZmM4MWY2OTA0Mjk5MzNj
ODk2YmQxMzc1MjQ3ZGVhODQyMTA1YjRjOC4uYjQ4N2JjMDVmNGUzZWRkZTg4ZjE4ZWI1NWRlMDhm
ZmM3YWNhOWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTI5MzAsNiArMjkzMCwyNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNp
YwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE9i
amVjdEFzc2lnbkludHJpbnNpYzogeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICE9IDMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgLy8gVG9PYmplY3QgaXMgaWRlbXBv
dGVudCBpZiBpdCBzdWNjZWVkcy4gUGx1cywgaXQgaXMgbm9uLW9ic2VydmFibGUgZXhjZXB0IGZv
ciB0aGUgY2FzZSB0aGF0IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uIEFuZCB3aGVuIHRoZSBleGNl
cHRpb24gaXMgdGhyb3duLAorICAgICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIERGRyAvIEZUTC4g
UGx1cywgd2Uga2VlcCBvcmRlcmluZyBvZiB0aGVzZSB0d28gVG9PYmplY3QgYmVjYXVzZSBjbG9i
YmVyaXppbmcgcnVsZSBzYXlzIGNsb2JiZXJUb3AuIFNvLAorICAgICAgICAgICAgLy8gd2UgY2Fu
IHNheSBleGl0T0sgZm9yIGVhY2ggVG9PYmplY3QuCisgICAgICAgICAgICB1bnNpZ25lZCBlcnJv
clN0cmluZ0luZGV4ID0gVUlOVDMyX01BWDsKKyAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IGFk
ZFRvR3JhcGgoVG9PYmplY3QsIE9wSW5mbyhlcnJvclN0cmluZ0luZGV4KSwgT3BJbmZvKFNwZWNO
b25lKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxLCByZWdp
c3Rlck9mZnNldCkpKTsKKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgIE5vZGUqIHNvdXJjZSA9IGFkZFRvR3Jh
cGgoVG9PYmplY3QsIE9wSW5mbyhlcnJvclN0cmluZ0luZGV4KSwgT3BJbmZvKFNwZWNOb25lKSwg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygyLCByZWdpc3Rlck9m
ZnNldCkpKTsKKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoT2JqZWN0QXNzaWduLCBFZGdl
KHRhcmdldCwgS25vd25DZWxsVXNlKSwgRWRnZShzb3VyY2UsIEtub3duQ2VsbFVzZSkpOworICAg
ICAgICAgICAgc2V0UmVzdWx0KHRhcmdldCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2UgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6IHsK
ICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDIpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCAwMTI0Y2RlODdiYmQwMTdiMDEzYjA2MDYwYzc5NGIwNzc2YWU0NjEzLi45
ZDEwMDRmZTUzZjNkNDQ3ZGYxMDNmYWNhMGQyZTEwZWM0ZmY1ZjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTY3OSw2ICsxNjc5LDExIEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIE9i
amVjdEFzc2lnbjogeworICAgICAgICBjbG9iYmVyVG9wKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIE9iamVjdFVzZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBhZGNiNzI5ZGQwZDNlMjBiMGZiNjFlZjQ0
NTllZGY3MWVhMDQyOWQyLi41M2FiZmVhOTFkZjIyNGJkNDgyNTUwZGJlNTc4MmQ1OWNhZGQ5OGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zNjQsNiArMzY0
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3Jl
YXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIENyZWF0ZUFz
eW5jR2VuZXJhdG9yOgorICAgIGNhc2UgT2JqZWN0QXNzaWduOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5
TmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBiNmRhYmI0Y2FmZGNhNDE0NjZhN2U5ODJjN2M0NmJlZjk3ZjA0MmFkLi4zNzliYmRlZWI5NTY3
MTM4NDY5MDM0M2YzN2MzODYzOTUwZTg3MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4OTIsNiArMjg5Miw3IEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgT2JqZWN0QXNzaWduOgogICAgICAg
ICAgICAgYnJlYWs7CiAjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgZGVmYXVs
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGY5ZjI2NWUw
NGUzYjg3N2RkYzhhZTdkOWViZDNmZGVkNjM2ZDMwNjguLjBhNTkzZTU2YTc4NmQzOTNmZDg3YjY1
NTdkMzUyZTNmMGQ0MDZhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcApAQCAtMTM1LDYgKzEzNSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAg
ICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgorICAgIGNhc2UgVG9PYmplY3Q6
CiAgICAgY2FzZSBSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3k6CiAgICAgY2FzZSBSZWdFeHBN
YXRjaEZhc3RHbG9iYWw6CiAgICAgICAgIHJlc3VsdCA9IEV4aXRzRm9yRXhjZXB0aW9uczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBhMDEwYjU1MmQwYTI5MDUx
YzI0NTVmMmZlN2JkOGU1MDk3NmI0OWJkLi41ZDRiMTdmYjM3NjUyODg4OThhOTMwOGNmNjY1ODE0
MjE3YzUwYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0y
OTIsNiArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KENoZWNrTm90SlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGFyc2VJbnQs
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRQcm90b3R5
cGVPZiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE9iamVj
dEFzc2lnbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE9iamVjdENyZWF0ZSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE9iamVjdEtleXMsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RHZXRPd25Q
cm9wZXJ0eU5hbWVzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBjYTYwNGFkNTY2NjBm
OWQwZDM0ZThlNWUxMmIwMjkwMWQwOTUzMmMwLi45YmY3NGJlMzM5ZWZhMDJhMTg4YWRmYzkyMDJl
ODVkYTFiYTg5NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlICJKU1dlYWtNYXBJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9y
SW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZUludC5o
IgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmgiCkBAIC0zMDQsNiArMzA0LDY4
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3Qs
IEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldCwgSlNPYmplY3QqIHNvdXJjZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYm9vbCB0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCA9IGpz
RHluYW1pY0Nhc3Q8SlNGaW5hbE9iamVjdCo+KHZtLCB0YXJnZXQpICYmIHRhcmdldC0+Y2FuUGVy
Zm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byh2bSkgJiYgdGFyZ2V0LT5pc1N0cnVjdHVy
ZUV4dGVuc2libGUodm0pOworCisgICAgaWYgKHRhcmdldENhblBlcmZvcm1GYXN0UHV0KSB7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCA4PiBwcm9wZXJ0aWVzOwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciB2YWx1ZXM7CisgICAgICAgIGlmICghc291cmNl
LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+cmVp
ZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNh
blBlcmZvcm1GYXN0UHJvcGVydHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbihzb3VyY2UtPnN0
cnVjdHVyZSh2bSkpKSB7CisgICAgICAgICAgICAvLyB8c291cmNlfCBTdHJ1Y3R1cmUgZG9lcyBu
b3QgaGF2ZSBhbnkgZ2V0dGVycy4gQW5kIHRhcmdldCBjYW4gcGVyZm9ybSBmYXN0IHB1dC4KKyAg
ICAgICAgICAgIC8vIFNvIGVudW1lcmF0aW5nIHByb3BlcnRpZXMgYW5kIHB1dHRpbmcgcHJvcGVy
dGllcyBhcmUgbm9uIG9ic2VydmFibGUuCisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJdCBkb2Vz
bid0IHNlZW0gbGlrZSB3ZSBzaG91bGQgaGF2ZSB0byBkbyB0aGlzIGluIHR3byBwaGFzZXMsIGJ1
dAorICAgICAgICAgICAgLy8gd2UncmUgcnVubmluZyBpbnRvIGNyYXNoZXMgd2hlcmUgaXQgYXBw
ZWFycyB0aGF0IHNvdXJjZSBpcyB0cmFuc2l0aW9uaW5nCisgICAgICAgICAgICAvLyB1bmRlciB1
cywgYW5kIGV2ZW4gZW5kcyB1cCBpbiBhIHN0YXRlIHdoZXJlIGl0IGhhcyBhIG51bGwgYnV0dGVy
Zmx5LiBNeQorICAgICAgICAgICAgLy8gbGVhZGluZyBoeXBvdGhlc2lzIGhlcmUgaXMgdGhhdCB3
ZSBmaXJlIHNvbWUgdmFsdWUgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludAorICAgICAgICAgICAgLy8g
dGhhdCBlbmRzIHVwIHRyYW5zaXRpb25pbmcgdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoIHVzLgor
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NzgzNworCisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBmYXN0IHBhdGggaXMgdmVyeSBzaW1p
bGFyIHRvIE9iamVjdENvbnN0cnVjdG9yJyBvbmUuIEJ1dCBleHRyYWN0aW5nIGl0IHRvIGEgZnVu
Y3Rpb24gY2F1c2VkIHBlcmZvcm1hbmNlCisgICAgICAgICAgICAvLyByZWdyZXNzaW9uIGluIG9i
amVjdC1hc3NpZ24tcmVwbGFjZS4gU2luY2UgdGhlIGNvZGUgaXMgc21hbGwgYW5kIGZhc3QgcGF0
aCwgd2Uga2VlcCBib3RoLgorCisgICAgICAgICAgICAvLyBEbyBub3QgY2xlYXIgc2luY2UgVmVj
dG9yOjpjbGVhciBzaHJpbmtzIHRoZSBiYWNraW5nIHN0b3JlLgorICAgICAgICAgICAgcHJvcGVy
dGllcy5yZXNpemUoMCk7CisgICAgICAgICAgICB2YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAgICAg
IHNvdXJjZS0+c3RydWN0dXJlKHZtKS0+Zm9yRWFjaFByb3BlcnR5KHZtLCBbJl0gKGNvbnN0IFBy
b3BlcnR5TWFwRW50cnkmIGVudHJ5KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50
cnkuYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5p
c1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICAgICAgcHJvcGVydGllcy5hcHBlbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhzb3VyY2UtPmdldERpcmVjdChlbnRy
eS5vZmZzZXQpKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBwdXQgcHJvcGVy
dGllcyBpbiBhIGJhdGNoaW5nIG1hbm5lciB0byBhY2NlbGVyYXRlIE9iamVjdC5hc3NpZ24gbW9y
ZS4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg1MzU4CisgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5
U2xvdCh0YXJnZXQsIHRydWUpOworICAgICAgICAgICAgICAgIHRhcmdldC0+cHV0T3duRGF0YVBy
b3BlcnR5KHZtLCBwcm9wZXJ0aWVzW2ldLmdldCgpLCB2YWx1ZXMuYXQoaSksIHB1dFByb3BlcnR5
U2xvdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgb2JqZWN0QXNzaWduR2VuZXJpYyhnbG9i
YWxPYmplY3QsIHZtLCB0YXJnZXQsIHNvdXJjZSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVUaGlzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA5OWMzOTI1MWQxZjU5OWNjYjYxMjAxYjA1ZWIw
NWYwMWFiYWRlYjFkLi44ZjY0ZWRjMThjYjUyNzNjMmFjOWI4ZTI5YzRhYWRmYmIxMzE5ZDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNTMsNiArNTMs
NyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9iamVjdEdldE93blByb3Bl
cnR5TmFtZXMsIEpTQXJyYXkqLCAoSlNHbG9iYQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCBKU0FycmF5KiwgKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk9iamVjdENyZWF0ZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2Jq
ZWN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCosIEpTT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVUaGlzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogY29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFjaXR5KSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVByb21pc2UsIEpTQ2VsbCosIChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFByb21pc2UsIEpTQ2VsbCosIChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCA0MzI5YmU1YTVmYzlkN2E2YmQzMzExMTdhYTFjZDBhNDNlM2I5ZjQyLi5hYTdjNjFlNjBhZjUw
N2ViOTE3ZTMwNmJhYjg1MzdjMGU4OWUyZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
MTQ1OSw2ICsxNDU5LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAgIGNhc2Ug
RGF0YVZpZXdTZXQ6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CisgICAgICAgIGNh
c2UgT2JqZWN0QXNzaWduOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1
Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggZjZjOTFlMjNiZjA1MmFmZGU3NGUzMjdkNjQ4YWFiZjhhMjUxYmM4My4uMGY5YmRl
NmEzMTVkYTcxNzJhMzBmNjE5ZWUyZDBiOWI0NjBlMmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUwMSw2ICs1MDEsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0
ZUdlbmVyYXRvcjoKICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgIGNhc2UgT2Jq
ZWN0QXNzaWduOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoK
ICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDJkYTNjNDNjYzhkNzI3YjNh
MWE2NWJhYjc3YjMxOTNmM2IzNjE5ZmIuLjc4MmUxYTViZDAxZmMwYjdkYmYzYmExYTA2ZDM2Nzll
NGU5MGVhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC0xNDA0OSw2ICsxNDA0OSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQog
ICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEFzc2lnbihOb2Rl
KiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRhcmdldCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc291cmNlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKworICAgIEdQUlJlZyB0YXJnZXRHUFIgPSB0YXJnZXQuZ3ByKCk7CisgICAgR1BS
UmVnIHNvdXJjZUdQUiA9IHNvdXJjZS5ncHIoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CisgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCAyMDg4NTlkZDQ1ZDY4ZmE1ZjczZDRhYzlkMTcxNTM4YTM2
YWNkN2I2Li45OGM3NjE2YjhmZDJmYmY1YzRkZDhhNTc3MTUwOGFkMjY3OWY5OWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTUyLDYg
KzE1NTIsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3VHlw
ZWRBcnJheShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqKTsKKyAg
ICB2b2lkIGNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU9iamVj
dENyZWF0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcyhOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAwM2QyODQ3MzEx
ZmVjMTkyYjY0NTViOGNjMzJhMDM1MTAwODI5MzRmLi45ZDQwMzY5NjEwZDg5ZTQxZTUxNmY2YzRh
NDI1ZTVmZDcxMDJhMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyNjgsNiArMzI2OCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgT2JqZWN0QXNzaWduOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RBc3NpZ24o
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7
CiAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggYjY0YTEzMTYyNDAxNjIyZGMxNThiY2IxMjZjMzRhZDQ0YWU3M2Q2Yi4uMmVhOTUxNzdiOWJm
NDU2ODcxOTViYTNkY2FiYWZiNGFlZGU3MDZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zOTg0LDYgKzM5ODQsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEFzc2lnbjogeworICAgICAgICBjb21waWxlT2JqZWN0
QXNzaWduKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE9iamVjdENy
ZWF0ZTogewogICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKG5vZGUpOwogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCA2NTRjZWI0ODQxOGMxNzY2YzFiNzBhZmQ2OGJjNGY3NWYwMzQxNjVkLi5hMWE1ZmQyNDRjZjIx
MTAzMjY0MTk3YTc2YWUzMGM3ZjYwZjc5ZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjIsNiArMjIyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsT2JqZWN0Q29u
c3RydWN0b3I6CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgY2FzZSBDYWxs
TnVtYmVyQ29uc3RydWN0b3I6CisgICAgY2FzZSBPYmplY3RBc3NpZ246CiAgICAgY2FzZSBPYmpl
Y3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgT2JqZWN0R2V0T3duUHJv
cGVydHlOYW1lczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCAzZDA4NzI4MDgyN2QyYWVmN2MzMmVlZDJhZmQxODYyZjRjMzlhZGM2Li42MDg1
MjBlMWQ5N2M5MTVhYmNiNWUzY2I5ODIwN2Y2MTliZWQ5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTEzLDYgKzExMTMsOSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9iamVjdEFzc2lnbjoKKyAgICAgICAgICAgIGNv
bXBpbGVPYmplY3RBc3NpZ24oKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9i
amVjdENyZWF0ZToKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNzA3Niw2ICs3MDc5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RBc3NpZ24oKQorICAgIHsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlv
bk9iamVjdEFzc2lnbk9iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSk7CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRl
eCAwODI0YjRkMmY5Mzc3ZDFiYWNmMGE1ZjViYTgyY2Q4YTYyODVhNTQ4Li5mZjVmMTkyNDY5MGY2
MmY0OGM1MTM2NWI1MmU2YzU2M2I0ZTYyODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTE1Nyw2ICsxNTcsOCBAQCBjb25zdCBjaGFyKiBpbnRy
aW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiUmVnRXhwVGVz
dEZhc3RJbnRyaW5zaWMiOwogICAgIGNhc2UgUmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljOgogICAg
ICAgICByZXR1cm4gIlJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYyI7CisgICAgY2FzZSBPYmplY3RB
c3NpZ25JbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0QXNzaWduSW50cmluc2ljIjsK
ICAgICBjYXNlIE9iamVjdENyZWF0ZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJPYmplY3RD
cmVhdGVJbnRyaW5zaWMiOwogICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJp
bnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggY2I0
NGM5YmQ1ODU5N2QyMzNkNWNmZGU5MDM4MGFmNjFiZjRjMjY1OS4uOGU2OGU3ZTc0ZmI3OGNkYmQz
MzI0Y2ZiZjBhMjVlZDZkMjBkNmQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmgKQEAgLTk0LDYgKzk0LDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsK
ICAgICBSZWdFeHBUZXN0SW50cmluc2ljLAogICAgIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljLAog
ICAgIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYywKKyAgICBPYmplY3RBc3NpZ25JbnRyaW5zaWMs
CiAgICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAogICAgIE9iamVjdEdldE93blByb3BlcnR5TmFt
ZXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggODFlNzZhNWUzOWI3MTc4
ZTY2MzcyYWExYjcwMDRlOTllOWJjOWJkOS4uOWE3ODU0YTI2ZDE4NGU0MzAwNzczYTE4NTNjMjA4
MjA1NjI1NWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cApAQCAtMjEzMywyMiArMjEzMywyMyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAg
ICAgICAgc2xvdC5zZXROb25jb25maWd1cmFibGUoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwogCiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7Ci0gICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVj
dHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBb
XSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3Bl
cnR5T2Zmc2V0KSB7IH0pOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVCghaXNW
YWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSkp
OworICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICAgICAg
ICAgIHRoaXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFyKCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJl
KTsKICAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnNldFN0
cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNl
dChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSkpOworICAgICAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICAgICAgICAgIHRoaXNP
YmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFyKCk7CiAgICAgICAgIH0KLQot
ICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcykpKTsKLQotICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZz
ZXQpCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5j
bGVhcigpOwogICAgIH0gZWxzZQogICAgICAgICBzbG90LnNldENvbmZpZ3VyYWJsZU1pc3MoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApp
bmRleCA3NzIzMTQ0OGRkNGUxMWE0MDg5ZDY1ODE1NzgzNzRkYzQ0YjMzODc1Li4zNzY2MjA5OTA4
NTU0NDI4YmRhY2QxNWZkYWZlNmZlNDhlNDgzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtMzgwLDEwICszODAsNiBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICAv
LyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZpcmUgYWZ0
ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0cnVjdHVyZS4KLSAgICAvLyBUaGlzIGFsbG93
cyBhZGFwdGl2ZSB3YXRjaHBvaW50cyB0byBvYnNlcnZlIGlmIHRoZSBuZXcgc3RydWN0dXJlIGlz
IHRoZSBvbmUgd2Ugd2FudC4KLSAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwotCiAgICAgdW5z
aWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0s
IHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewpAQCAtMzk1LDkgKzM5MSwxMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZQogCiAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBhdHRyaWJ1dGVzIGFnYWluc3QgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZS4gQ2hhbmdpbmcgR2V0dGVyU2V0dGVyIHNo
b3VsZCB3b3JrIHcvbyB0cmFuc2l0aW9uLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQyCi0gICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eSAmJiAoYXR0cmlidXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JP
clZhbHVlKSkpCisgICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSAm
JiAoYXR0cmlidXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlKSkpIHsKKyAgICAg
ICAgICAgIC8vIFdlIHdhbnQgdGhlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnQgdG8g
ZmlyZSBhZnRlciB0aGlzIG9iamVjdCBoYXMgc3dpdGNoZWQgc3RydWN0dXJlLgorICAgICAgICAg
ICAgLy8gVGhpcyBhbGxvd3MgYWRhcHRpdmUgd2F0Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUg
bmV3IHN0cnVjdHVyZSBpcyB0aGUgb25lIHdlIHdhbnQuCisgICAgICAgICAgICBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZt
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0
dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSkpOwotICAgICAgICBlbHNlCisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNl
dCk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MDYsOCArNDA1LDEwIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lCiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVj
dHVyZUV4dGVuc2libGUodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oCi0gICAgICAg
IHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0LCBzbG90LmNv
bnRleHQoKSwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOworICAgIC8vIFdlIHdhbnQgdGhlIHN0
cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnQgdG8gZmlyZSBhZnRlciB0aGlzIG9iamVjdCBo
YXMgc3dpdGNoZWQgc3RydWN0dXJlLgorICAgIC8vIFRoaXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNo
cG9pbnRzIHRvIG9ic2VydmUgaWYgdGhlIG5ldyBzdHJ1Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50
LgorICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVk
V2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CisgICAgbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpLCAmZGVmZXJyZWRXYXRjaHBvaW50
RmlyZSk7CiAgICAgCiAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKICAgICBBU1NFUlQobmV3
U3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDljYTQ0ZDJjNDY3
ZWE1ODdmOGI3YmU3ZGM2MWNhZjkxZjY1OGNjMTMuLjkwMjNkYzUzNjU5OWIzODM5YWFmNDJiY2Fj
MDk4Y2QyOTFjNmZmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0
dGVyZmx5LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIK
ICNpbmNsdWRlICJTeW1ib2wuaCIKQEAgLTc1LDcgKzc2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9i
amVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2kKICAgaXNGcm96ZW4gICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRnJv
emVuICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXNFeHRlbnNpYmxl
ICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXMgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RD
b25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIg
T2JqZWN0SXNJbnRyaW5zaWMKLSAgYXNzaWduICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25z
dHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAg
YXNzaWduICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiAgICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIgT2JqZWN0QXNzaWduSW50cmluc2ljCiAg
IHZhbHVlcyAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGVudHJpZXMgICAgICAgICAgICAg
ICAgICAgb2JqZWN0Q29uc3RydWN0b3JFbnRyaWVzICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCiAgIGZyb21FbnRyaWVzICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCkBAIC0yNjMs
NiArMjY0LDQzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3Rvcktl
eXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwg
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpFeGNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZDo6S2V5cykpKTsKIH0KIAordm9pZCBv
YmplY3RBc3NpZ25HZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
SlNPYmplY3QqIHRhcmdldCwgSlNPYmplY3QqIHNvdXJjZSkKK3sKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBbW0dldE93blByb3BlcnR5TmFtZXNd
XSwgW1tHZXRdXSBldGMuIGNvdWxkIG1vZGlmeSB0YXJnZXQgb2JqZWN0IGFuZCBpbnZhbGlkYXRl
IHRoaXMgYXNzdW1wdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwgW1tHZXRdXSBvZiBzb3VyY2Ug
b2JqZWN0IGNvdWxkIGNvbmZpZ3VyZSBzZXR0ZXIgdG8gdGFyZ2V0IG9iamVjdC4gU28gZGlzYWJs
ZSB0aGUgZmFzdCBwYXRoLgorCisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyh2bSwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIFByaXZhdGVTeW1ib2xNb2RlOjpF
eGNsdWRlKTsKKyAgICBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhzb3VyY2UsIGdsb2JhbE9iamVjdCwgcHJvcGVydGllcywgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZTo6SW5jbHVkZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHByb3BlcnR5TmFtZSA9IHByb3BlcnRpZXNbal07CisgICAgICAgIEFTU0VSVCghcHJv
cGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
c291cmNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkp
OworICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdl
dE93blByb3BlcnR5U2xvdChzb3VyY2UsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
aWYgKCFoYXNQcm9wZXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2xv
dC5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAoTElLRUxZ
KCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQorICAgICAgICAgICAgdmFsdWUgPSBz
bG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAg
ICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJnZXQsIHRydWUpOworICAgICAg
ICB0YXJnZXQtPnB1dElubGluZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1
dFByb3BlcnR5U2xvdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgfQorfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0
b3JBc3NpZ24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjk0LDI5ICsz
MzIsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JBc3NpZ24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1
dG8gY2FuUGVyZm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2JqZWN0QXNzaWduID0gW10g
KFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzQW55Rm9ybU9mR2V0T3duUHJvcGVydHlOYW1lcygpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IEluZGV4
ZWQgcHJvcGVydGllcyBjYW4gYmUgaGFuZGxlZC4KLSAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzU4Ci0gICAgICAgICAgICAgICAg
aWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQ3Vz
dG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIC8vIENhbm5vdCBwZXJmb3JtIGZhc3QgW1tQdXRdXSB0byB8dGFyZ2V0fCBpZiB0aGUgcHJv
cGVydHkgbmFtZXMgb2YgdGhlIHxzb3VyY2V8IGNvbnRhaW4gIl9fcHJvdG9fXyIuCi0gICAgICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRp
bmdPcmlnaW5hbFByb3RvKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH07Ci0KICAgICAgICAgICAg
IGlmIChjYW5QZXJmb3JtRmFzdFByb3BlcnR5RW51bWVyYXRpb25Gb3JPYmplY3RBc3NpZ24oc291
cmNlLT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgICAgIC8vIHxzb3VyY2V8IFN0cnVj
dHVyZSBkb2VzIG5vdCBoYXZlIGFueSBnZXR0ZXJzLiBBbmQgdGFyZ2V0IGNhbiBwZXJmb3JtIGZh
c3QgcHV0LgogICAgICAgICAgICAgICAgIC8vIFNvIGVudW1lcmF0aW5nIHByb3BlcnRpZXMgYW5k
IHB1dHRpbmcgcHJvcGVydGllcyBhcmUgbm9uIG9ic2VydmFibGUuCkBAIC0zMjgsNiArMzQzLDkg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICAvLyB0aGF0IGVuZHMg
dXAgdHJhbnNpdGlvbmluZyB0aGUgc3RydWN0dXJlIHVuZGVybmVhdGggdXMuCiAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzgzNwog
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZmFzdCBwYXRoIGlzIHZlcnkgc2ltaWxh
ciB0byBERkdPcGVyYXRpb25zJyBvbmUuIEJ1dCBleHRyYWN0aW5nIGl0IHRvIGEgZnVuY3Rpb24g
Y2F1c2VkIHBlcmZvcm1hbmNlCisgICAgICAgICAgICAgICAgLy8gcmVncmVzc2lvbiBpbiBvYmpl
Y3QtYXNzaWduLXJlcGxhY2UuIFNpbmNlIHRoZSBjb2RlIGlzIHNtYWxsIGFuZCBmYXN0IHBhdGgs
IHdlIGtlZXAgYm90aC4KKwogICAgICAgICAgICAgICAgIC8vIERvIG5vdCBjbGVhciBzaW5jZSBW
ZWN0b3I6OmNsZWFyIHNocmlua3MgdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgICAgICAgICAgICAg
cHJvcGVydGllcy5yZXNpemUoMCk7CiAgICAgICAgICAgICAgICAgdmFsdWVzLmNsZWFyKCk7CkBA
IC0zNTUsMzggKzM3Myw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1
Y3RvckFzc2lnbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBbW0dldE93blByb3BlcnR5TmFtZXNdXSwgW1tHZXRd
XSBldGMuIGNvdWxkIG1vZGlmeSB0YXJnZXQgb2JqZWN0IGFuZCBpbnZhbGlkYXRlIHRoaXMgYXNz
dW1wdGlvbi4KLSAgICAgICAgLy8gRm9yIGV4YW1wbGUsIFtbR2V0XV0gb2Ygc291cmNlIG9iamVj
dCBjb3VsZCBjb25maWd1cmUgc2V0dGVyIHRvIHRhcmdldCBvYmplY3QuIFNvIGRpc2FibGUgdGhl
IGZhc3QgcGF0aC4KICAgICAgICAgdGFyZ2V0Q2FuUGVyZm9ybUZhc3RQdXQgPSBmYWxzZTsKLQot
ICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzQW5kU3ltYm9scywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwotICAgICAg
ICBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UsIGds
b2JhbE9iamVjdCwgcHJvcGVydGllcywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSk7
CisgICAgICAgIG9iamVjdEFzc2lnbkdlbmVyaWMoZ2xvYmFsT2JqZWN0LCB2bSwgdGFyZ2V0LCBz
b3VyY2UpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAg
ICAgIHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51bVByb3BlcnRpZXM7IGorKykgewotICAgICAgICAg
ICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKLSAgICAgICAgICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KTsKLSAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBzb3VyY2Ut
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHNvdXJjZSwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKLSAgICAgICAgICAgIGlmICghaGFzUHJvcGVydHkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoc2xvdC5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWU7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCFzbG90LmlzVGFp
bnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQotICAgICAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRW
YWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwgdHJ1ZSk7Ci0g
ICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGFyZ2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oCmluZGV4IDc0ZTA3YTA2Y2MxMzZhYTgwZThlNDdlM2FhMGFmZTk2YWYw
MjBlNzkuLjEyMmI3NmFhYTFlNmRmMzVkZDMxNDQ0MTY1YWQ2NjI4NThjNjJjNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAt
MTY1LDYgKzE2NSw3IEBAIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGNvCiBKU1ZhbHVlIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0Kik7CiBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUsIHN0ZDo6b3B0aW9u
YWw8Q2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ+KTsKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKK3ZvaWQgb2Jq
ZWN0QXNzaWduR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFZNJiwgSlNPYmplY3QqIHRhcmdldCwg
SlNPYmplY3QqIHNvdXJjZSk7CiAKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29u
c3RydWN0b3JJcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM2M2ZlMmU1MjY4YmRk
N2FmNjgwMDk4Y2QwNjljNTMwMjJiZWQyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk9iamVjdENvbnN0
cnVjdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGJvb2wgY2FuUGVy
Zm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2JqZWN0QXNzaWduKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RydWN0dXJl
LT50eXBlSW5mbygpLm92ZXJyaWRlc0FueUZvcm1PZkdldE93blByb3BlcnR5TmFtZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBJbmRleGVkIHByb3BlcnRpZXMgY2Fu
IGJlIGhhbmRsZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTM1OAorICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0N1
c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAvLyBDYW5ub3QgcGVyZm9ybSBmYXN0IFtbUHV0XV0gdG8gfHRhcmdldHwg
aWYgdGhlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSB8c291cmNlfCBjb250YWluICJfX3Byb3RvX18i
LgorICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5n
T3JpZ2luYWxQcm90bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggOWIyZTE1YTFhMDZkOGU4ODhkMGEwYjExMmZmNTA2N2EyMTQ0
MzJmMy4uNDlhYzc0NWQ2NWNmZTQzZTRkN2EyYTUxNDg5MmY0ODVkZjAwZDU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC02MSwxNiArNjEsNiBA
QCBzdGF0aWMgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXImIHNpbmdsZVNsb3RUcmFuc2l0
aW9uV2Vha093bmVyKCkKICAgICByZXR1cm4gb3duZXI7CiB9CiAKLWlubGluZSBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgIGlmIChXZWFrSW1wbCogaW1wbCA9
IHRoaXMtPndlYWtJbXBsKCkpIHsKLSAgICAgICAgaWYgKGltcGwtPnN0YXRlKCkgPT0gV2Vha0lt
cGw6OkxpdmUpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PFN0cnVjdHVyZSo+KGltcGwtPmpz
VmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBpbmxp
bmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldFNpbmdsZVRyYW5zaXRpb24oU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwpA
QCAtODksMTUgKzc5LDYgQEAgYm9vbCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNvbnRhaW5z
KFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnUKICAgICByZXR1cm4gbWFw
KCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleShyZXAsIGF0dHJpYnV0
ZXMsIHRyYW5zaXRpb25LaW5kKSk7CiB9CiAKLWlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb25LaW5kKSBjb25zdAotewotICAgIGlmIChp
c1VzaW5nU2luZ2xlU2xvdCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHNp
bmdsZVRyYW5zaXRpb24oKTsKLSAgICAgICAgcmV0dXJuICh0cmFuc2l0aW9uICYmIHRyYW5zaXRp
b24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9PSByZXAgJiYgdHJhbnNpdGlvbi0+dHJhbnNp
dGlvblByb3BlcnR5QXR0cmlidXRlcygpID09IGF0dHJpYnV0ZXMgJiYgdHJhbnNpdGlvbi0+dHJh
bnNpdGlvbktpbmQoKSA9PSB0cmFuc2l0aW9uS2luZCkgPyB0cmFuc2l0aW9uIDogbnVsbHB0cjsK
LSAgICB9Ci0gICAgcmV0dXJuIG1hcCgpLT5nZXQoU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpI
YXNoOjpLZXkocmVwLCBhdHRyaWJ1dGVzLCB0cmFuc2l0aW9uS2luZCkpOwotfQotCiB2b2lkIFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiAgICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKQEAgLTQ3NSwzNyArNDU2LDYgQEAg
UHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUoVk0mIHZt
LCBib29sIHNldFByb3BlcnR5VGFibGUKICAgICByZXR1cm4gdGFibGU7CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1w
bChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQg
YXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKLXsKLSAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OwotCi0gICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLQotICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0JlZW5EaWN0aW9uYXJ5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKFN0
cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5nZXQodWlkLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbikp
IHsKLSAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9u
T2Zmc2V0KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgICAg
IG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwotICAgICAg
ICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRy
OwotfQotCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKLXsKLSAg
ICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LnVpZCgpLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwotfQotCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKLSAgICByZXR1cm4gYWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCB1aWQsIGF0dHJpYnV0ZXMsIG9m
ZnNldCk7Ci19Ci0KIGJvb2wgU3RydWN0dXJlOjpob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUo
Vk0mIHZtLCBKU09iamVjdCogYmFzZSkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZS0+c3RydWN0
dXJlKHZtKSA9PSB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKaW5kZXggOWYyMDZjN2VlOGY4ZTY4ZDQxOWJiYTcxZmM4YWMzMjRjNDRhZjk3YS4uZjI1NWNh
Yzc0ZDNjNjNlMmIwMzg4ZDY1MmIyNWQ2OGE5OWRmOGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgVW5pcXVlZFN0
cmluZ0ltcGw7CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGVmZXJHQzsKK2NsYXNzIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOwogY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheURhdGE7CkBAIC0xMDksMjAgKzExMCw2IEBAIGNsYXNzIFN0cnVjdHVyZUZpcmVEZXRhaWwg
ZmluYWwgOiBwdWJsaWMgRmlyZURldGFpbCB7CiAgICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKIH07CiAKLWNsYXNzIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlIGZpbmFsIDogcHVibGljIERlZmVycmVkV2F0Y2hwb2ludEZpcmUgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKTsK
LXB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZShWTSYsIFN0cnVjdHVyZSopOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSgpIGZpbmFsOwotICAg
IAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCBmaW5hbDsKLQotICAgIGNv
bnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0K
LQotcHJpdmF0ZToKLSAgICBjb25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwotfTsKLQogY2xh
c3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6
bWF4KCkgLSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgdXNlUmFyZURhdGFGbGFn
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpOwpAQCAtMTkyLDcgKzE3OSw3
IEBAIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGROZXdQcm9wZXJ0eVRy
YW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVydHlTbG90OjpDb250ZXh0ID0gUHV0UHJvcGVy
dHlTbG90OjpVbmtub3duQ29udGV4dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlPZmZzZXQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaAppbmRleCBkMDZiZTRlMTc5NTZkZDRiZGFjNDliOGZmZmQxYTg2MzA4ZjZkM2Jh
Li4zZWNkODMzOTU1MGJhMWVhOGRmZTg0YWJkOTRhOWE0NzIyOWFiOWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0zNyw2ICsz
NywyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUgZmluYWwgOiBwdWJsaWMgRGVmZXJyZWRXYXRjaHBvaW50Rmly
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUpOworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgfkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKCkgZmluYWw7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsK
KworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmU7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwor
fTsKKwogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8m
IHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogewogICAg
IEFTU0VSVCh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwpAQCAtMzU4LDcgKzM3MiwxMCBAQCBpbmxp
bmUgdm9pZCBTdHJ1Y3R1cmU6OmRpZFJlcGxhY2VQcm9wZXJ0eShQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCiB7CiAgICAgaWYgKExJS0VMWSghaGFzUmFyZURhdGEoKSkpCiAgICAgICAgIHJldHVybjsK
LSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSByYXJlRGF0YSgpLT5tX3JlcGxhY2VtZW50V2F0Y2hw
b2ludFNldHMuZ2V0KG9mZnNldCk7CisgICAgYXV0byogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0
YSgpOworICAgIGlmIChMSUtFTFkocmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0
cy5pc051bGxTdG9yYWdlKCkpKQorICAgICAgICByZXR1cm47CisgICAgV2F0Y2hwb2ludFNldCog
c2V0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy5nZXQob2Zmc2V0KTsK
ICAgICBpZiAoTElLRUxZKCFzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgc2V0LT5maXJlQWxs
KHZtKCksICJQcm9wZXJ0eSBkaWQgZ2V0IHJlcGxhY2VkIik7CkBAIC0zNzAsNyArMzg3LDkgQEAg
aW5saW5lIFdhdGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6cHJvcGVydHlSZXBsYWNlbWVudFdhdGNo
cG9pbnRTZXQoUHJvcGVydHlPZmZzZXQKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEg
PSB0cnlSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiByYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLmdl
dChvZmZzZXQpOworICAgIGlmICghcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0
cy5pc051bGxTdG9yYWdlKCkpCisgICAgICAgIHJldHVybiByYXJlRGF0YS0+bV9yZXBsYWNlbWVu
dFdhdGNocG9pbnRTZXRzLmdldChvZmZzZXQpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZXRhaWxzRnVuYz4KQEAgLTY4OSw0ICs3MDgsNTQgQEAgaW5saW5l
IFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwKICAgICByZXR1cm4gbm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyh2
bSwgc3RydWN0dXJlLCB0cmFuc2l0aW9uS2luZCk7CiB9CiAKK2lubGluZSBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKwor
ICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CisKKyAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVu
RGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChTdHJ1Y3R1
cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0
KHVpZCwgYXR0cmlidXRlcywgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb24pKSB7Cisg
ICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNl
dCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZz
ZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsKKyAgICAgICAgcmV0
dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgcmV0dXJuIGFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCitBTFdBWVNfSU5MSU5F
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQorewor
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2spOworICAgIHJl
dHVybiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1
cmUsIHVpZCwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzaW5nbGVUcmFuc2l0aW9uKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNVc2luZ1NpbmdsZVNsb3QoKSk7CisgICAgaWYgKFdlYWtJbXBsKiBpbXBsID0gdGhp
cy0+d2Vha0ltcGwoKSkgeworICAgICAgICBpZiAoaW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6
TGl2ZSkKKyAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8U3RydWN0dXJlKj4oaW1wbC0+anNWYWx1
ZSgpLmFzQ2VsbCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBs
KiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb25LaW5k
KSBjb25zdAoreworICAgIGlmIChpc1VzaW5nU2luZ2xlU2xvdCgpKSB7CisgICAgICAgIFN0cnVj
dHVyZSogdHJhbnNpdGlvbiA9IHNpbmdsZVRyYW5zaXRpb24oKTsKKyAgICAgICAgcmV0dXJuICh0
cmFuc2l0aW9uICYmIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9PSByZXAg
JiYgdHJhbnNpdGlvbi0+dHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcygpID09IGF0dHJpYnV0
ZXMgJiYgdHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9PSB0cmFuc2l0aW9uS2luZCkgPyB0
cmFuc2l0aW9uIDogbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG1hcCgpLT5nZXQoU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXkocmVwLCBhdHRyaWJ1dGVzLCB0cmFuc2l0aW9u
S2luZCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCAxNGUyYmMzODk3
MjEzMGJjODMyYWM5YTU4YjdkNWRlOWY0ZjdiZGY2Li4yNmFkZGM0MWU0NzUxNjhiODExODc1NWE2
NDM0YjFlMDYzZjBkOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCkBAIC0xMzcsNiArMTM3LDggQEAgY2xhc3MgSGFz
aE1hcCBmaW5hbCB7CiAgICAgLy8gU2FtZSBhcyBnZXQoKSwgYnV0IGFnZ3Jlc3NpdmVseSBpbmxp
bmVkLgogICAgIE1hcHBlZFBlZWtUeXBlIGlubGluZUdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7
CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdWxsU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbC5pc051bGxTdG9yYWdlKCk7IH0KKwogICAgIC8vIFJlcGxhY2VzIHRoZSB2YWx1ZSBi
dXQgbm90IHRoZSBrZXkgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAgICAgLy8gUmV0
dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwK
ICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IGVu
dHJ5IHdhcyBhZGRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCAyYTI3MjgwNjBmNWJlYmZjNzMxZmU5YTI4N2Jj
OTY1NzhiNGUzMjRjLi40NmU1YmI5NWI4YTE2MmE5MzNhMWUyNTczZWRkZTY3MGQ0NDUwMjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaFNldC5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIEhhc2hTZXQgZmluYWwgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBpdGVyYXRvciBmaW5k
KGNvbnN0IFQmKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwg
dHlwZW5hbWUgVD4gYm9vbCBjb250YWlucyhjb25zdCBUJikgY29uc3Q7CiAKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNOdWxsU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc051bGxT
dG9yYWdlKCk7IH0KIAogICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaW5jbHVkZXMgYm90aCBhbiBp
dGVyYXRvciB0byB0aGUgYWRkZWQgdmFsdWUncyBsb2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNO
ZXdFbnRyeSBib29sIHRoYXQgaW5kaWNhdGVzIGlmIGl0IGlzIGEgbmV3IG9yIGV4aXN0aW5nIGVu
dHJ5IGluIHRoZSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IGJlN2VjZDlmYjc2YmIxMWVlODMwNDFm
YjQ3NDVlY2MzZTQ5YTA3YzYuLjUxNTBlZDZhMjY3NjNmYTkyOWE5ZDQ4NWQxY2RiNGM5NWI3ZGYy
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCkBAIC01MDAsNiArNTAwLDggQEAgREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IFZhbHVlVHlwZSogbG9va3VwKGNvbnN0IFQm
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+
IFZhbHVlVHlwZSogaW5saW5lTG9va3VwKGNvbnN0IFQmKTsKIAorICAgICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNOdWxsU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuICFtX3RhYmxlOyB9CisKICNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNv
bnN0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMDU3YmY2YjE2YmZkOWIxYzU2M2Q0ZGIyNzkzOGEwMzY5YjU4NTRkYy4uM2Fm
YzdmZDE4NzY5ZjcwYWY5MzllNDgwNTE3YmIwYWY1YTMyNDBjNSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wNy0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIE9wdGltaXplIE9iamVjdC5hc3NpZ24gYW5kIHB1dERpcmVjdEludGVybmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9vYmplY3QtYXNzaWduLXJlcGxhY2UuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL29iamVjdC1hc3NpZ24tdHJhbnNpdGlvbi5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKwogMjAyMS0wNy0wMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgW1dlYklETF0gUmV3b3JrIHJ1bnRpbWUgZW5hYmxl
ZCBwcm9wZXJ0aWVzIGxldmVyYWdpbmcgUHJvcGVydHlDYWxsYmFjawpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi1yZXBsYWNlLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi1yZXBsYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMjAy
MWZlMzEzMzQ1YWZmYzhmYWU1ZDY3MWM0MjMxNmMwMWU1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtYXNzaWduLXJlcGxhY2UuanMKQEAgLTAsMCAr
MSwxMiBAQAorZnVuY3Rpb24gdGVzdCh0YXJnZXQsIHNvdXJjZSkKK3sKKyAgICBPYmplY3QuYXNz
aWduKHRhcmdldCwgc291cmNlKTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgdGFyZ2V0ID0g
e307Cit2YXIgc291cmNlID0geworICAgIGE6NDIsIGI6NDIsIGM6NDIKK307Citmb3IgKHZhciBp
ID0gMDsgaSA8IDJlNjsgKytpKQorICAgIHRlc3QodGFyZ2V0LCBzb3VyY2UpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi10cmFuc2l0aW9uLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWFzc2lnbi10cmFuc2l0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIxMDU2MTZjYWFiNTE5NmNjYWEwNjk1MTE3YzRlM2FkMTg0ZmM1MWUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtYXNzaWduLXRyYW5zaXRp
b24uanMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gdGVzdCh0YXJnZXQsIHNvdXJjZSkKK3sK
KyAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit2YXIgc291cmNlID0geworICAgIGE6NDIsIGI6NDIsIGM6NDIKK307Citmb3IgKHZhciBpID0g
MDsgaSA8IDJlNjsgKytpKQorICAgIHRlc3Qoe30sIHNvdXJjZSk7Cg==
</data>
<flag name="review"
          id="454950"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>