<?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>204335</bug_id>
          
          <creation_ts>2019-11-18 17:47:33 -0800</creation_ts>
          <short_desc>Rename AbstractEventLoop to EventLoop and move to its own cpp file</short_desc>
          <delta_ts>2019-11-19 14:00:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          <dependson>204263</dependson>
          <blocked>203667</blocked>
    
    <blocked>204042</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591373</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 17:47:33 -0800</bug_when>
    <thetext>Now that the much of event loop implementation moved to AbstractEventLoop in r252607, move to its own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591384</commentid>
    <comment_count>1</comment_count>
      <attachid>383823</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 17:57:15 -0800</bug_when>
    <thetext>Created attachment 383823
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591386</commentid>
    <comment_count>2</comment_count>
      <attachid>383825</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 17:59:54 -0800</bug_when>
    <thetext>Created attachment 383825
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591390</commentid>
    <comment_count>3</comment_count>
      <attachid>383828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 18:03:30 -0800</bug_when>
    <thetext>Created attachment 383828
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591392</commentid>
    <comment_count>4</comment_count>
      <attachid>383828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 18:05:05 -0800</bug_when>
    <thetext>Comment on attachment 383828
Cleanup

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

&gt; Source/WebCore/dom/EventLoop.h:62
&gt; +class AbstractEventLoop : public RefCounted&lt;AbstractEventLoop&gt;, public CanMakeWeakPtr&lt;AbstractEventLoop&gt; {

Note that this is the old file content for svn mv. See below for the actual diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591394</commentid>
    <comment_count>5</comment_count>
      <attachid>383828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-18 18:06:37 -0800</bug_when>
    <thetext>Comment on attachment 383828
Cleanup

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

&gt;&gt; Source/WebCore/dom/EventLoop.h:62
&gt;&gt; +class EventLoop : public RefCounted&lt;EventLoop&gt;, public CanMakeWeakPtr&lt;EventLoop&gt; {
&gt; 
&gt; Note that this is the old file content for svn mv. See below for the actual diff.

Huh, I guess review tool can&apos;t tell to which file the comment is added. I meant to add this to the file above which shows the original content of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591463</commentid>
    <comment_count>6</comment_count>
      <attachid>383828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-19 00:32:27 -0800</bug_when>
    <thetext>Comment on attachment 383828
Cleanup

Thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591464</commentid>
    <comment_count>7</comment_count>
      <attachid>383828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-19 00:33:50 -0800</bug_when>
    <thetext>Comment on attachment 383828
Cleanup

Hold on, this isn’t go gonna work in CQ. Will land manually tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591465</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-19 00:34:36 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #4)
&gt; Note that this is the old file content for svn mv. See below for the actual
&gt; diff.

How did you generate the diff? Git usually seems to produce nicer diffs for move/renames (see https://bugs.webkit.org/attachment.cgi?id=383806&amp;action=review for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591466</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-19 00:36:17 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #8)
&gt; (In reply to Ryosuke Niwa from comment #4)
&gt; &gt; Note that this is the old file content for svn mv. See below for the actual
&gt; &gt; diff.
&gt; 
&gt; How did you generate the diff? Git usually seems to produce nicer diffs for
&gt; move/renames (see
&gt; https://bugs.webkit.org/attachment.cgi?id=383806&amp;action=review for example).

I did svn mv then modified the file. This used to work too but someone broke it some point and nobody fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591678</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-19 13:57:54 -0800</bug_when>
    <thetext>Committed r252646: &lt;https://trac.webkit.org/changeset/252646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591680</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 13:58:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/57335190&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383823</attachid>
            <date>2019-11-18 17:57:15 -0800</date>
            <delta_ts>2019-11-18 17:59:41 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-204335-20191118175714.patch</filename>
            <type>text/plain</type>
            <size>21330</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE5LTExLTE4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBBYnN0cmFjdEV2ZW50
TG9vcCB0byBFdmVudExvb3AgYW5kIG1vdmUgdG8gaXRzIG93biBjcHAgZmlsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVz
IEFic3RyYWN0RXZlbnRMb29wIHRvIEV2ZW50TG9vcCBhbmQgbW92ZSB0byBpdHMgb3duIGNwcCBm
aWxlIHNpbmNlCisgICAgICAgIHIyNTI2MDcgY29uc29saWRhdGVkIHRoZSBldmVudCBsb29wIGlt
cGxlbWVudGF0aW9ucyBpbiBXaW5kb3dFdmVudExvb3AgYW5kIFdvcmtlckV2ZW50TG9vcC4KKwor
ICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKiBk
b20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9XaW5kb3dF
dmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6OnF1ZXVl
VGFzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9vcDo6cmVz
dW1lR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6
OnN0b3BHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9v
cDo6c2NoZWR1bGVUb1J1bklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0RXZlbnRMb29wOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3RFdmVudExvb3A6OmNsZWFyQWxsVGFza3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2s6OkV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hU
YXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVl
dWVUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRMb29wLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisKIDIwMTktMTEtMTUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hhcmUgbW9yZSBj
b2RlIGJldHdlZW4gV2luZG93RXZlbnRMb29wIGFuZCBXb3JrZXJFdmVudExvb3AgYnkgaW50cm9k
dWNpbmcgRXZlbnRMb29wVGFza0dyb3VwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjUy
NjA1KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg4
NCw2ICs4ODQsNyBAQCBkb20vRXZlbnQuY3BwCiBkb20vRXZlbnRDb250ZXh0LmNwcAogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorZG9tL0V2ZW50TG9v
cC5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9FdmVudFRh
cmdldC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRPTUNhY2hlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CiAjaW5jbHVkZSAiSlNGZXRjaFJlcXVlc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRPTUNhY2hlU3RvcmFnZS5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNp
bmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDExICszMSwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5j
bHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCi0jaW5jbHVk
ZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1D
bGllbnQuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9X
ZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjUyNjA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAs
NyBAQAogCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDIy
MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVG
MTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZFRkFGMTIxRTVGQjlGMTAw
RTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVGQUYxMDFFNUZCOUUxMDBFN0YzNEIgLyogTG93UG93
ZXJNb2RlTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0Ex
MjM2NzlBQjMwMEI0NTA4NSAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2
NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExvb3AuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkZDQjYxODFBNzA4MjBF
MDBDNUEyMUUgLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3
MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBF
NzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5k
ZXJpbmdNb2RlLmggKi87IH07CkBAIC0xMTEzMSw3ICsxMTEzMSw3IEBACiAJCTlCMDk4QkUwMUYz
RDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpTU3RyaW5nQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4QkU3MUYzRDZB
RjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAvKiBXb3Jr
ZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwQUJDQTQy
MzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTExNzUs
NiArMTExNzUsNyBAQAogCQk5Qjg2NEYwMTIzNEMwMjhBMDA2RDEwRUIgLyogSWRsZVJlcXVlc3RP
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg2NEYwNTIzNEMwODkzMDA2RDEwRUIgLyogSWRsZUNhbGxiYWNrQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlQ2FsbGJhY2tDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0RjA3MjM0QzA4QTMwMDZEMTBFQiAvKiBJZGxl
Q2FsbGJhY2tDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkbGVDYWxsYmFja0Nv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjkxRENDQzIzODM3
OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9v
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCOTI5OUIwMUY2Nzk2QTQwMDY3
MjNDMiAvKiBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZW50UmVhZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCOUNBREE3MjE2NURDNzYwMEU4RDg1OCAvKiBKU011dGF0aW9uUmVj
b3JkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NF
NDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzgwMyw3ICsyNzgwNCw2IEBACiAJCQkJN0NEMEUyQkQxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKIAkJCQk3Q0QwRTJCQzFGODBBNTZF
MDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0
Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAv
KiBBYnN0cmFjdEV2ZW50TG9vcC5oICovLAogCQkJCTdDNTIyMjk3MUUxREFFMTYwMDJDQjhGNyAv
KiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCiAJCQkJN0M1MjIyOTgxRTFEQUUxNjAwMkNCOEY3
IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCiAJCQkJN0NEMEJBMDIxQjhGNzlDOTAwNUNFQkJF
IC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCAqLywKQEAgLTI4MDA2LDYgKzI4MDA2
LDggQEAKIAkJCQk4NUFGQTc0MTBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRMaXN0ZW5lci5pZGwg
Ki8sCiAJCQkJQUQ0NDk1RjExNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuY3Bw
ICovLAogCQkJCUFENDQ5NUYyMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmgg
Ki8sCisJCQkJOUI5MURDQ0MyMzgzNzkyRDAwMEVFRTBGIC8qIEV2ZW50TG9vcC5jcHAgKi8sCisJ
CQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEV2ZW50TG9vcC5oICovLAogCQkJCTgzRkU3
Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICovLAogCQkJCTgzRkU3
Q0E2MURBOUYxNjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8sCiAJCQkJOTM5
ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3BwICovLApAQCAtMjg3NzcsNyAr
Mjg3NzksNiBAQAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9y
dFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NkYwMkExQTIzNzM3Rjgz
MDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1
MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk1MzQsNyArMjk1MzUsNiBAQAogCQkJCUNFMDU3RkE2MTIy
MDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUQyRjhFMDMyMzQ0NzRFRjAwOTkzQjY4IC8qIERvY3VtZW50UGljdHVy
ZUluUGljdHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEE0RjQ4QUExNkIwREZDMDAwRURCQjI5
IC8qIFN0eWxlU2NvcGVSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4
ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkJEQjVEQzIyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY2MCw2ICsyOTY2MCw3IEBA
CiAJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFENDQ5NUY0MTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExp
c3RlbmVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQg
LyogRXZlbnRMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIz
N0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTg4NUM0MDhC
N0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjcxNEUy
MTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMjY5
LDYgKzMyMjcwLDcgQEAKIAkJCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyog
U3R5bGVSdWxlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1
NjQ1IC8qIFN0eWxlU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBNEY0OEFBMTZCMERGQzAw
MEVEQkIyOSAvKiBTdHlsZVNjb3BlUnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1
RTNFMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlENjM4MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdBM0FDNjFDNUVBQzlEMDBDQ0JGQTcgLyogU3R5
bGVTaGFyaW5nUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkVm
ZmVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblBsYXliYWNrRXZlbnQuaCIKICNpbmNsdWRlICJB
bmltYXRpb25UaW1lbGluZS5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRlY2xhcmF0
aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFRpbWVsaW5lLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpT
V2ViQW5pbWF0aW9uLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50
TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHJldmlzaW9uIDI1MjYwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmFjZVNl
dC5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJET01Qcm9t
aXNlUHJveHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCi0jaW5jbHVkZSAiQWJzdHJh
Y3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1MjYwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3
IEBAIGNsYXNzIElucHV0Q3Vyc29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFi
c3RyYWN0RXZlbnRMb29wOworY2xhc3MgRXZlbnRMb29wOwogY2xhc3MgQXBwbGljYXRpb25TdGF0
ZUNoYW5nZUxpc3RlbmVyOwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEF0dHI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9u
IDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFic3RyYWN0RXZlbnRMb29wOworY2xhc3Mg
RXZlbnRMb29wOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRGF0YWJhc2VDb250ZXh0Owog
Y2xhc3MgRXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExv
b3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3Au
Y3BwCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRM
b29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMzggKzU5LDYgQEAgV2luZG93RXZlbnRMb29w
Ojp+V2luZG93RXZlbnRMb29wKCkKICAgICBSRUxFQVNFX0FTU0VSVChkaWRSZW1vdmUpOwogfQog
Ci12b2lkIEFic3RyYWN0RXZlbnRMb29wOjpxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50
TG9vcFRhc2s+JiYgdGFzaykKLXsKLSAgICBBU1NFUlQodGFzay0+Z3JvdXAoKSk7Ci0gICAgQVNT
RVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKLSAg
ICBtX3Rhc2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50
TG9vcDo6cmVzdW1lR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJiBncm91cCkKLXsKLSAgICBBU1NF
UlQoaXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlmICghbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNr
cy5jb250YWlucyhncm91cCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzY2hlZHVsZVRvUnVuSWZO
ZWVkZWQoKTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6c3RvcEdyb3VwKEV2ZW50TG9v
cFRhc2tHcm91cCYgZ3JvdXApCi17Ci0gICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAg
ICBtX3Rhc2tzLnJlbW92ZUFsbE1hdGNoaW5nKFsmZ3JvdXBdIChhdXRvJiB0YXNrKSB7Ci0gICAg
ICAgIHJldHVybiBncm91cC5tYXRjaGVzVGFzaygqdGFzayk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
QWJzdHJhY3RFdmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCi17Ci0gICAgaWYgKG1f
aXNTY2hlZHVsZWRUb1J1bikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNTY2hlZHVsZWRUb1J1
biA9IHRydWU7Ci0gICAgc2NoZWR1bGVUb1J1bigpOwotfQotCiB2b2lkIFdpbmRvd0V2ZW50TG9v
cDo6c2NoZWR1bGVUb1J1bigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbZXZlbnRMb29wID0g
bWFrZVJlZigqdGhpcyldICgpIHsKQEAgLTEwMyw1NiArNzEsNCBAQCBib29sIFdpbmRvd0V2ZW50
TG9vcDo6aXNDb250ZXh0VGhyZWFkKCkgCiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQog
Ci12b2lkIEFic3RyYWN0RXZlbnRMb29wOjpydW4oKQotewotICAgIG1faXNTY2hlZHVsZWRUb1J1
biA9IGZhbHNlOwotICAgIGlmIChtX3Rhc2tzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKLSAgICBtX2dy
b3Vwc1dpdGhTdXNwZW5lZFRhc2tzLmNsZWFyKCk7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxFdmVudExvb3BUYXNrPj4gcmVtYWluaW5nVGFza3M7Ci0gICAgZm9yIChhdXRvJiB0YXNrIDog
dGFza3MpIHsKLSAgICAgICAgYXV0byogZ3JvdXAgPSB0YXNrLT5ncm91cCgpOwotICAgICAgICBp
ZiAoIWdyb3VwIHx8IGdyb3VwLT5pc1N0b3BwZWRQZXJtYW5lbnRseSgpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgaWYgKGdyb3VwLT5pc1N1c3BlbmRlZCgpKSB7Ci0gICAgICAg
ICAgICBtX2dyb3Vwc1dpdGhTdXNwZW5lZFRhc2tzLmFkZChncm91cCk7Ci0gICAgICAgICAgICBy
ZW1haW5pbmdUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhc2stPmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgZm9y
IChhdXRvJiB0YXNrIDogbV90YXNrcykKLSAgICAgICAgcmVtYWluaW5nVGFza3MuYXBwZW5kKFdU
Rk1vdmUodGFzaykpOwotICAgIG1fdGFza3MgPSBXVEZNb3ZlKHJlbWFpbmluZ1Rhc2tzKTsKLX0K
LQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6Y2xlYXJBbGxUYXNrcygpCi17Ci0gICAgbV90YXNr
cy5jbGVhcigpOwotICAgIG1fZ3JvdXBzV2l0aFN1c3BlbmVkVGFza3MuY2xlYXIoKTsKLX0KLQot
Y2xhc3MgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZlbnRMb29wVGFz
ayB7Ci1wdWJsaWM6Ci0gICAgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2soVGFza1NvdXJj
ZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFic3RyYWN0RXZlbnRMb29wOjpU
YXNrRnVuY3Rpb24mJiBmdW5jdGlvbikKLSAgICAgICAgOiBFdmVudExvb3BUYXNrKHNvdXJjZSwg
Z3JvdXApCi0gICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdm9pZCBleGVjdXRlKCkgZmluYWwgeyBtX2Z1bmN0aW9uKCk7IH0KLQotcHJp
dmF0ZToKLSAgICBBYnN0cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uIG1fZnVuY3Rpb247Ci19
OwotCi12b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNl
LCBBYnN0cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0gICAgcmV0
dXJuIHF1ZXVlVGFzayhtYWtlVW5pcXVlPEV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hUYXNrPihz
b3VyY2UsICp0aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAy
NTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0
cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBEb2N1bWVudDsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3dpbmRvdy1ldmVudC1sb29wCi1jbGFzcyBXaW5kb3dFdmVu
dExvb3AgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RFdmVudExvb3AgeworY2xhc3MgV2luZG93RXZl
bnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXaW5kb3dFdmVudExvb3A+IGVuc3VyZUZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAkocmV2aXNpb24gMjUyNjA3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29w
LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJJbnRlcm5hbHMuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrLmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlv
blRpbWVsaW5lLmgiCkBAIC03MSw2ICs3MCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0
ZW5kYWJsZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkocmV2aXNpb24gMjUyNjA3
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMTUgKzI1LDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWJz
dHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKIAotY2xhc3MgV29ya2VyRXZlbnRM
b29wIGZpbmFsIDogcHVibGljIEFic3RyYWN0RXZlbnRMb29wLCBwcml2YXRlIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBF
dmVudExvb3AsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgog
ICAgIC8vIEV4cGxpY2l0bHkgdGFrZSBXb3JrZXJHbG9iYWxTY29wZSBhbmQgV29ya2xldEdsb2Jh
bFNjb3BlIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLgogICAgIHN0YXRpYyBSZWY8V29ya2Vy
RXZlbnRMb29wPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJBYnN0cmFj
dEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
SURMVHlwZXMuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383825</attachid>
            <date>2019-11-18 17:59:54 -0800</date>
            <delta_ts>2019-11-18 18:02:12 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-204335-20191118175953.patch</filename>
            <type>text/plain</type>
            <size>38196</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE5LTExLTE4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBBYnN0cmFjdEV2ZW50
TG9vcCB0byBFdmVudExvb3AgYW5kIG1vdmUgdG8gaXRzIG93biBjcHAgZmlsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVz
IEFic3RyYWN0RXZlbnRMb29wIHRvIEV2ZW50TG9vcCBhbmQgbW92ZSB0byBpdHMgb3duIGNwcCBm
aWxlIHNpbmNlCisgICAgICAgIHIyNTI2MDcgY29uc29saWRhdGVkIHRoZSBldmVudCBsb29wIGlt
cGxlbWVudGF0aW9ucyBpbiBXaW5kb3dFdmVudExvb3AgYW5kIFdvcmtlckV2ZW50TG9vcC4KKwor
ICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKiBk
b20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9XaW5kb3dF
dmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6OnF1ZXVl
VGFzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9vcDo6cmVz
dW1lR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6
OnN0b3BHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9v
cDo6c2NoZWR1bGVUb1J1bklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0RXZlbnRMb29wOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3RFdmVudExvb3A6OmNsZWFyQWxsVGFza3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2s6OkV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hU
YXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVl
dWVUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRMb29wLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisKIDIwMTktMTEtMTUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hhcmUgbW9yZSBj
b2RlIGJldHdlZW4gV2luZG93RXZlbnRMb29wIGFuZCBXb3JrZXJFdmVudExvb3AgYnkgaW50cm9k
dWNpbmcgRXZlbnRMb29wVGFza0dyb3VwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjUy
NjA1KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg4
NCw2ICs4ODQsNyBAQCBkb20vRXZlbnQuY3BwCiBkb20vRXZlbnRDb250ZXh0LmNwcAogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorZG9tL0V2ZW50TG9v
cC5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9FdmVudFRh
cmdldC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRPTUNhY2hlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CiAjaW5jbHVkZSAiSlNGZXRjaFJlcXVlc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRPTUNhY2hlU3RvcmFnZS5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNp
bmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDExICszMSwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5j
bHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCi0jaW5jbHVk
ZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1D
bGllbnQuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9X
ZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjUyNjA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAs
NyBAQAogCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDIy
MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVG
MTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZFRkFGMTIxRTVGQjlGMTAw
RTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVGQUYxMDFFNUZCOUUxMDBFN0YzNEIgLyogTG93UG93
ZXJNb2RlTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0Ex
MjM2NzlBQjMwMEI0NTA4NSAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2
NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExvb3AuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkZDQjYxODFBNzA4MjBF
MDBDNUEyMUUgLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3
MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBF
NzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5k
ZXJpbmdNb2RlLmggKi87IH07CkBAIC0xMTEzMSw3ICsxMTEzMSw3IEBACiAJCTlCMDk4QkUwMUYz
RDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpTU3RyaW5nQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4QkU3MUYzRDZB
RjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAvKiBXb3Jr
ZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwQUJDQTQy
MzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTExNzUs
NiArMTExNzUsNyBAQAogCQk5Qjg2NEYwMTIzNEMwMjhBMDA2RDEwRUIgLyogSWRsZVJlcXVlc3RP
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg2NEYwNTIzNEMwODkzMDA2RDEwRUIgLyogSWRsZUNhbGxiYWNrQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlQ2FsbGJhY2tDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0RjA3MjM0QzA4QTMwMDZEMTBFQiAvKiBJZGxl
Q2FsbGJhY2tDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkbGVDYWxsYmFja0Nv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjkxRENDQzIzODM3
OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9v
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCOTI5OUIwMUY2Nzk2QTQwMDY3
MjNDMiAvKiBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZW50UmVhZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCOUNBREE3MjE2NURDNzYwMEU4RDg1OCAvKiBKU011dGF0aW9uUmVj
b3JkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NF
NDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzgwMyw3ICsyNzgwNCw2IEBACiAJCQkJN0NEMEUyQkQxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKIAkJCQk3Q0QwRTJCQzFGODBBNTZF
MDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0
Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAv
KiBBYnN0cmFjdEV2ZW50TG9vcC5oICovLAogCQkJCTdDNTIyMjk3MUUxREFFMTYwMDJDQjhGNyAv
KiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCiAJCQkJN0M1MjIyOTgxRTFEQUUxNjAwMkNCOEY3
IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCiAJCQkJN0NEMEJBMDIxQjhGNzlDOTAwNUNFQkJF
IC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCAqLywKQEAgLTI4MDA2LDYgKzI4MDA2
LDggQEAKIAkJCQk4NUFGQTc0MTBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRMaXN0ZW5lci5pZGwg
Ki8sCiAJCQkJQUQ0NDk1RjExNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuY3Bw
ICovLAogCQkJCUFENDQ5NUYyMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmgg
Ki8sCisJCQkJOUI5MURDQ0MyMzgzNzkyRDAwMEVFRTBGIC8qIEV2ZW50TG9vcC5jcHAgKi8sCisJ
CQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEV2ZW50TG9vcC5oICovLAogCQkJCTgzRkU3
Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICovLAogCQkJCTgzRkU3
Q0E2MURBOUYxNjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8sCiAJCQkJOTM5
ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3BwICovLApAQCAtMjg3NzcsNyAr
Mjg3NzksNiBAQAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9y
dFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NkYwMkExQTIzNzM3Rjgz
MDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1
MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk1MzQsNyArMjk1MzUsNiBAQAogCQkJCUNFMDU3RkE2MTIy
MDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUQyRjhFMDMyMzQ0NzRFRjAwOTkzQjY4IC8qIERvY3VtZW50UGljdHVy
ZUluUGljdHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEE0RjQ4QUExNkIwREZDMDAwRURCQjI5
IC8qIFN0eWxlU2NvcGVSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4
ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkJEQjVEQzIyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY2MCw2ICsyOTY2MCw3IEBA
CiAJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFENDQ5NUY0MTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExp
c3RlbmVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQg
LyogRXZlbnRMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIz
N0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTg4NUM0MDhC
N0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjcxNEUy
MTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMjY5
LDYgKzMyMjcwLDcgQEAKIAkJCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyog
U3R5bGVSdWxlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1
NjQ1IC8qIFN0eWxlU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBNEY0OEFBMTZCMERGQzAw
MEVEQkIyOSAvKiBTdHlsZVNjb3BlUnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1
RTNFMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlENjM4MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdBM0FDNjFDNUVBQzlEMDBDQ0JGQTcgLyogU3R5
bGVTaGFyaW5nUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkVm
ZmVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblBsYXliYWNrRXZlbnQuaCIKICNpbmNsdWRlICJB
bmltYXRpb25UaW1lbGluZS5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRlY2xhcmF0
aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFRpbWVsaW5lLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpT
V2ViQW5pbWF0aW9uLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50
TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHJldmlzaW9uIDI1MjYwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmFjZVNl
dC5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJET01Qcm9t
aXNlUHJveHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdEV2
ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50
TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RF
dmVudExvb3AuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJUYXNrU291cmNlLmgiCi0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFdmVudExvb3BUYXNr
R3JvdXA7Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci0KLWNsYXNzIEV2ZW50TG9vcFRhc2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50
TG9vcFRhc2spOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+RXZlbnRMb29wVGFzaygpID0gZGVmYXVsdDsKLQotICAgIFRhc2tTb3VyY2UgdGFz
a1NvdXJjZSgpIHsgcmV0dXJuIG1fdGFza1NvdXJjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlKCkgPSAwOwotCi0gICAgRXZlbnRMb29wVGFza0dyb3VwKiBncm91cCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JvdXAuZ2V0KCk7IH0KLQotcHJvdGVjdGVkOgotICAgIEV2ZW50TG9vcFRhc2soVGFz
a1NvdXJjZSwgRXZlbnRMb29wVGFza0dyb3VwJik7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVGFz
a1NvdXJjZSBtX3Rhc2tTb3VyY2U7Ci0gICAgV2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+IG1f
Z3JvdXA7Ci19OwotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
ZWJhcHBhcGlzLmh0bWwjZXZlbnQtbG9vcAotY2xhc3MgQWJzdHJhY3RFdmVudExvb3AgOiBwdWJs
aWMgUmVmQ291bnRlZDxBYnN0cmFjdEV2ZW50TG9vcD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxB
YnN0cmFjdEV2ZW50TG9vcD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkFic3RyYWN0RXZlbnRM
b29wKCkgPSBkZWZhdWx0OwotCi0gICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkICgpPiBUYXNrRnVu
Y3Rpb247Ci0gICAgdm9pZCBxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+
JiYpOwotCi0gICAgdm9pZCByZXN1bWVHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKLSAgICB2
b2lkIHN0b3BHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKLQotcHJvdGVjdGVkOgotICAgIEFi
c3RyYWN0RXZlbnRMb29wKCkgPSBkZWZhdWx0OwotICAgIHZvaWQgcnVuKCk7Ci0gICAgdm9pZCBj
bGVhckFsbFRhc2tzKCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzY2hlZHVsZVRvUnVuSWZOZWVk
ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUb1J1bigpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgPSAwOwotCi0gICAgLy8gVXNlIGEgZ2xvYmFs
IHF1ZXVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdGFzayBxdWV1ZXMgc2luY2UgSFRNTDUgc3BlYyBh
bGxvd3MgVUEgdG8gcGljayBhcmJpdHJhcnkgcXVldWUuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxFdmVudExvb3BUYXNrPj4gbV90YXNrczsKLSAgICBXZWFrSGFzaFNldDxFdmVudExvb3BU
YXNrR3JvdXA+IG1fZ3JvdXBzV2l0aFN1c3BlbmVkVGFza3M7Ci0gICAgYm9vbCBtX2lzU2NoZWR1
bGVkVG9SdW4geyBmYWxzZSB9OwotfTsKLQotY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPEV2ZW50TG9vcFRhc2tHcm91cD4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEV2ZW50TG9vcFRhc2tHcm91cCk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0KLXB1YmxpYzoKLSAgICBFdmVudExvb3BUYXNrR3JvdXAoQWJzdHJhY3RFdmVudExvb3Am
IGV2ZW50TG9vcCkKLSAgICAgICAgOiBtX2V2ZW50TG9vcChtYWtlV2Vha1B0cihldmVudExvb3Ap
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1hdGNoZXNUYXNrKEV2ZW50TG9vcFRhc2smIHRh
c2spIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvKiBncm91cCA9IHRhc2suZ3JvdXAoKTsKLSAg
ICAgICAgcmV0dXJuIGdyb3VwID09IHRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9wQW5kRGlz
Y2FyZEFsbFRhc2tzKCkKLSAgICB7Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsK
LSAgICAgICAgaWYgKGF1dG8qIGV2ZW50TG9vcCA9IG1fZXZlbnRMb29wLmdldCgpKQotICAgICAg
ICAgICAgZXZlbnRMb29wLT5zdG9wR3JvdXAoKnRoaXMpOwotICAgIH0KLQotICAgIHZvaWQgc3Vz
cGVuZCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7
Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOwotICAgICAgICAvLyBXZSBkb24n
dCByZW1vdmUgc3VzcGVuZGVkIHRhc2tzIHRvIHByZXNlcnZlIHRoZSBvcmRlcmluZy4KLSAgICAg
ICAgLy8gQWJzdHJhY3RFdmVudExvb3A6OnJ1biBjaGVja3Mgd2hldGhlciBlYWNoIHRhc2sncyBn
cm91cCBpcyBzdXNwZW5kZWQgb3Igbm90LgotICAgIH0KLQotICAgIHZvaWQgcmVzdW1lKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKTsKLSAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOwotICAgICAgICBpZiAoYXV0byogZXZlbnRMb29wID0g
bV9ldmVudExvb3AuZ2V0KCkpCi0gICAgICAgICAgICBldmVudExvb3AtPnJlc3VtZUdyb3VwKCp0
aGlzKTsKLSAgICB9Ci0KLSAgICBib29sIGlzU3RvcHBlZFBlcm1hbmVudGx5KCkgeyByZXR1cm4g
bV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZDsgfQotICAgIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJl
dHVybiBtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQ7IH0KLQotICAgIHZvaWQgcXVldWVUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrPiYmIHRhc2spCi0gICAgewotICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9ldmVudExvb3ApCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIEFTU0VSVCh0YXNrLT5ncm91cCgpID09IHRoaXMpOwotICAgICAg
ICBtX2V2ZW50TG9vcC0+cXVldWVUYXNrKFdURk1vdmUodGFzaykpOwotICAgIH0KLQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIEFic3RyYWN0RXZlbnRMb29w
OjpUYXNrRnVuY3Rpb24mJik7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVp
bnQ4X3QgeyBSdW5uaW5nLCBTdXNwZW5kZWQsIFN0b3BwZWQgfTsKLQotICAgIFdlYWtQdHI8QWJz
dHJhY3RFdmVudExvb3A+IG1fZXZlbnRMb29wOwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
UnVubmluZyB9OwotfTsKLQotaW5saW5lIEV2ZW50TG9vcFRhc2s6OkV2ZW50TG9vcFRhc2soVGFz
a1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXApCi0gICAgOiBtX3Rhc2tT
b3VyY2Uoc291cmNlKQotICAgICwgbV9ncm91cChtYWtlV2Vha1B0cihncm91cCkpCi17IH0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5jcHAJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJBYnN0
cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjUyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgY2xhc3MgSW5wdXRDdXJzb3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
QWJzdHJhY3RFdmVudExvb3A7CitjbGFzcyBFdmVudExvb3A7CiBjbGFzcyBBcHBsaWNhdGlvblN0
YXRlQ2hhbmdlTGlzdGVuZXI7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0cjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRXZlbnRMb29wOjpxdWV1ZVRhc2soc3RkOjp1
bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQodGFzay0+Z3Jv
dXAoKSk7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBzY2hlZHVsZVRvUnVu
SWZOZWVkZWQoKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKK30KKwordm9p
ZCBFdmVudExvb3A6OnJlc3VtZUdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXApCit7Cisg
ICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBpZiAoIW1fZ3JvdXBzV2l0aFN1c3Bl
bmVkVGFza3MuY29udGFpbnMoZ3JvdXApKQorICAgICAgICByZXR1cm47CisgICAgc2NoZWR1bGVU
b1J1bklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpzdG9wR3JvdXAoRXZlbnRMb29w
VGFza0dyb3VwJiBncm91cCkKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAg
IG1fdGFza3MucmVtb3ZlQWxsTWF0Y2hpbmcoWyZncm91cF0gKGF1dG8mIHRhc2spIHsKKyAgICAg
ICAgcmV0dXJuIGdyb3VwLm1hdGNoZXNUYXNrKCp0YXNrKTsKKyAgICB9KTsKK30KKwordm9pZCBF
dmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCit7CisgICAgaWYgKG1faXNTY2hlZHVs
ZWRUb1J1bikKKyAgICAgICAgcmV0dXJuOworICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRydWU7
CisgICAgc2NoZWR1bGVUb1J1bigpOworfQorCit2b2lkIEV2ZW50TG9vcDo6cnVuKCkKK3sKKyAg
ICBtX2lzU2NoZWR1bGVkVG9SdW4gPSBmYWxzZTsKKyAgICBpZiAobV90YXNrcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFza3MgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFz
a3MsIHsgfSk7CisgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVhcigpOworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4+IHJlbWFpbmluZ1Rhc2tzOworICAg
IGZvciAoYXV0byYgdGFzayA6IHRhc2tzKSB7CisgICAgICAgIGF1dG8qIGdyb3VwID0gdGFzay0+
Z3JvdXAoKTsKKyAgICAgICAgaWYgKCFncm91cCB8fCBncm91cC0+aXNTdG9wcGVkUGVybWFuZW50
bHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChncm91cC0+aXNTdXNw
ZW5kZWQoKSkgeworICAgICAgICAgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5hZGQoZ3Jv
dXApOworICAgICAgICAgICAgcmVtYWluaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB0YXNrLT5leGVjdXRl
KCk7CisgICAgfQorICAgIGZvciAoYXV0byYgdGFzayA6IG1fdGFza3MpCisgICAgICAgIHJlbWFp
bmluZ1Rhc2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3Rhc2tzID0gV1RGTW92ZShy
ZW1haW5pbmdUYXNrcyk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpjbGVhckFsbFRhc2tzKCkKK3sK
KyAgICBtX3Rhc2tzLmNsZWFyKCk7CisgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVh
cigpOworfQorCit2b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxFdmVudExvb3BUYXNrPiYmIHRhc2spCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlN0b3BwZWQgfHwgIW1fZXZlbnRMb29wKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHRh
c2stPmdyb3VwKCkgPT0gdGhpcyk7CisgICAgbV9ldmVudExvb3AtPnF1ZXVlVGFzayhXVEZNb3Zl
KHRhc2spKTsKK30KKworY2xhc3MgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2sgOiBwdWJs
aWMgRXZlbnRMb29wVGFzayB7CitwdWJsaWM6CisgICAgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRj
aFRhc2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEV2ZW50
TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgICAgIDogRXZlbnRMb29wVGFzayhz
b3VyY2UsIGdyb3VwKQorICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpIGZpbmFsIHsgbV9mdW5jdGlvbigpOyB9
CisKK3ByaXZhdGU6CisgICAgRXZlbnRMb29wOjpUYXNrRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307
CisKK3ZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpxdWV1ZVRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIHF1ZXVl
VGFzayhtYWtlVW5pcXVlPEV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hUYXNrPihzb3VyY2UsICp0
aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oOjI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRM
b29wVGFza0dyb3VwOworY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworCitjbGFzcyBFdmVudExvb3BUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShFdmVudExvb3BUYXNrKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGlj
OgorICAgIHZpcnR1YWwgfkV2ZW50TG9vcFRhc2soKSA9IGRlZmF1bHQ7CisKKyAgICBUYXNrU291
cmNlIHRhc2tTb3VyY2UoKSB7IHJldHVybiBtX3Rhc2tTb3VyY2U7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZSgpID0gMDsKKworICAgIEV2ZW50TG9vcFRhc2tHcm91cCogZ3JvdXAoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBFdmVudExvb3BU
YXNrKFRhc2tTb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYpOworCitwcml2YXRlOgorICAgIGNv
bnN0IFRhc2tTb3VyY2UgbV90YXNrU291cmNlOworICAgIFdlYWtQdHI8RXZlbnRMb29wVGFza0dy
b3VwPiBtX2dyb3VwOworfTsKKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKK2NsYXNzIEFic3RyYWN0RXZlbnRMb29w
IDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8QWJzdHJhY3RFdmVudExvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFj
dEV2ZW50TG9vcCgpID0gZGVmYXVsdDsKKworICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoKT4g
VGFza0Z1bmN0aW9uOworICAgIHZvaWQgcXVldWVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPiYmKTsKKworICAgIHZvaWQgcmVzdW1lR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJik7
CisgICAgdm9pZCBzdG9wR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJik7CisKK3Byb3RlY3RlZDoK
KyAgICBBYnN0cmFjdEV2ZW50TG9vcCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJ1bigpOworICAg
IHZvaWQgY2xlYXJBbGxUYXNrcygpOworCitwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVUb1J1
bklmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVG9SdW4oKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVzZSBh
IGdsb2JhbCBxdWV1ZSBpbnN0ZWFkIG9mIG11bHRpcGxlIHRhc2sgcXVldWVzIHNpbmNlIEhUTUw1
IHNwZWMgYWxsb3dzIFVBIHRvIHBpY2sgYXJiaXRyYXJ5IHF1ZXVlLgorICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4+IG1fdGFza3M7CisgICAgV2Vha0hhc2hTZXQ8RXZl
bnRMb29wVGFza0dyb3VwPiBtX2dyb3Vwc1dpdGhTdXNwZW5lZFRhc2tzOworICAgIGJvb2wgbV9p
c1NjaGVkdWxlZFRvUnVuIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIEV2ZW50TG9vcFRhc2tHcm91
cCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShFdmVudExvb3BUYXNrR3JvdXApOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgRXZlbnRMb29wVGFza0dyb3VwKEFic3RyYWN0RXZl
bnRMb29wJiBldmVudExvb3ApCisgICAgICAgIDogbV9ldmVudExvb3AobWFrZVdlYWtQdHIoZXZl
bnRMb29wKSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtYXRjaGVzVGFzayhFdmVudExvb3BU
YXNrJiB0YXNrKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byogZ3JvdXAgPSB0YXNrLmdyb3Vw
KCk7CisgICAgICAgIHJldHVybiBncm91cCA9PSB0aGlzOworICAgIH0KKworICAgIHZvaWQgc3Rv
cEFuZERpc2NhcmRBbGxUYXNrcygpCisgICAgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0
b3BwZWQ7CisgICAgICAgIGlmIChhdXRvKiBldmVudExvb3AgPSBtX2V2ZW50TG9vcC5nZXQoKSkK
KyAgICAgICAgICAgIGV2ZW50TG9vcC0+c3RvcEdyb3VwKCp0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1c3BlbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN0
b3BwZWQpOworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgLy8g
V2UgZG9uJ3QgcmVtb3ZlIHN1c3BlbmRlZCB0YXNrcyB0byBwcmVzZXJ2ZSB0aGUgb3JkZXJpbmcu
CisgICAgICAgIC8vIEFic3RyYWN0RXZlbnRMb29wOjpydW4gY2hlY2tzIHdoZXRoZXIgZWFjaCB0
YXNrJ3MgZ3JvdXAgaXMgc3VzcGVuZGVkIG9yIG5vdC4KKyAgICB9CisKKyAgICB2b2lkIHJlc3Vt
ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7Cisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICAgICAgaWYgKGF1dG8qIGV2ZW50
TG9vcCA9IG1fZXZlbnRMb29wLmdldCgpKQorICAgICAgICAgICAgZXZlbnRMb29wLT5yZXN1bWVH
cm91cCgqdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBpc1N0b3BwZWRQZXJtYW5lbnRseSgpIHsg
cmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQ7IH0KKyAgICBib29sIGlzU3VzcGVuZGVk
KCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkOyB9CisKKyAgICB2b2lkIHF1
ZXVlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4mJiB0YXNrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1fZXZlbnRMb29wKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQodGFzay0+Z3JvdXAoKSA9PSB0aGlzKTsK
KyAgICAgICAgbV9ldmVudExvb3AtPnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBBYnN0cmFjdEV2
ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYpOworCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsgUnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CisKKyAgICBXZWFr
UHRyPEFic3RyYWN0RXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKyAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlJ1bm5pbmcgfTsKK307CisKK2lubGluZSBFdmVudExvb3BUYXNrOjpFdmVudExvb3BU
YXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwKQorICAgIDog
bV90YXNrU291cmNlKHNvdXJjZSkKKyAgICAsIG1fZ3JvdXAobWFrZVdlYWtQdHIoZ3JvdXApKQor
eyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgJ
KHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksOSArNTksOSBAQCBwcml2YXRlOgogfTsKIAogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AK
LWNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVu
dExvb3A+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QWJzdHJhY3RFdmVudExvb3A+IHsKK2NsYXNz
IEV2ZW50TG9vcCA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50TG9vcD4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxFdmVudExvb3A+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BYnN0cmFjdEV2ZW50
TG9vcCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5FdmVudExvb3AoKSA9IGRlZmF1bHQ7CiAK
ICAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKCk+IFRhc2tGdW5jdGlvbjsKICAgICB2b2lkIHF1
ZXVlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4mJik7CkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKIAog
cHJvdGVjdGVkOgotICAgIEFic3RyYWN0RXZlbnRMb29wKCkgPSBkZWZhdWx0OworICAgIEV2ZW50
TG9vcCgpID0gZGVmYXVsdDsKICAgICB2b2lkIHJ1bigpOwogICAgIHZvaWQgY2xlYXJBbGxUYXNr
cygpOwogCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cCA6IHB1Ymxp
YyBDYW5NYWsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIEV2
ZW50TG9vcFRhc2tHcm91cChBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRMb29wKQorICAgIEV2ZW50
TG9vcFRhc2tHcm91cChFdmVudExvb3AmIGV2ZW50TG9vcCkKICAgICAgICAgOiBtX2V2ZW50TG9v
cChtYWtlV2Vha1B0cihldmVudExvb3ApKQogICAgIHsKICAgICB9CkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7CiAg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOwogICAgICAgICAvLyBXZSBkb24ndCBy
ZW1vdmUgc3VzcGVuZGVkIHRhc2tzIHRvIHByZXNlcnZlIHRoZSBvcmRlcmluZy4KLSAgICAgICAg
Ly8gQWJzdHJhY3RFdmVudExvb3A6OnJ1biBjaGVja3Mgd2hldGhlciBlYWNoIHRhc2sncyBncm91
cCBpcyBzdXNwZW5kZWQgb3Igbm90LgorICAgICAgICAvLyBFdmVudExvb3A6OnJ1biBjaGVja3Mg
d2hldGhlciBlYWNoIHRhc2sncyBncm91cCBpcyBzdXNwZW5kZWQgb3Igbm90LgogICAgIH0KIAog
ICAgIHZvaWQgcmVzdW1lKCkKQEAgLTEyNywyMCArMTI3LDEzIEBAIHB1YmxpYzoKICAgICBib29s
IGlzU3RvcHBlZFBlcm1hbmVudGx5KCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZDsgfQogICAgIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpT
dXNwZW5kZWQ7IH0KIAotICAgIHZvaWQgcXVldWVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPiYmIHRhc2spCi0gICAgewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Rv
cHBlZCB8fCAhbV9ldmVudExvb3ApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VS
VCh0YXNrLT5ncm91cCgpID09IHRoaXMpOwotICAgICAgICBtX2V2ZW50TG9vcC0+cXVldWVUYXNr
KFdURk1vdmUodGFzaykpOwotICAgIH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcXVldWVU
YXNrKFRhc2tTb3VyY2UsIEFic3RyYWN0RXZlbnRMb29wOjpUYXNrRnVuY3Rpb24mJik7CisgICAg
dm9pZCBxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIEV2ZW50TG9vcDo6VGFza0Z1
bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsg
UnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CiAKLSAgICBXZWFrUHRyPEFic3RyYWN0RXZl
bnRMb29wPiBtX2V2ZW50TG9vcDsKKyAgICBXZWFrUHRyPEV2ZW50TG9vcD4gbV9ldmVudExvb3A7
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSdW5uaW5nIH07CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1MjYw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFic3RyYWN0RXZlbnRMb29wOworY2xhc3MgRXZlbnRM
b29wOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3Mg
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCShy
ZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksMzggKzU5LDYgQEAgV2luZG93RXZlbnRMb29wOjp+V2lu
ZG93RXZlbnRMb29wKCkKICAgICBSRUxFQVNFX0FTU0VSVChkaWRSZW1vdmUpOwogfQogCi12b2lk
IEFic3RyYWN0RXZlbnRMb29wOjpxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRh
c2s+JiYgdGFzaykKLXsKLSAgICBBU1NFUlQodGFzay0+Z3JvdXAoKSk7Ci0gICAgQVNTRVJUKGlz
Q29udGV4dFRocmVhZCgpKTsKLSAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKLSAgICBtX3Rh
c2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6
cmVzdW1lR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJiBncm91cCkKLXsKLSAgICBBU1NFUlQoaXND
b250ZXh0VGhyZWFkKCkpOwotICAgIGlmICghbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jb250
YWlucyhncm91cCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6c3RvcEdyb3VwKEV2ZW50TG9vcFRhc2tH
cm91cCYgZ3JvdXApCi17Ci0gICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX3Rh
c2tzLnJlbW92ZUFsbE1hdGNoaW5nKFsmZ3JvdXBdIChhdXRvJiB0YXNrKSB7Ci0gICAgICAgIHJl
dHVybiBncm91cC5tYXRjaGVzVGFzaygqdGFzayk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQWJzdHJh
Y3RFdmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCi17Ci0gICAgaWYgKG1faXNTY2hl
ZHVsZWRUb1J1bikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRy
dWU7Ci0gICAgc2NoZWR1bGVUb1J1bigpOwotfQotCiB2b2lkIFdpbmRvd0V2ZW50TG9vcDo6c2No
ZWR1bGVUb1J1bigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbZXZlbnRMb29wID0gbWFrZVJl
ZigqdGhpcyldICgpIHsKQEAgLTEwMyw1NiArNzEsNCBAQCBib29sIFdpbmRvd0V2ZW50TG9vcDo6
aXNDb250ZXh0VGhyZWFkKCkgCiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi12b2lk
IEFic3RyYWN0RXZlbnRMb29wOjpydW4oKQotewotICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IGZh
bHNlOwotICAgIGlmIChtX3Rhc2tzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKLSAgICBtX2dyb3Vwc1dp
dGhTdXNwZW5lZFRhc2tzLmNsZWFyKCk7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dExvb3BUYXNrPj4gcmVtYWluaW5nVGFza3M7Ci0gICAgZm9yIChhdXRvJiB0YXNrIDogdGFza3Mp
IHsKLSAgICAgICAgYXV0byogZ3JvdXAgPSB0YXNrLT5ncm91cCgpOwotICAgICAgICBpZiAoIWdy
b3VwIHx8IGdyb3VwLT5pc1N0b3BwZWRQZXJtYW5lbnRseSgpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgaWYgKGdyb3VwLT5pc1N1c3BlbmRlZCgpKSB7Ci0gICAgICAgICAgICBt
X2dyb3Vwc1dpdGhTdXNwZW5lZFRhc2tzLmFkZChncm91cCk7Ci0gICAgICAgICAgICByZW1haW5p
bmdUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRhc2stPmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRv
JiB0YXNrIDogbV90YXNrcykKLSAgICAgICAgcmVtYWluaW5nVGFza3MuYXBwZW5kKFdURk1vdmUo
dGFzaykpOwotICAgIG1fdGFza3MgPSBXVEZNb3ZlKHJlbWFpbmluZ1Rhc2tzKTsKLX0KLQotdm9p
ZCBBYnN0cmFjdEV2ZW50TG9vcDo6Y2xlYXJBbGxUYXNrcygpCi17Ci0gICAgbV90YXNrcy5jbGVh
cigpOwotICAgIG1fZ3JvdXBzV2l0aFN1c3BlbmVkVGFza3MuY2xlYXIoKTsKLX0KLQotY2xhc3Mg
RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZlbnRMb29wVGFzayB7Ci1w
dWJsaWM6Ci0gICAgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3Vy
Y2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFic3RyYWN0RXZlbnRMb29wOjpUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKLSAgICAgICAgOiBFdmVudExvb3BUYXNrKHNvdXJjZSwgZ3JvdXAp
Ci0gICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCBleGVjdXRlKCkgZmluYWwgeyBtX2Z1bmN0aW9uKCk7IH0KLQotcHJpdmF0ZToK
LSAgICBBYnN0cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uIG1fZnVuY3Rpb247Ci19OwotCi12
b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBBYnN0
cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIHF1
ZXVlVGFzayhtYWtlVW5pcXVlPEV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hUYXNrPihzb3VyY2Us
ICp0aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkV2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBEb2N1bWVudDsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d2ViYXBwYXBpcy5odG1sI3dpbmRvdy1ldmVudC1sb29wCi1jbGFzcyBXaW5kb3dFdmVudExvb3Ag
ZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RFdmVudExvb3AgeworY2xhc3MgV2luZG93RXZlbnRMb29w
IGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXaW5k
b3dFdmVudExvb3A+IGVuc3VyZUZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAkocmV2
aXNpb24gMjUyNjA3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZpbGVSZWFkZXIuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZpbGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRl
ICJJbnRlcm5hbHMuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJB
YnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
LmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVs
aW5lLmgiCkBAIC03MSw2ICs3MCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJF
dmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJs
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkocmV2aXNpb24gMjUyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTUgKzI1LDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWJzdHJhY3RF
dmVudExvb3AuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dExvb3AuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKIAotY2xhc3MgV29ya2VyRXZlbnRMb29wIGZp
bmFsIDogcHVibGljIEFic3RyYWN0RXZlbnRMb29wLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBFdmVudExv
b3AsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIC8v
IEV4cGxpY2l0bHkgdGFrZSBXb3JrZXJHbG9iYWxTY29wZSBhbmQgV29ya2xldEdsb2JhbFNjb3Bl
IGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLgogICAgIHN0YXRpYyBSZWY8V29ya2VyRXZlbnRM
b29wPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJ
KHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBA
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50
TG9vcC5oIgogI2luY2x1ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURMVHlw
ZXMuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383828</attachid>
            <date>2019-11-18 18:03:30 -0800</date>
            <delta_ts>2019-11-19 00:33:50 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-204335-20191118180329.patch</filename>
            <type>text/plain</type>
            <size>38196</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE5LTExLTE4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBBYnN0cmFjdEV2ZW50
TG9vcCB0byBFdmVudExvb3AgYW5kIG1vdmUgdG8gaXRzIG93biBjcHAgZmlsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVz
IEFic3RyYWN0RXZlbnRMb29wIHRvIEV2ZW50TG9vcCBhbmQgbW92ZSB0byBpdHMgb3duIGNwcCBm
aWxlIHNpbmNlCisgICAgICAgIHIyNTI2MDcgY29uc29saWRhdGVkIHRoZSBldmVudCBsb29wIGlt
cGxlbWVudGF0aW9ucyBpbiBXaW5kb3dFdmVudExvb3AgYW5kIFdvcmtlckV2ZW50TG9vcC4KKwor
ICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKiBk
b20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9XaW5kb3dF
dmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6OnF1ZXVl
VGFzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9vcDo6cmVz
dW1lR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RFdmVudExvb3A6
OnN0b3BHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEV2ZW50TG9v
cDo6c2NoZWR1bGVUb1J1bklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0RXZlbnRMb29wOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3RFdmVudExvb3A6OmNsZWFyQWxsVGFza3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2s6OkV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hU
YXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVl
dWVUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRMb29wLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisKIDIwMTktMTEtMTUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hhcmUgbW9yZSBj
b2RlIGJldHdlZW4gV2luZG93RXZlbnRMb29wIGFuZCBXb3JrZXJFdmVudExvb3AgYnkgaW50cm9k
dWNpbmcgRXZlbnRMb29wVGFza0dyb3VwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjUy
NjA1KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg4
NCw2ICs4ODQsNyBAQCBkb20vRXZlbnQuY3BwCiBkb20vRXZlbnRDb250ZXh0LmNwcAogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorZG9tL0V2ZW50TG9v
cC5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9FdmVudFRh
cmdldC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRPTUNhY2hlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CiAjaW5jbHVkZSAiSlNGZXRjaFJlcXVlc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRPTUNhY2hlU3RvcmFnZS5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNp
bmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDExICszMSwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5j
bHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCi0jaW5jbHVk
ZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1D
bGllbnQuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9X
ZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTI2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjUyNjA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAs
NyBAQAogCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDIy
MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVG
MTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZFRkFGMTIxRTVGQjlGMTAw
RTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVGQUYxMDFFNUZCOUUxMDBFN0YzNEIgLyogTG93UG93
ZXJNb2RlTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0Ex
MjM2NzlBQjMwMEI0NTA4NSAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2
NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExvb3AuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkZDQjYxODFBNzA4MjBF
MDBDNUEyMUUgLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3
MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBF
NzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5k
ZXJpbmdNb2RlLmggKi87IH07CkBAIC0xMTEzMSw3ICsxMTEzMSw3IEBACiAJCTlCMDk4QkUwMUYz
RDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpTU3RyaW5nQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4QkU3MUYzRDZB
RjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAvKiBXb3Jr
ZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwQUJDQTQy
MzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTExNzUs
NiArMTExNzUsNyBAQAogCQk5Qjg2NEYwMTIzNEMwMjhBMDA2RDEwRUIgLyogSWRsZVJlcXVlc3RP
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg2NEYwNTIzNEMwODkzMDA2RDEwRUIgLyogSWRsZUNhbGxiYWNrQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlQ2FsbGJhY2tDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0RjA3MjM0QzA4QTMwMDZEMTBFQiAvKiBJZGxl
Q2FsbGJhY2tDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkbGVDYWxsYmFja0Nv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjkxRENDQzIzODM3
OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9v
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCOTI5OUIwMUY2Nzk2QTQwMDY3
MjNDMiAvKiBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZW50UmVhZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCOUNBREE3MjE2NURDNzYwMEU4RDg1OCAvKiBKU011dGF0aW9uUmVj
b3JkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NF
NDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzgwMyw3ICsyNzgwNCw2IEBACiAJCQkJN0NEMEUyQkQxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKIAkJCQk3Q0QwRTJCQzFGODBBNTZF
MDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0
Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAv
KiBBYnN0cmFjdEV2ZW50TG9vcC5oICovLAogCQkJCTdDNTIyMjk3MUUxREFFMTYwMDJDQjhGNyAv
KiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCiAJCQkJN0M1MjIyOTgxRTFEQUUxNjAwMkNCOEY3
IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCiAJCQkJN0NEMEJBMDIxQjhGNzlDOTAwNUNFQkJF
IC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCAqLywKQEAgLTI4MDA2LDYgKzI4MDA2
LDggQEAKIAkJCQk4NUFGQTc0MTBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRMaXN0ZW5lci5pZGwg
Ki8sCiAJCQkJQUQ0NDk1RjExNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuY3Bw
ICovLAogCQkJCUFENDQ5NUYyMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmgg
Ki8sCisJCQkJOUI5MURDQ0MyMzgzNzkyRDAwMEVFRTBGIC8qIEV2ZW50TG9vcC5jcHAgKi8sCisJ
CQkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEV2ZW50TG9vcC5oICovLAogCQkJCTgzRkU3
Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICovLAogCQkJCTgzRkU3
Q0E2MURBOUYxNjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8sCiAJCQkJOTM5
ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3BwICovLApAQCAtMjg3NzcsNyAr
Mjg3NzksNiBAQAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9y
dFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NkYwMkExQTIzNzM3Rjgz
MDAxMDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1
MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk1MzQsNyArMjk1MzUsNiBAQAogCQkJCUNFMDU3RkE2MTIy
MDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUQyRjhFMDMyMzQ0NzRFRjAwOTkzQjY4IC8qIERvY3VtZW50UGljdHVy
ZUluUGljdHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEE0RjQ4QUExNkIwREZDMDAwRURCQjI5
IC8qIFN0eWxlU2NvcGVSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4
ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkJEQjVEQzIyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY2MCw2ICsyOTY2MCw3IEBA
CiAJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM1RkJDNDUwOUJBMDBCOTAwRTIzMEIxIC8qIEV2ZW50TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFENDQ5NUY0MTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExp
c3RlbmVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQg
LyogRXZlbnRMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIz
N0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTg4NUM0MDhC
N0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjcxNEUy
MTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMjY5
LDYgKzMyMjcwLDcgQEAKIAkJCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyog
U3R5bGVSdWxlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1
NjQ1IC8qIFN0eWxlU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBNEY0OEFBMTZCMERGQzAw
MEVEQkIyOSAvKiBTdHlsZVNjb3BlUnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1
RTNFMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlENjM4MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdBM0FDNjFDNUVBQzlEMDBDQ0JGQTcgLyogU3R5
bGVTaGFyaW5nUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkVm
ZmVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblBsYXliYWNrRXZlbnQuaCIKICNpbmNsdWRlICJB
bmltYXRpb25UaW1lbGluZS5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRlY2xhcmF0
aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFRpbWVsaW5lLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpT
V2ViQW5pbWF0aW9uLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50
TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHJldmlzaW9uIDI1MjYwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmFjZVNl
dC5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJET01Qcm9t
aXNlUHJveHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdEV2
ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50
TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RF
dmVudExvb3AuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJUYXNrU291cmNlLmgiCi0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFdmVudExvb3BUYXNr
R3JvdXA7Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci0KLWNsYXNzIEV2ZW50TG9vcFRhc2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50
TG9vcFRhc2spOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wdWJsaWM6Ci0gICAg
dmlydHVhbCB+RXZlbnRMb29wVGFzaygpID0gZGVmYXVsdDsKLQotICAgIFRhc2tTb3VyY2UgdGFz
a1NvdXJjZSgpIHsgcmV0dXJuIG1fdGFza1NvdXJjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlKCkgPSAwOwotCi0gICAgRXZlbnRMb29wVGFza0dyb3VwKiBncm91cCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JvdXAuZ2V0KCk7IH0KLQotcHJvdGVjdGVkOgotICAgIEV2ZW50TG9vcFRhc2soVGFz
a1NvdXJjZSwgRXZlbnRMb29wVGFza0dyb3VwJik7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVGFz
a1NvdXJjZSBtX3Rhc2tTb3VyY2U7Ci0gICAgV2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+IG1f
Z3JvdXA7Ci19OwotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
ZWJhcHBhcGlzLmh0bWwjZXZlbnQtbG9vcAotY2xhc3MgQWJzdHJhY3RFdmVudExvb3AgOiBwdWJs
aWMgUmVmQ291bnRlZDxBYnN0cmFjdEV2ZW50TG9vcD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxB
YnN0cmFjdEV2ZW50TG9vcD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkFic3RyYWN0RXZlbnRM
b29wKCkgPSBkZWZhdWx0OwotCi0gICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkICgpPiBUYXNrRnVu
Y3Rpb247Ci0gICAgdm9pZCBxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+
JiYpOwotCi0gICAgdm9pZCByZXN1bWVHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKLSAgICB2
b2lkIHN0b3BHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKLQotcHJvdGVjdGVkOgotICAgIEFi
c3RyYWN0RXZlbnRMb29wKCkgPSBkZWZhdWx0OwotICAgIHZvaWQgcnVuKCk7Ci0gICAgdm9pZCBj
bGVhckFsbFRhc2tzKCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzY2hlZHVsZVRvUnVuSWZOZWVk
ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUb1J1bigpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgPSAwOwotCi0gICAgLy8gVXNlIGEgZ2xvYmFs
IHF1ZXVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdGFzayBxdWV1ZXMgc2luY2UgSFRNTDUgc3BlYyBh
bGxvd3MgVUEgdG8gcGljayBhcmJpdHJhcnkgcXVldWUuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxFdmVudExvb3BUYXNrPj4gbV90YXNrczsKLSAgICBXZWFrSGFzaFNldDxFdmVudExvb3BU
YXNrR3JvdXA+IG1fZ3JvdXBzV2l0aFN1c3BlbmVkVGFza3M7Ci0gICAgYm9vbCBtX2lzU2NoZWR1
bGVkVG9SdW4geyBmYWxzZSB9OwotfTsKLQotY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPEV2ZW50TG9vcFRhc2tHcm91cD4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEV2ZW50TG9vcFRhc2tHcm91cCk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0KLXB1YmxpYzoKLSAgICBFdmVudExvb3BUYXNrR3JvdXAoQWJzdHJhY3RFdmVudExvb3Am
IGV2ZW50TG9vcCkKLSAgICAgICAgOiBtX2V2ZW50TG9vcChtYWtlV2Vha1B0cihldmVudExvb3Ap
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1hdGNoZXNUYXNrKEV2ZW50TG9vcFRhc2smIHRh
c2spIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvKiBncm91cCA9IHRhc2suZ3JvdXAoKTsKLSAg
ICAgICAgcmV0dXJuIGdyb3VwID09IHRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9wQW5kRGlz
Y2FyZEFsbFRhc2tzKCkKLSAgICB7Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsK
LSAgICAgICAgaWYgKGF1dG8qIGV2ZW50TG9vcCA9IG1fZXZlbnRMb29wLmdldCgpKQotICAgICAg
ICAgICAgZXZlbnRMb29wLT5zdG9wR3JvdXAoKnRoaXMpOwotICAgIH0KLQotICAgIHZvaWQgc3Vz
cGVuZCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7
Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOwotICAgICAgICAvLyBXZSBkb24n
dCByZW1vdmUgc3VzcGVuZGVkIHRhc2tzIHRvIHByZXNlcnZlIHRoZSBvcmRlcmluZy4KLSAgICAg
ICAgLy8gQWJzdHJhY3RFdmVudExvb3A6OnJ1biBjaGVja3Mgd2hldGhlciBlYWNoIHRhc2sncyBn
cm91cCBpcyBzdXNwZW5kZWQgb3Igbm90LgotICAgIH0KLQotICAgIHZvaWQgcmVzdW1lKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKTsKLSAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOwotICAgICAgICBpZiAoYXV0byogZXZlbnRMb29wID0g
bV9ldmVudExvb3AuZ2V0KCkpCi0gICAgICAgICAgICBldmVudExvb3AtPnJlc3VtZUdyb3VwKCp0
aGlzKTsKLSAgICB9Ci0KLSAgICBib29sIGlzU3RvcHBlZFBlcm1hbmVudGx5KCkgeyByZXR1cm4g
bV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZDsgfQotICAgIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJl
dHVybiBtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQ7IH0KLQotICAgIHZvaWQgcXVldWVUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrPiYmIHRhc2spCi0gICAgewotICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9ldmVudExvb3ApCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIEFTU0VSVCh0YXNrLT5ncm91cCgpID09IHRoaXMpOwotICAgICAg
ICBtX2V2ZW50TG9vcC0+cXVldWVUYXNrKFdURk1vdmUodGFzaykpOwotICAgIH0KLQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIEFic3RyYWN0RXZlbnRMb29w
OjpUYXNrRnVuY3Rpb24mJik7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVp
bnQ4X3QgeyBSdW5uaW5nLCBTdXNwZW5kZWQsIFN0b3BwZWQgfTsKLQotICAgIFdlYWtQdHI8QWJz
dHJhY3RFdmVudExvb3A+IG1fZXZlbnRMb29wOwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
UnVubmluZyB9OwotfTsKLQotaW5saW5lIEV2ZW50TG9vcFRhc2s6OkV2ZW50TG9vcFRhc2soVGFz
a1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXApCi0gICAgOiBtX3Rhc2tT
b3VyY2Uoc291cmNlKQotICAgICwgbV9ncm91cChtYWtlV2Vha1B0cihncm91cCkpCi17IH0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5jcHAJKHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJBYnN0
cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjUyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgY2xhc3MgSW5wdXRDdXJzb3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
QWJzdHJhY3RFdmVudExvb3A7CitjbGFzcyBFdmVudExvb3A7CiBjbGFzcyBBcHBsaWNhdGlvblN0
YXRlQ2hhbmdlTGlzdGVuZXI7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0cjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRXZlbnRMb29wOjpxdWV1ZVRhc2soc3RkOjp1
bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQodGFzay0+Z3Jv
dXAoKSk7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBzY2hlZHVsZVRvUnVu
SWZOZWVkZWQoKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKK30KKwordm9p
ZCBFdmVudExvb3A6OnJlc3VtZUdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXApCit7Cisg
ICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBpZiAoIW1fZ3JvdXBzV2l0aFN1c3Bl
bmVkVGFza3MuY29udGFpbnMoZ3JvdXApKQorICAgICAgICByZXR1cm47CisgICAgc2NoZWR1bGVU
b1J1bklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpzdG9wR3JvdXAoRXZlbnRMb29w
VGFza0dyb3VwJiBncm91cCkKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAg
IG1fdGFza3MucmVtb3ZlQWxsTWF0Y2hpbmcoWyZncm91cF0gKGF1dG8mIHRhc2spIHsKKyAgICAg
ICAgcmV0dXJuIGdyb3VwLm1hdGNoZXNUYXNrKCp0YXNrKTsKKyAgICB9KTsKK30KKwordm9pZCBF
dmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCit7CisgICAgaWYgKG1faXNTY2hlZHVs
ZWRUb1J1bikKKyAgICAgICAgcmV0dXJuOworICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRydWU7
CisgICAgc2NoZWR1bGVUb1J1bigpOworfQorCit2b2lkIEV2ZW50TG9vcDo6cnVuKCkKK3sKKyAg
ICBtX2lzU2NoZWR1bGVkVG9SdW4gPSBmYWxzZTsKKyAgICBpZiAobV90YXNrcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFza3MgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFz
a3MsIHsgfSk7CisgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVhcigpOworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4+IHJlbWFpbmluZ1Rhc2tzOworICAg
IGZvciAoYXV0byYgdGFzayA6IHRhc2tzKSB7CisgICAgICAgIGF1dG8qIGdyb3VwID0gdGFzay0+
Z3JvdXAoKTsKKyAgICAgICAgaWYgKCFncm91cCB8fCBncm91cC0+aXNTdG9wcGVkUGVybWFuZW50
bHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChncm91cC0+aXNTdXNw
ZW5kZWQoKSkgeworICAgICAgICAgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5hZGQoZ3Jv
dXApOworICAgICAgICAgICAgcmVtYWluaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB0YXNrLT5leGVjdXRl
KCk7CisgICAgfQorICAgIGZvciAoYXV0byYgdGFzayA6IG1fdGFza3MpCisgICAgICAgIHJlbWFp
bmluZ1Rhc2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3Rhc2tzID0gV1RGTW92ZShy
ZW1haW5pbmdUYXNrcyk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpjbGVhckFsbFRhc2tzKCkKK3sK
KyAgICBtX3Rhc2tzLmNsZWFyKCk7CisgICAgbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVh
cigpOworfQorCit2b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxFdmVudExvb3BUYXNrPiYmIHRhc2spCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlN0b3BwZWQgfHwgIW1fZXZlbnRMb29wKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHRh
c2stPmdyb3VwKCkgPT0gdGhpcyk7CisgICAgbV9ldmVudExvb3AtPnF1ZXVlVGFzayhXVEZNb3Zl
KHRhc2spKTsKK30KKworY2xhc3MgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2sgOiBwdWJs
aWMgRXZlbnRMb29wVGFzayB7CitwdWJsaWM6CisgICAgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRj
aFRhc2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEV2ZW50
TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgICAgIDogRXZlbnRMb29wVGFzayhz
b3VyY2UsIGdyb3VwKQorICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpIGZpbmFsIHsgbV9mdW5jdGlvbigpOyB9
CisKK3ByaXZhdGU6CisgICAgRXZlbnRMb29wOjpUYXNrRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307
CisKK3ZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpxdWV1ZVRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIHF1ZXVl
VGFzayhtYWtlVW5pcXVlPEV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hUYXNrPihzb3VyY2UsICp0
aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oOjI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRM
b29wVGFza0dyb3VwOworY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworCitjbGFzcyBFdmVudExvb3BUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShFdmVudExvb3BUYXNrKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGlj
OgorICAgIHZpcnR1YWwgfkV2ZW50TG9vcFRhc2soKSA9IGRlZmF1bHQ7CisKKyAgICBUYXNrU291
cmNlIHRhc2tTb3VyY2UoKSB7IHJldHVybiBtX3Rhc2tTb3VyY2U7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZSgpID0gMDsKKworICAgIEV2ZW50TG9vcFRhc2tHcm91cCogZ3JvdXAoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBFdmVudExvb3BU
YXNrKFRhc2tTb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYpOworCitwcml2YXRlOgorICAgIGNv
bnN0IFRhc2tTb3VyY2UgbV90YXNrU291cmNlOworICAgIFdlYWtQdHI8RXZlbnRMb29wVGFza0dy
b3VwPiBtX2dyb3VwOworfTsKKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKK2NsYXNzIEFic3RyYWN0RXZlbnRMb29w
IDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8QWJzdHJhY3RFdmVudExvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFj
dEV2ZW50TG9vcCgpID0gZGVmYXVsdDsKKworICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoKT4g
VGFza0Z1bmN0aW9uOworICAgIHZvaWQgcXVldWVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPiYmKTsKKworICAgIHZvaWQgcmVzdW1lR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJik7
CisgICAgdm9pZCBzdG9wR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJik7CisKK3Byb3RlY3RlZDoK
KyAgICBBYnN0cmFjdEV2ZW50TG9vcCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJ1bigpOworICAg
IHZvaWQgY2xlYXJBbGxUYXNrcygpOworCitwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVUb1J1
bklmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVG9SdW4oKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVzZSBh
IGdsb2JhbCBxdWV1ZSBpbnN0ZWFkIG9mIG11bHRpcGxlIHRhc2sgcXVldWVzIHNpbmNlIEhUTUw1
IHNwZWMgYWxsb3dzIFVBIHRvIHBpY2sgYXJiaXRyYXJ5IHF1ZXVlLgorICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4+IG1fdGFza3M7CisgICAgV2Vha0hhc2hTZXQ8RXZl
bnRMb29wVGFza0dyb3VwPiBtX2dyb3Vwc1dpdGhTdXNwZW5lZFRhc2tzOworICAgIGJvb2wgbV9p
c1NjaGVkdWxlZFRvUnVuIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIEV2ZW50TG9vcFRhc2tHcm91
cCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShFdmVudExvb3BUYXNrR3JvdXApOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgRXZlbnRMb29wVGFza0dyb3VwKEFic3RyYWN0RXZl
bnRMb29wJiBldmVudExvb3ApCisgICAgICAgIDogbV9ldmVudExvb3AobWFrZVdlYWtQdHIoZXZl
bnRMb29wKSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtYXRjaGVzVGFzayhFdmVudExvb3BU
YXNrJiB0YXNrKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byogZ3JvdXAgPSB0YXNrLmdyb3Vw
KCk7CisgICAgICAgIHJldHVybiBncm91cCA9PSB0aGlzOworICAgIH0KKworICAgIHZvaWQgc3Rv
cEFuZERpc2NhcmRBbGxUYXNrcygpCisgICAgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN0
b3BwZWQ7CisgICAgICAgIGlmIChhdXRvKiBldmVudExvb3AgPSBtX2V2ZW50TG9vcC5nZXQoKSkK
KyAgICAgICAgICAgIGV2ZW50TG9vcC0+c3RvcEdyb3VwKCp0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1c3BlbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN0
b3BwZWQpOworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgLy8g
V2UgZG9uJ3QgcmVtb3ZlIHN1c3BlbmRlZCB0YXNrcyB0byBwcmVzZXJ2ZSB0aGUgb3JkZXJpbmcu
CisgICAgICAgIC8vIEFic3RyYWN0RXZlbnRMb29wOjpydW4gY2hlY2tzIHdoZXRoZXIgZWFjaCB0
YXNrJ3MgZ3JvdXAgaXMgc3VzcGVuZGVkIG9yIG5vdC4KKyAgICB9CisKKyAgICB2b2lkIHJlc3Vt
ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7Cisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICAgICAgaWYgKGF1dG8qIGV2ZW50
TG9vcCA9IG1fZXZlbnRMb29wLmdldCgpKQorICAgICAgICAgICAgZXZlbnRMb29wLT5yZXN1bWVH
cm91cCgqdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBpc1N0b3BwZWRQZXJtYW5lbnRseSgpIHsg
cmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQ7IH0KKyAgICBib29sIGlzU3VzcGVuZGVk
KCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkOyB9CisKKyAgICB2b2lkIHF1
ZXVlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4mJiB0YXNrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1fZXZlbnRMb29wKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQodGFzay0+Z3JvdXAoKSA9PSB0aGlzKTsK
KyAgICAgICAgbV9ldmVudExvb3AtPnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBBYnN0cmFjdEV2
ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYpOworCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsgUnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CisKKyAgICBXZWFr
UHRyPEFic3RyYWN0RXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKyAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlJ1bm5pbmcgfTsKK307CisKK2lubGluZSBFdmVudExvb3BUYXNrOjpFdmVudExvb3BU
YXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwKQorICAgIDog
bV90YXNrU291cmNlKHNvdXJjZSkKKyAgICAsIG1fZ3JvdXAobWFrZVdlYWtQdHIoZ3JvdXApKQor
eyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgJ
KHJldmlzaW9uIDI1MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksOSArNTksOSBAQCBwcml2YXRlOgogfTsKIAogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AK
LWNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVu
dExvb3A+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QWJzdHJhY3RFdmVudExvb3A+IHsKK2NsYXNz
IEV2ZW50TG9vcCA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50TG9vcD4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxFdmVudExvb3A+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BYnN0cmFjdEV2ZW50
TG9vcCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5FdmVudExvb3AoKSA9IGRlZmF1bHQ7CiAK
ICAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKCk+IFRhc2tGdW5jdGlvbjsKICAgICB2b2lkIHF1
ZXVlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4mJik7CkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BHcm91cChFdmVudExvb3BUYXNrR3JvdXAmKTsKIAog
cHJvdGVjdGVkOgotICAgIEFic3RyYWN0RXZlbnRMb29wKCkgPSBkZWZhdWx0OworICAgIEV2ZW50
TG9vcCgpID0gZGVmYXVsdDsKICAgICB2b2lkIHJ1bigpOwogICAgIHZvaWQgY2xlYXJBbGxUYXNr
cygpOwogCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cCA6IHB1Ymxp
YyBDYW5NYWsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIEV2
ZW50TG9vcFRhc2tHcm91cChBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRMb29wKQorICAgIEV2ZW50
TG9vcFRhc2tHcm91cChFdmVudExvb3AmIGV2ZW50TG9vcCkKICAgICAgICAgOiBtX2V2ZW50TG9v
cChtYWtlV2Vha1B0cihldmVudExvb3ApKQogICAgIHsKICAgICB9CkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCk7CiAg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOwogICAgICAgICAvLyBXZSBkb24ndCBy
ZW1vdmUgc3VzcGVuZGVkIHRhc2tzIHRvIHByZXNlcnZlIHRoZSBvcmRlcmluZy4KLSAgICAgICAg
Ly8gQWJzdHJhY3RFdmVudExvb3A6OnJ1biBjaGVja3Mgd2hldGhlciBlYWNoIHRhc2sncyBncm91
cCBpcyBzdXNwZW5kZWQgb3Igbm90LgorICAgICAgICAvLyBFdmVudExvb3A6OnJ1biBjaGVja3Mg
d2hldGhlciBlYWNoIHRhc2sncyBncm91cCBpcyBzdXNwZW5kZWQgb3Igbm90LgogICAgIH0KIAog
ICAgIHZvaWQgcmVzdW1lKCkKQEAgLTEyNywyMCArMTI3LDEzIEBAIHB1YmxpYzoKICAgICBib29s
IGlzU3RvcHBlZFBlcm1hbmVudGx5KCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZDsgfQogICAgIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpT
dXNwZW5kZWQ7IH0KIAotICAgIHZvaWQgcXVldWVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPiYmIHRhc2spCi0gICAgewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Rv
cHBlZCB8fCAhbV9ldmVudExvb3ApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VS
VCh0YXNrLT5ncm91cCgpID09IHRoaXMpOwotICAgICAgICBtX2V2ZW50TG9vcC0+cXVldWVUYXNr
KFdURk1vdmUodGFzaykpOwotICAgIH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcXVldWVU
YXNrKFRhc2tTb3VyY2UsIEFic3RyYWN0RXZlbnRMb29wOjpUYXNrRnVuY3Rpb24mJik7CisgICAg
dm9pZCBxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIEV2ZW50TG9vcDo6VGFza0Z1
bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsg
UnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CiAKLSAgICBXZWFrUHRyPEFic3RyYWN0RXZl
bnRMb29wPiBtX2V2ZW50TG9vcDsKKyAgICBXZWFrUHRyPEV2ZW50TG9vcD4gbV9ldmVudExvb3A7
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSdW5uaW5nIH07CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1MjYw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFic3RyYWN0RXZlbnRMb29wOworY2xhc3MgRXZlbnRM
b29wOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3Mg
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCShy
ZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksMzggKzU5LDYgQEAgV2luZG93RXZlbnRMb29wOjp+V2lu
ZG93RXZlbnRMb29wKCkKICAgICBSRUxFQVNFX0FTU0VSVChkaWRSZW1vdmUpOwogfQogCi12b2lk
IEFic3RyYWN0RXZlbnRMb29wOjpxdWV1ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRh
c2s+JiYgdGFzaykKLXsKLSAgICBBU1NFUlQodGFzay0+Z3JvdXAoKSk7Ci0gICAgQVNTRVJUKGlz
Q29udGV4dFRocmVhZCgpKTsKLSAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKLSAgICBtX3Rh
c2tzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6
cmVzdW1lR3JvdXAoRXZlbnRMb29wVGFza0dyb3VwJiBncm91cCkKLXsKLSAgICBBU1NFUlQoaXND
b250ZXh0VGhyZWFkKCkpOwotICAgIGlmICghbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jb250
YWlucyhncm91cCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBBYnN0cmFjdEV2ZW50TG9vcDo6c3RvcEdyb3VwKEV2ZW50TG9vcFRhc2tH
cm91cCYgZ3JvdXApCi17Ci0gICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX3Rh
c2tzLnJlbW92ZUFsbE1hdGNoaW5nKFsmZ3JvdXBdIChhdXRvJiB0YXNrKSB7Ci0gICAgICAgIHJl
dHVybiBncm91cC5tYXRjaGVzVGFzaygqdGFzayk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQWJzdHJh
Y3RFdmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCi17Ci0gICAgaWYgKG1faXNTY2hl
ZHVsZWRUb1J1bikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRy
dWU7Ci0gICAgc2NoZWR1bGVUb1J1bigpOwotfQotCiB2b2lkIFdpbmRvd0V2ZW50TG9vcDo6c2No
ZWR1bGVUb1J1bigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbZXZlbnRMb29wID0gbWFrZVJl
ZigqdGhpcyldICgpIHsKQEAgLTEwMyw1NiArNzEsNCBAQCBib29sIFdpbmRvd0V2ZW50TG9vcDo6
aXNDb250ZXh0VGhyZWFkKCkgCiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi12b2lk
IEFic3RyYWN0RXZlbnRMb29wOjpydW4oKQotewotICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IGZh
bHNlOwotICAgIGlmIChtX3Rhc2tzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKLSAgICBtX2dyb3Vwc1dp
dGhTdXNwZW5lZFRhc2tzLmNsZWFyKCk7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dExvb3BUYXNrPj4gcmVtYWluaW5nVGFza3M7Ci0gICAgZm9yIChhdXRvJiB0YXNrIDogdGFza3Mp
IHsKLSAgICAgICAgYXV0byogZ3JvdXAgPSB0YXNrLT5ncm91cCgpOwotICAgICAgICBpZiAoIWdy
b3VwIHx8IGdyb3VwLT5pc1N0b3BwZWRQZXJtYW5lbnRseSgpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgaWYgKGdyb3VwLT5pc1N1c3BlbmRlZCgpKSB7Ci0gICAgICAgICAgICBt
X2dyb3Vwc1dpdGhTdXNwZW5lZFRhc2tzLmFkZChncm91cCk7Ci0gICAgICAgICAgICByZW1haW5p
bmdUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRhc2stPmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRv
JiB0YXNrIDogbV90YXNrcykKLSAgICAgICAgcmVtYWluaW5nVGFza3MuYXBwZW5kKFdURk1vdmUo
dGFzaykpOwotICAgIG1fdGFza3MgPSBXVEZNb3ZlKHJlbWFpbmluZ1Rhc2tzKTsKLX0KLQotdm9p
ZCBBYnN0cmFjdEV2ZW50TG9vcDo6Y2xlYXJBbGxUYXNrcygpCi17Ci0gICAgbV90YXNrcy5jbGVh
cigpOwotICAgIG1fZ3JvdXBzV2l0aFN1c3BlbmVkVGFza3MuY2xlYXIoKTsKLX0KLQotY2xhc3Mg
RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZlbnRMb29wVGFzayB7Ci1w
dWJsaWM6Ci0gICAgRXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3Vy
Y2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFic3RyYWN0RXZlbnRMb29wOjpUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKLSAgICAgICAgOiBFdmVudExvb3BUYXNrKHNvdXJjZSwgZ3JvdXAp
Ci0gICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCBleGVjdXRlKCkgZmluYWwgeyBtX2Z1bmN0aW9uKCk7IH0KLQotcHJpdmF0ZToK
LSAgICBBYnN0cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uIG1fZnVuY3Rpb247Ci19OwotCi12
b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBBYnN0
cmFjdEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIHF1
ZXVlVGFzayhtYWtlVW5pcXVlPEV2ZW50TG9vcEZ1bmN0aW9uRGlzcGF0Y2hUYXNrPihzb3VyY2Us
ICp0aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTI2MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkV2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBEb2N1bWVudDsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d2ViYXBwYXBpcy5odG1sI3dpbmRvdy1ldmVudC1sb29wCi1jbGFzcyBXaW5kb3dFdmVudExvb3Ag
ZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RFdmVudExvb3AgeworY2xhc3MgV2luZG93RXZlbnRMb29w
IGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXaW5k
b3dFdmVudExvb3A+IGVuc3VyZUZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAkocmV2
aXNpb24gMjUyNjA3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZpbGVSZWFkZXIuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZpbGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRl
ICJJbnRlcm5hbHMuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJB
YnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
LmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVs
aW5lLmgiCkBAIC03MSw2ICs3MCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJF
dmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJs
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkocmV2aXNpb24gMjUyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTUgKzI1LDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWJzdHJhY3RF
dmVudExvb3AuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dExvb3AuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKIAotY2xhc3MgV29ya2VyRXZlbnRMb29wIGZp
bmFsIDogcHVibGljIEFic3RyYWN0RXZlbnRMb29wLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBFdmVudExv
b3AsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIC8v
IEV4cGxpY2l0bHkgdGFrZSBXb3JrZXJHbG9iYWxTY29wZSBhbmQgV29ya2xldEdsb2JhbFNjb3Bl
IGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLgogICAgIHN0YXRpYyBSZWY8V29ya2VyRXZlbnRM
b29wPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJ
KHJldmlzaW9uIDI1MjYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBA
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJBYnN0cmFjdEV2ZW50
TG9vcC5oIgogI2luY2x1ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURMVHlw
ZXMuaCIK
</data>
<flag name="review"
          id="399595"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>