<?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>203714</bug_id>
          
          <creation_ts>2019-10-31 19:17:06 -0700</creation_ts>
          <short_desc>Add a helper function to schedule a task to dispatch an event to ActiveDOMObject</short_desc>
          <delta_ts>2019-11-04 10:10:00 -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>203680</dependson>
          <blocked>203667</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586211</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 19:17:06 -0700</bug_when>
    <thetext>Refactor a helper function added in https://bugs.webkit.org/show_bug.cgi?id=203680 to ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586621</commentid>
    <comment_count>1</comment_count>
      <attachid>382643</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:05:01 -0700</bug_when>
    <thetext>Created attachment 382643
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586626</commentid>
    <comment_count>2</comment_count>
      <attachid>382645</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:08:03 -0700</bug_when>
    <thetext>Created attachment 382645
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586632</commentid>
    <comment_count>3</comment_count>
      <attachid>382646</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:13:46 -0700</bug_when>
    <thetext>Created attachment 382646
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586638</commentid>
    <comment_count>4</comment_count>
      <attachid>382646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-01 16:24:58 -0700</bug_when>
    <thetext>Comment on attachment 382646
WIP3

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

We use Function instead of WTF::Function.

&gt; Source/WebCore/dom/ActiveDOMObject.h:122
&gt; +    void queueTaskToDispatchEventOnThis(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, WTF::Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })

Maybe this could be static since we already pass the target as parameter? Then we don&apos;t need &quot;OnThis&quot; in the name.

&gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; +    void queueTaskKeepingThisObjectAlive(T&amp; thisObject, TaskSource source, WTF::Function&lt;void ()&gt;&amp;&amp; task)

Ditto, could this be static?

&gt; Source/WebCore/dom/ActiveDOMObject.h:146
&gt; +    void queueTaskInEventLoop(TaskSource, WTF::Function&lt;void ()&gt;&amp;&amp;);

That one is fine as non-static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586640</commentid>
    <comment_count>5</comment_count>
      <attachid>382646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-01 16:30:13 -0700</bug_when>
    <thetext>Comment on attachment 382646
WIP3

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

&gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:122
&gt;&gt; +    void queueTaskToDispatchEventOnThis(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, WTF::Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })
&gt; 
&gt; Maybe this could be static since we already pass the target as parameter? Then we don&apos;t need &quot;OnThis&quot; in the name.

Maybe this could be simply queueEvent() ?

&gt; Source/WebCore/dom/ActiveDOMObject.h:126
&gt; +        queueTaskInEventLoop(source, [protectedTarget = makeRef(target), movedEvent = WTFMove(event), doWork = WTFMove(postDispatchWork), activity = makePendingActivity(target)] () {

Seems like maybe this could use your queueTaskKeepingThisObjectAlive() implementation? It does keep this alive.

&gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt;&gt; +    void queueTaskKeepingThisObjectAlive(T&amp; thisObject, TaskSource source, WTF::Function&lt;void ()&gt;&amp;&amp; task)
&gt; 
&gt; Ditto, could this be static?

I would have just called this queueTask() (with the other being queueEvent()). This name really is super long, although it has the benefit to be very clear :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586643</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:33:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 382646 [details]
&gt; WIP3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382646&amp;action=review
&gt; 
&gt; We use Function instead of WTF::Function.
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:122
&gt; &gt; +    void queueTaskToDispatchEventOnThis(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, WTF::Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })
&gt; 
&gt; Maybe this could be static since we already pass the target as parameter?
&gt; Then we don&apos;t need &quot;OnThis&quot; in the name.

We can do that.

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; &gt; +    void queueTaskKeepingThisObjectAlive(T&amp; thisObject, TaskSource source, WTF::Function&lt;void ()&gt;&amp;&amp; task)
&gt; 
&gt; Ditto, could this be static?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586644</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-01 16:33:52 -0700</bug_when>
    <thetext>And BTW, I think those are going to be super helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586647</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:38:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 382646 [details]
&gt; WIP3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382646&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:122
&gt; &gt;&gt; +    void queueTaskToDispatchEventOnThis(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, WTF::Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })
&gt; &gt; 
&gt; &gt; Maybe this could be static since we already pass the target as parameter? Then we don&apos;t need &quot;OnThis&quot; in the name.
&gt; 
&gt; Maybe this could be simply queueEvent() ?

Hm... I&apos;d keep the verbose name for now because it&apos;s too confusing with other event queues and scoped events, etc... Once we get rid of those confusing things, we can rename it to a something simple.

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:126
&gt; &gt; +        queueTaskInEventLoop(source, [protectedTarget = makeRef(target), movedEvent = WTFMove(event), doWork = WTFMove(postDispatchWork), activity = makePendingActivity(target)] () {
&gt; 
&gt; Seems like maybe this could use your queueTaskKeepingThisObjectAlive()
&gt; implementation? It does keep this alive.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586648</commentid>
    <comment_count>9</comment_count>
      <attachid>382650</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:39:01 -0700</bug_when>
    <thetext>Created attachment 382650
WIP4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586651</commentid>
    <comment_count>10</comment_count>
      <attachid>382650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-01 16:42:49 -0700</bug_when>
    <thetext>Comment on attachment 382650
WIP4

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

&gt; Source/WebCore/dom/ActiveDOMObject.h:131
&gt; +    static void queueTaskToDispatchEvent(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })

I am personally not convinced yet of the value of the last postDispatchWork parameter. As a developer, it feels like if I had to do some other work besides dispatching the event, I&apos;d use queueTaskKeepingThisObjectAlive() and do the dispatch &amp; other work myself. Also, why would you get a postWork but no preWork?

&gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; +        queueTaskToDispatchEvent(target, source, [target, doWork = WTFMove(postDispatchWork)] () {

I think you meant queueTaskKeepingThisObjectAlive ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586652</commentid>
    <comment_count>11</comment_count>
      <attachid>382651</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:44:11 -0700</bug_when>
    <thetext>Created attachment 382651
WIP5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586654</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:46:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 382650 [details]
&gt; WIP4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382650&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:131
&gt; &gt; +    static void queueTaskToDispatchEvent(EventTargetType&amp; target, TaskSource source, Ref&lt;EventType&gt;&amp;&amp; event, Function&lt;void (EventTargetType&amp;)&gt;&amp;&amp; postDispatchWork = { })
&gt; 
&gt; I am personally not convinced yet of the value of the last postDispatchWork
&gt; parameter. As a developer, it feels like if I had to do some other work
&gt; besides dispatching the event, I&apos;d use queueTaskKeepingThisObjectAlive() and
&gt; do the dispatch &amp; other work myself. Also, why would you get a postWork but
&gt; no preWork?

That&apos;s a good point. Now that we have queueTaskKeepingThisObjectAlive, we probably don&apos;t need this.

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; &gt; +        queueTaskToDispatchEvent(target, source, [target, doWork = WTFMove(postDispatchWork)] () {
&gt; 
&gt; I think you meant queueTaskKeepingThisObjectAlive ?

Oops, yeah, that&apos;s a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586655</commentid>
    <comment_count>13</comment_count>
      <attachid>382652</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:46:24 -0700</bug_when>
    <thetext>Created attachment 382652
WIP6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586659</commentid>
    <comment_count>14</comment_count>
      <attachid>382653</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 16:50:41 -0700</bug_when>
    <thetext>Created attachment 382653
WIP7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586679</commentid>
    <comment_count>15</comment_count>
      <attachid>382660</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-01 17:17:03 -0700</bug_when>
    <thetext>Created attachment 382660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586741</commentid>
    <comment_count>16</comment_count>
      <attachid>382660</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-02 10:13:10 -0700</bug_when>
    <thetext>Comment on attachment 382660
Patch

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

&gt; Source/WebCore/dom/ActiveDOMObject.h:125
&gt; +        object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.makePendingActivity(object), movedTask = WTFMove(task)] () {

Doesn&apos;t have to be in this patch but it feels like makePendingActivity() should be static too. movedTask can simply be named task.

&gt; Source/WebCore/dom/ActiveDOMObject.h:133
&gt; +        ASSERT(!event-&gt;target());

Why this assertion?

&gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; +        queueTaskKeepingThisObjectAlive(target, source, [&amp;target, movedEvent = WTFMove(event)] () mutable {

How is capturing target by reference safe here?
movedEvent can simply be called event.

&gt; Source/WebCore/dom/ActiveDOMObject.h:143
&gt; +    void queueTaskInEventLoop(TaskSource, WTF::Function&lt;void ()&gt;&amp;&amp;);

WTF:: in unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586754</commentid>
    <comment_count>17</comment_count>
      <attachid>382660</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-02 11:58:24 -0700</bug_when>
    <thetext>Comment on attachment 382660
Patch

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

Patch will need rebaselining.

&gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt;&gt; +        queueTaskKeepingThisObjectAlive(target, source, [&amp;target, movedEvent = WTFMove(event)] () mutable {
&gt; 
&gt; How is capturing target by reference safe here?
&gt; movedEvent can simply be called event.

Oh, queueTaskKeepingThisObjectAlive() protected target so it is safe to capture it by reference indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586803</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-02 22:06:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 382660 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382660&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:125
&gt; &gt; +        object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.makePendingActivity(object), movedTask = WTFMove(task)] () {
&gt; 
&gt; Doesn&apos;t have to be in this patch but it feels like makePendingActivity()
&gt; should be static too. movedTask can simply be named task.
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:133
&gt; &gt; +        ASSERT(!event-&gt;target());
&gt; 
&gt; Why this assertion?

This is to prevent the mistake of someone creating an event with a specific target that&apos;s different from &quot;target&quot; being passed to this function.

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:134
&gt; &gt; +        queueTaskKeepingThisObjectAlive(target, source, [&amp;target, movedEvent = WTFMove(event)] () mutable {
&gt; 
&gt; How is capturing target by reference safe here?
&gt; movedEvent can simply be called event.

It&apos;s because queueTaskKeepingThisObjectAlive keeps target alive as you described below.

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:143
&gt; &gt; +    void queueTaskInEventLoop(TaskSource, WTF::Function&lt;void ()&gt;&amp;&amp;);
&gt; 
&gt; WTF:: in unnecessary

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586804</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-02 22:08:12 -0700</bug_when>
    <thetext>I&apos;d rename queueTaskKeepingThisObjectAlive to queueTaskKeepingObjectAlive now that it&apos;s a static function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586807</commentid>
    <comment_count>20</comment_count>
      <attachid>382660</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-02 23:12:09 -0700</bug_when>
    <thetext>Comment on attachment 382660
Patch

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

&gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:133
&gt;&gt; +        ASSERT(!event-&gt;target());
&gt; 
&gt; Why this assertion?

I think this assertion should be  tweaked to allow event.target() to be target. I do not see why the event target has to be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586812</commentid>
    <comment_count>21</comment_count>
      <attachid>382697</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-03 00:31:10 -0700</bug_when>
    <thetext>Created attachment 382697
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586813</commentid>
    <comment_count>22</comment_count>
      <attachid>382698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-03 00:31:42 -0700</bug_when>
    <thetext>Created attachment 382698
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586814</commentid>
    <comment_count>23</comment_count>
      <attachid>382698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-03 00:31:57 -0700</bug_when>
    <thetext>Comment on attachment 382698
Patch for landing

Wait for EWS once more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586815</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-03 00:33:41 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; Comment on attachment 382660 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382660&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:133
&gt; &gt;&gt; +        ASSERT(!event-&gt;target());
&gt; &gt; 
&gt; &gt; Why this assertion?
&gt; 
&gt; I think this assertion should be  tweaked to allow event.target() to be
&gt; target. I do not see why the event target has to be null.

Sure, did that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586861</commentid>
    <comment_count>25</comment_count>
      <attachid>382698</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-03 12:02:03 -0800</bug_when>
    <thetext>Comment on attachment 382698
Patch for landing

Clearing flags on attachment: 382698

Committed r251975: &lt;https://trac.webkit.org/changeset/251975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586862</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-03 12:02:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586864</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-03 12:03:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/56850274&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382643</attachid>
            <date>2019-11-01 16:05:01 -0700</date>
            <delta_ts>2019-11-01 16:08:03 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip203714.patch</filename>
            <type>text/plain</type>
            <size>14929</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMw
LDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7
CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291
cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNl
LCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTExNywxMCArMTE4LDM0IEBACiAgICAgZXhwbGljaXQgQWN0aXZlRE9N
T2JqZWN0KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4K
KyAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9uVGhpcyhFdmVudFRhcmdldFR5cGUm
IHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQsCisgICAg
ICAgIFdURjo6RnVuY3Rpb248dm9pZCAoRXZlbnRUYXJnZXRUeXBlJik+JiYgcG9zdERpc3BhdGNo
V29yayA9IHsgfSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0aGlzID09ICZ0YXJnZXQpOworICAg
ICAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSk7CisgICAgICAgIHF1ZXVlVGFza0luRXZlbnRM
b29wKHNvdXJjZSwgW3Byb3RlY3RlZFRhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgbW92ZWRFdmVu
dCA9IFdURk1vdmUoZXZlbnQpLCBkb1dvcmsgPSBXVEZNb3ZlKHBvc3REaXNwYXRjaFdvcmspLCBh
Y3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkodGFyZ2V0KV0gKCkgeworICAgICAgICAgICAg
cHJvdGVjdGVkVGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1vdmVkRXZlbnQuZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKGRvV29yaykKKyAgICAgICAgICAgICAgICBkb1dvcmsocHJvdGVjdGVkVGFyZ2V0
LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICB2b2lkIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoVCYgdGhpc09iamVjdCwg
VGFza1NvdXJjZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCisgICAgeworICAgICAg
ICBBU1NFUlQodGhpcyA9PSAmdGhpc09iamVjdCk7CisgICAgICAgIHF1ZXVlVGFza0luRXZlbnRM
b29wKHNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBt
YWtlUGVuZGluZ0FjdGl2aXR5KHRoaXNPYmplY3QpLCBtb3ZlZFRhc2sgPSBXVEZNb3ZlKHRhc2sp
XSAoKSB7CisgICAgICAgICAgICBtb3ZlZFRhc2soKTsKKyAgICAgICAgfSk7CisgICAgfQorCiBw
cml2YXRlOgogICAgIGVudW0gQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlIHsgQ2hl
Y2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfTsKICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSk7CiAK
KyAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2UsIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4mJik7CisKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVuZElmTmVlZGVkV2FzQ2Fs
bGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90IHsKKyAgICBET01NYW5pcHVs
YXRpb24sCisgICAgRmlsZVJlYWRpbmcsCisgICAgSWRsZVRhc2ssCisgICAgTmV0d29ya2luZywK
KyAgICBVc2VySW50ZXJhY3Rpb24KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDcgKzEwOSw3IEBACiAKICAgICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLndoZW5S
ZWdpc3RyYXRpb25SZWFkeShjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSwgY29udGV4dC51cmwo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYmIHJlZ2lzdHJh
dGlvbkRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcmVnaXN0cmF0aW9uRGF0YSA9IFdURk1vdmUocmVn
aXN0cmF0aW9uRGF0YSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3Ry
YXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSk7CiAgICAg
ICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24p
KTsKICAgICAgICAgICAgIH0pOwpAQCAtMjcxLDcgKzI3MSw3IEBACiAgICAgfQogCiAgICAgZW5z
dXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5E
YXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFi
bGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzAzLDcgKzMwMyw3IEBACiAKICAgICBhdXRvJiBjb250ZXh0
ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rp
b24oKS5nZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3Jp
Z2luKCkuZGF0YSgpIH0sIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byYmIHJlZ2lzdHJh
dGlvbkRhdGFzKSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZWdpc3RyYXRpb25EYXRhcyA9IFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YXMpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJh
dGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9
IFdURjo6bWFwKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpLCBbJl0oYXV0byYmIHJlZ2lzdHJh
dGlvbkRhdGEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1v
dmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzUsNyArMzM1LDcg
QEAKICAgICBpZiAoIXByb21pc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVUYXNr
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgeworICAg
IHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0
YWJsZSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChleGNlcHRpb24pOwogICAgIH0pOwogfQpA
QCAtMzgwLDcgKzM4MCw3IEBACiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklk
ZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZF
eGl0RWFybHkpXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgZGF0YSA9
IFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCwgbm90aWZ5SWZFeGl0RWFy
bHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhpdEVhcmx5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbm90
aWZ5SWZFeGl0RWFybHkucmVsZWFzZSgpOwogCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpAQCAtNDM1LDcgKzQzNSw3IEBACiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IGpvYi50YWtl
UHJvbWlzZSgpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRh
c2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XSgp
IG11dGFibGUgewogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHVucmVnaXN0
cmF0aW9uUmVzdWx0KTsKICAgICB9KTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQAogICAgIENPTlRB
SU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQ6IEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVz
Iiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IGpvYi50YWtlUHJv
bWlzZSgpKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgeworICAgICAgICBx
dWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92
ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdU
Rk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTU1Miw5ICs1NTIsNyBA
QAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAjZW5kaWYKIAotICAgIGVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsK
KyAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRPblRoaXMoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5n
ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKQEAgLTYxOCwxNiArNjE2
LDYgQEAKICAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIFdURk1vdmUoZXZlbnRMaXN0ZW5lciksIG9wdGlvbnMpOwogfQogCi12
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+ZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgKmNvbnRleHQsIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewotICAgICAgICB0YXNr
KCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAkocmV2aXNpb24gMjUxOTQ4
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNiBAQAogCiBwcml2YXRlOgogICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgPSB7IH0pIGZpbmFs
OwotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382645</attachid>
            <date>2019-11-01 16:08:03 -0700</date>
            <delta_ts>2019-11-01 16:13:46 -0700</delta_ts>
            <desc>WIP2</desc>
            <filename>wip203714b.patch</filename>
            <type>text/plain</type>
            <size>14927</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMw
LDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7
CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291
cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNl
LCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTExNywxMCArMTE4LDMzIEBACiAgICAgZXhwbGljaXQgQWN0aXZlRE9N
T2JqZWN0KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4K
KyAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9uVGhpcyhFdmVudFRhcmdldFR5cGUm
IHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQsIFdURjo6
RnVuY3Rpb248dm9pZCAoRXZlbnRUYXJnZXRUeXBlJik+JiYgcG9zdERpc3BhdGNoV29yayA9IHsg
fSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0aGlzID09ICZ0YXJnZXQpOworICAgICAgICBBU1NF
UlQoIWV2ZW50LT50YXJnZXQoKSk7CisgICAgICAgIHF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJj
ZSwgW3Byb3RlY3RlZFRhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgbW92ZWRFdmVudCA9IFdURk1v
dmUoZXZlbnQpLCBkb1dvcmsgPSBXVEZNb3ZlKHBvc3REaXNwYXRjaFdvcmspLCBhY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkodGFyZ2V0KV0gKCkgeworICAgICAgICAgICAgcHJvdGVjdGVk
VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1vdmVkRXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgaWYg
KGRvV29yaykKKyAgICAgICAgICAgICAgICBkb1dvcmsocHJvdGVjdGVkVGFyZ2V0LmdldCgpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lk
IHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoVCYgdGhpc09iamVjdCwgVGFza1NvdXJj
ZSBzb3VyY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHRoaXMgPT0gJnRoaXNPYmplY3QpOworICAgICAgICBxdWV1ZVRhc2tJbkV2ZW50TG9v
cChzb3VyY2UsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gbWFr
ZVBlbmRpbmdBY3Rpdml0eSh0aGlzT2JqZWN0KSwgbW92ZWRUYXNrID0gV1RGTW92ZSh0YXNrKV0g
KCkgeworICAgICAgICAgICAgbW92ZWRUYXNrKCk7CisgICAgICAgIH0pOworICAgIH0KKwogcHJp
dmF0ZToKICAgICBlbnVtIENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSB7IENoZWNr
ZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0IH07CiAgICAgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBDaGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUpOwogCisg
ICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYpOworCiAgICAgdW5zaWduZWQgbV9wZW5kaW5nQWN0aXZpdHlDb3VudCB7IDAgfTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxl
ZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBUYXNrU291cmNlIDogdWludDhfdCB7CisgICAgRE9NTWFuaXB1bGF0
aW9uLAorICAgIEZpbGVSZWFkaW5nLAorICAgIElkbGVUYXNrLAorICAgIE5ldHdvcmtpbmcsCisg
ICAgVXNlckludGVyYWN0aW9uCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSw3ICsxMDksNyBAQAogCiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS53aGVuUmVn
aXN0cmF0aW9uUmVhZHkoY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCksIGNvbnRleHQudXJsKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZWdpc3RyYXRp
b25EYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCByZWdpc3Ry
YXRpb25EYXRhID0gV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lz
dHJhdGlvbkRhdGEpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0
aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAg
ICAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7
CiAgICAgICAgICAgICB9KTsKQEAgLTI3MSw3ICsyNzEsNyBAQAogICAgIH0KIAogICAgIGVuc3Vy
ZVNXQ2xpZW50Q29ubmVjdGlvbigpLm1hdGNoUmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0
YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIHBhcnNlZFVSTCwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
cmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMwMyw3ICszMDMsNyBAQAogCiAgICAgYXV0byYgY29udGV4dCA9
ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9u
KCkuZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdp
bigpLmRhdGEoKSB9LCBjb250ZXh0LnVybCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGF1dG8mJiByZWdpc3RyYXRp
b25EYXRhcykgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGFzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIHJlZ2lzdHJhdGlvbkRhdGFzID0gV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBX
VEY6Om1hcChXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKSwgWyZdKGF1dG8mJiByZWdpc3RyYXRp
b25EYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbkRhdGEpKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzM1LDcgKzMzNSw3IEBA
CiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbl0oKSBtdXRhYmxlIHsKKyAgICBx
dWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFi
bGUgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhjZXB0aW9uKTsKICAgICB9KTsKIH0KQEAg
LTM4MCw3ICszODAsNyBAQAogICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBqb2JJZGVu
dGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNob3VsZE5v
dGlmeVdoZW5SZXNvbHZlZCwgbm90aWZ5SWZFeGl0RWFybHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhp
dEVhcmx5KV0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQsIG5vdGlmeUlmRXhpdEVhcmx5
ID0gV1RGTW92ZShub3RpZnlJZkV4aXRFYXJseSldKCkgbXV0YWJsZSB7CiAgICAgICAgIG5vdGlm
eUlmRXhpdEVhcmx5LnJlbGVhc2UoKTsKIAogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBqb2IudGFrZVBy
b21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRdKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNr
S2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
LCBbcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oKSBt
dXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CiAgICAgfSk7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAKICAgICBDT05UQUlO
RVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0
OiBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBqb2IgJSIgUFJJdTY0ICIsIGVycm9yOiAlcyIs
IGpvYi5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChhdXRvIHByb21pc2UgPSBqb2IudGFrZVByb21p
c2UoKSkgewotICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUo
ZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZN
b3ZlKGV4Y2VwdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CkBAIC01NTIsOSArNTUyLDcgQEAK
ICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogI2VuZGlmCiAKLSAgICBlbnF1ZXVlVGFzayhbdGhpc10gewotICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbnRyb2xsZXJjaGFuZ2VFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Cisg
ICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25UaGlzKCp0aGlzLCBUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbnRyb2xsZXJjaGFuZ2VF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCkBAIC02MTgsMTYgKzYxNiw2
IEBACiAgICAgcmV0dXJuIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGV2ZW50TGlzdGVuZXIpLCBvcHRpb25zKTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnF1ZXVlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYg
dGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvbnRleHQtPmV2ZW50TG9v
cCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sICpjb250ZXh0LCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGlu
Z0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKLSAgICAgICAgdGFzaygp
OwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgJKHJldmlzaW9uIDI1MTk0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDYgQEAKIAogcHJpdmF0ZToKICAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRM
aXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmID0geyB9KSBmaW5hbDsK
LSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNj
aGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382646</attachid>
            <date>2019-11-01 16:13:46 -0700</date>
            <delta_ts>2019-11-01 16:39:01 -0700</delta_ts>
            <desc>WIP3</desc>
            <filename>wip203714c.patch</filename>
            <type>text/plain</type>
            <size>15242</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTMy
LDEzICszMyw2IEBACiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAgICBJZGxl
VGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50
LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJz
dHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUg
IlRhc2tTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTExNywxMCArMTE4
LDMzIEBACiAgICAgZXhwbGljaXQgQWN0aXZlRE9NT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdmly
dHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRh
cmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4KKyAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudE9uVGhpcyhFdmVudFRhcmdldFR5cGUmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2Us
IFJlZjxFdmVudFR5cGU+JiYgZXZlbnQsIFdURjo6RnVuY3Rpb248dm9pZCAoRXZlbnRUYXJnZXRU
eXBlJik+JiYgcG9zdERpc3BhdGNoV29yayA9IHsgfSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0
aGlzID09ICZ0YXJnZXQpOworICAgICAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSk7CisgICAg
ICAgIHF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZFRhcmdldCA9IG1ha2VS
ZWYodGFyZ2V0KSwgbW92ZWRFdmVudCA9IFdURk1vdmUoZXZlbnQpLCBkb1dvcmsgPSBXVEZNb3Zl
KHBvc3REaXNwYXRjaFdvcmspLCBhY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkodGFyZ2V0
KV0gKCkgeworICAgICAgICAgICAgcHJvdGVjdGVkVGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1vdmVk
RXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGRvV29yaykKKyAgICAgICAgICAgICAgICBk
b1dvcmsocHJvdGVjdGVkVGFyZ2V0LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0
QWxpdmUoVCYgdGhpc09iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJiB0YXNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMgPT0gJnRoaXNPYmplY3Qp
OworICAgICAgICBxdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSh0aGlzT2JqZWN0
KSwgbW92ZWRUYXNrID0gV1RGTW92ZSh0YXNrKV0gKCkgeworICAgICAgICAgICAgbW92ZWRUYXNr
KCk7CisgICAgICAgIH0pOworICAgIH0KKwogcHJpdmF0ZToKICAgICBlbnVtIENoZWNrZWRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VHlwZSB7IENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0IH07
CiAgICAgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBDaGVja2VkU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFR5cGUpOwogCisgICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9v
cChUYXNrU291cmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOworCiAgICAgdW5zaWduZWQg
bV9wZW5kaW5nQWN0aXZpdHlDb3VudCB7IDAgfTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
Ym9vbCBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UYXNrU291cmNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBUYXNrU291cmNl
IDogdWludDhfdCB7CisgICAgRE9NTWFuaXB1bGF0aW9uLAorICAgIEZpbGVSZWFkaW5nLAorICAg
IElkbGVUYXNrLAorICAgIE5ldHdvcmtpbmcsCisgICAgVXNlckludGVyYWN0aW9uCit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAy
NTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQAogCiAgICAgICAg
IGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBlbnN1
cmVTV0NsaWVudENvbm5lY3Rpb24oKS53aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29udGV4dC50b3BP
cmlnaW4oKS5kYXRhKCksIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGVucXVldWVUYXNrKFt0aGlzLCByZWdpc3RyYXRpb25EYXRhID0gV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlz
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHJl
Z2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1v
dmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5y
ZXNvbHZlKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CiAgICAgICAgICAgICB9KTsKQEAgLTI3MSw3
ICsyNzEsNyBAQAogICAgIH0KIAogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLm1hdGNo
UmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0sIHBhcnNlZFVSTCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMyw3ICsz
MDMsNyBAQAogCiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0
eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBjb250ZXh0LnVybCgp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhcykgbXV0YWJsZSB7Ci0gICAgICAg
IGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0
aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlZ2lzdHJh
dGlvbkRhdGFzID0gV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBXVEY6Om1hcChXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGFzKSwgWyZdKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKICAgICAg
ICAgICAgIH0pOwpAQCAtMzM1LDcgKzMzNSw3IEBACiAgICAgaWYgKCFwcm9taXNlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGV4Y2VwdGlvbl0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgewogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoZXhjZXB0aW9uKTsKICAgICB9KTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQAogICAgIGlmICgh
cHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCwgbm90aWZ5SWZF
eGl0RWFybHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhpdEVhcmx5KV0oKSBtdXRhYmxlIHsKKyAgICBx
dWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmll
ciA9IGpvYi5pZGVudGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQsIG5vdGlmeUlmRXhpdEVhcmx5ID0gV1RGTW92ZShub3RpZnlJZkV4aXRFYXJs
eSldKCkgbXV0YWJsZSB7CiAgICAgICAgIG5vdGlmeUlmRXhpdEVhcmx5LnJlbGVhc2UoKTsKIAog
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Omdl
dE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKGRhdGEp
KTsKQEAgLTQzNSw3ICs0MzUsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZW5x
dWV1ZVRhc2soW3Byb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1
bHRdKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlz
ZSgpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgfSk7CiB9CkBA
IC00ODIsNyArNDgyLDcgQEAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRCgiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZv
ciBqb2IgJSIgUFJJdTY0ICIsIGVycm9yOiAlcyIsIGpvYi5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlm
IChhdXRvIHByb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSkgewotICAgICAgICBlbnF1ZXVlVGFz
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0
aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgICAgICB9
KTsKICAgICB9CkBAIC01NTIsOSArNTUyLDcgQEAKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKLSAgICBlbnF1ZXVlVGFz
ayhbdGhpc10gewotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNvbnRyb2xsZXJjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7CisgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
T25UaGlzKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbnRyb2xsZXJjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3RvcCgpCkBAIC02MTgsMTYgKzYxNiw2IEBACiAgICAgcmV0dXJuIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGV2ZW50
TGlzdGVuZXIpLCBvcHRpb25zKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpl
bnF1ZXVlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sICpjb250ZXh0LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdU
Rk1vdmUodGFzayldIHsKLSAgICAgICAgdGFzaygpOwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcg
Kzk0LDYgQEAKIAogcHJpdmF0ZToKICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRM
aXN0ZW5lck9wdGlvbnMmID0geyB9KSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VySm9iPiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382650</attachid>
            <date>2019-11-01 16:39:01 -0700</date>
            <delta_ts>2019-11-01 16:44:00 -0700</delta_ts>
            <desc>WIP4</desc>
            <filename>wip203714d.patch</filename>
            <type>text/plain</type>
            <size>15132</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTMy
LDEzICszMyw2IEBACiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAgICBJZGxl
VGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50
LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJz
dHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTAgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC0xMTcsMTAgKzEx
OSwzMSBAQAogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCYpOwogICAgIHZp
cnR1YWwgfkFjdGl2ZURPTU9iamVjdCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKFQmIG9iamVjdCwg
VGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICB7CisgICAg
ICAgIG9iamVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRPYmplY3Qg
PSBtYWtlUmVmKG9iamVjdCksIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSh0aGlzT2Jq
ZWN0KSwgbW92ZWRUYXNrID0gV1RGTW92ZSh0YXNrKV0gKCkgeworICAgICAgICAgICAgbW92ZWRU
YXNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV2ZW50
VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBlPgorICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5cGUmIHRhcmdldCwgVGFza1NvdXJjZSBzb3Vy
Y2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQsIEZ1bmN0aW9uPHZvaWQgKEV2ZW50VGFyZ2V0VHlw
ZSYpPiYmIHBvc3REaXNwYXRjaFdvcmsgPSB7IH0pCisgICAgeworICAgICAgICBBU1NFUlQoIWV2
ZW50LT50YXJnZXQoKSk7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCh0YXJnZXQs
IHNvdXJjZSwgW3RhcmdldCwgZG9Xb3JrID0gV1RGTW92ZShwb3N0RGlzcGF0Y2hXb3JrKV0gKCkg
eworICAgICAgICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQobW92ZWRFdmVudC5nZXQoKSk7Cisg
ICAgICAgICAgICBpZiAoZG9Xb3JrKQorICAgICAgICAgICAgICAgIGRvV29yayhwcm90ZWN0ZWRU
YXJnZXQuZ2V0KCkpOworICAgICAgICB9KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBD
aGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUgeyBDaGVja2VkU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB9OwogICAgIEFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Q2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlKTsKIAorICAgIHZvaWQgcXVldWVUYXNr
SW5FdmVudExvb3AoVGFza1NvdXJjZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKKwogICAg
IHVuc2lnbmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIGJvb2wgbV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQgeyBmYWxzZSB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UYXNrU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3Mg
VGFza1NvdXJjZSA6IHVpbnQ4X3QgeworICAgIERPTU1hbmlwdWxhdGlvbiwKKyAgICBGaWxlUmVh
ZGluZywKKyAgICBJZGxlVGFzaywKKyAgICBOZXR3b3JraW5nLAorICAgIFVzZXJJbnRlcmFjdGlv
bgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAko
cmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAK
IAogICAgICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkud2hlblJlZ2lzdHJhdGlvblJlYWR5KGNv
bnRleHQudG9wT3JpZ2luKCkuZGF0YSgpLCBjb250ZXh0LnVybCgpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcmVnaXN0cmF0aW9uRGF0YSA9IFdURk1v
dmUocmVnaXN0cmF0aW9uRGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
IFt0aGlzLCByZWdpc3RyYXRpb25EYXRhID0gV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0
aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKICAgICAgICAgICAgICAgICBtX3JlYWR5
UHJvbWlzZS0+cmVzb2x2ZShXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwogICAgICAgICAgICAgfSk7
CkBAIC0yNzEsNyArMjcxLDcgQEAKICAgICB9CiAKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rp
b24oKS5tYXRjaFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9y
aWdpbigpLmRhdGEoKSB9LCBwYXJzZWRVUkwsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVl
VGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0zMDMsNyArMzAzLDcgQEAKIAogICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmdldFJlZ2lzdHJhdGlv
bnMoU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgY29u
dGV4dC51cmwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YXMpIG11dGFibGUg
ewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHJlZ2lzdHJhdGlvbkRhdGFzID0gV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCByZWdpc3RyYXRpb25EYXRhcyA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25zID0gV1RGOjptYXAoV1RGTW92ZShy
ZWdpc3RyYXRpb25EYXRhcyksIFsmXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgewogICAgICAg
ICAgICAgICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRh
KSk7CiAgICAgICAgICAgICB9KTsKQEAgLTMzNSw3ICszMzUsNyBAQAogICAgIGlmICghcHJvbWlz
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ1Ro
aXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbl0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgfSk7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAK
ICAgICBpZiAoIXByb21pc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVUYXNrKFt0
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVu
dGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQs
IG5vdGlmeUlmRXhpdEVhcmx5ID0gV1RGTW92ZShub3RpZnlJZkV4aXRFYXJseSldKCkgbXV0YWJs
ZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpv
YklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5
SWZFeGl0RWFybHkpXSgpIG11dGFibGUgewogICAgICAgICBub3RpZnlJZkV4aXRFYXJseS5yZWxl
YXNlKCk7CiAKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RG
TW92ZShkYXRhKSk7CkBAIC00MzUsNyArNDM1LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0
cmF0aW9uUmVzdWx0XSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBqb2Iu
dGFrZVByb21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRdKCkgbXV0YWJsZSB7CiAgICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAg
IH0pOwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBACiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdDogRmFpbGVkIHRvIGZldGNo
IHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJvcjogJXMiLCBqb2IuaWRlbnRpZmllcigp
LnRvVUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBpZiAoYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCkpIHsKLSAgICAgICAg
ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZN
b3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlz
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsK
ICAgICAgICAgfSk7CiAgICAgfQpAQCAtNTUyLDkgKzU1Miw3IEBACiAgICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCi0gICAg
ZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jb250cm9sbGVyY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOworICAgIHF1ZXVlVGFza1RvRGlz
cGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jb250cm9sbGVyY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0b3AoKQpAQCAtNjE4LDE2ICs2MTYsNiBAQAogICAgIHJldHVybiBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShl
dmVudExpc3RlbmVyKSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6ZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCAqY29udGV4dCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRhc2sg
PSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRhc2soKTsKLSAgICB9KTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NCw3ICs5NCw2IEBACiAKIHByaXZhdGU6CiAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2
ZW50TGlzdGVuZXJPcHRpb25zJiA9IHsgfSkgZmluYWw7Ci0gICAgdm9pZCBlbnF1ZXVlVGFzayhG
dW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZUpvYihzdGQ6OnVuaXF1ZV9w
dHI8U2VydmljZVdvcmtlckpvYj4mJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382651</attachid>
            <date>2019-11-01 16:44:11 -0700</date>
            <delta_ts>2019-11-01 16:46:24 -0700</delta_ts>
            <desc>WIP5</desc>
            <filename>wip203714e.patch</filename>
            <type>text/plain</type>
            <size>15142</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTMy
LDEzICszMyw2IEBACiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAgICBJZGxl
VGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50
LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJz
dHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTAgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC0xMTcsMTAgKzEx
OSwzMSBAQAogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCYpOwogICAgIHZp
cnR1YWwgfkFjdGl2ZURPTU9iamVjdCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKFQmIG9iamVjdCwg
VGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICB7CisgICAg
ICAgIG9iamVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRPYmplY3Qg
PSBtYWtlUmVmKG9iamVjdCksIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eShvYmplY3Qp
LCBtb3ZlZFRhc2sgPSBXVEZNb3ZlKHRhc2spXSAoKSB7CisgICAgICAgICAgICBtb3ZlZFRhc2so
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJn
ZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwg
UmVmPEV2ZW50VHlwZT4mJiBldmVudCwgRnVuY3Rpb248dm9pZCAoRXZlbnRUYXJnZXRUeXBlJik+
JiYgcG9zdERpc3BhdGNoV29yayA9IHsgfSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghZXZlbnQt
PnRhcmdldCgpKTsKKyAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KHRhcmdldCwgc291
cmNlLCBbdGFyZ2V0LCBtb3ZlZEV2ZW50ID0gV1RGTW92ZShldmVudCksIGRvV29yayA9IFdURk1v
dmUocG9zdERpc3BhdGNoV29yayldICgpIHsKKyAgICAgICAgICAgIHRhcmdldC5kaXNwYXRjaEV2
ZW50KG1vdmVkRXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGRvV29yaykKKyAgICAgICAg
ICAgICAgICBkb1dvcmsodGFyZ2V0KTsKKyAgICAgICAgfSk7CisgICAgfQorCiBwcml2YXRlOgog
ICAgIGVudW0gQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlIHsgQ2hlY2tlZFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgfTsKICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSk7CiAKKyAgICB2b2lk
IHF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4m
Jik7CisKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9OwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkIHsgZmFs
c2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
bnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90IHsKKyAgICBET01NYW5pcHVsYXRpb24sCisg
ICAgRmlsZVJlYWRpbmcsCisgICAgSWRsZVRhc2ssCisgICAgTmV0d29ya2luZywKKyAgICBVc2Vy
SW50ZXJhY3Rpb24KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcg
KzEwOSw3IEBACiAKICAgICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLndoZW5SZWdpc3RyYXRp
b25SZWFkeShjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSwgY29udGV4dC51cmwoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEp
IG11dGFibGUgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHJlZ2lzdHJhdGlvbkRh
dGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
cXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBbdGhpcywgcmVnaXN0cmF0aW9uRGF0YSA9IFdURk1vdmUocmVnaXN0cmF0aW9u
RGF0YSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSk7CiAgICAgICAgICAgICAg
ICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKICAgICAg
ICAgICAgIH0pOwpAQCAtMjcxLDcgKzI3MSw3IEBACiAgICAgfQogCiAgICAgZW5zdXJlU1dDbGll
bnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29u
dGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQp
IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzAzLDcgKzMwMyw3IEBACiAKICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRS
ZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0sIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFz
KSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZWdpc3RyYXRpb25EYXRhcyA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMp
XSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFz
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IFdURjo6bWFw
KFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpLCBbJl0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEp
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0
T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzUsNyArMzM1LDcgQEAKICAgICBp
ZiAoIXByb21pc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVUYXNrKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFz
a0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0YWJsZSB7CiAg
ICAgICAgIHByb21pc2UtPnJlamVjdChleGNlcHRpb24pOwogICAgIH0pOwogfQpAQCAtMzgwLDcg
KzM4MCw3IEBACiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1
ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIg
PSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkp
XSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCwgbm90aWZ5SWZFeGl0RWFybHkgPSBXVEZN
b3ZlKG5vdGlmeUlmRXhpdEVhcmx5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbm90aWZ5SWZFeGl0
RWFybHkucmVsZWFzZSgpOwogCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KnRoaXMsIFdURk1vdmUoZGF0YSkpOwpAQCAtNDM1LDcgKzQzNSw3IEBACiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgp
LCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5n
VGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9t
aXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XSgpIG11dGFibGUg
ewogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHVucmVnaXN0cmF0aW9uUmVz
dWx0KTsKICAgICB9KTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQAogICAgIENPTlRBSU5FUl9SRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxl
ZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpKSB7
Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0
aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRp
b24pXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhj
ZXB0aW9uKSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTU1Miw5ICs1NTIsNyBAQAogICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKIAotICAgIGVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKQEAgLTYxOCwxNiArNjE2LDYgQEAKICAgICByZXR1
cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IFdURk1vdmUoZXZlbnRMaXN0ZW5lciksIG9wdGlvbnMpOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotewotICAg
IGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250
ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgKmNvbnRleHQsIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewotICAgICAgICB0YXNrKCk7Ci0gICAgfSk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtOTQsNyArOTQsNiBAQAogCiBwcml2YXRlOgogICAgIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBj
b25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwotICAgIHZvaWQgZW5x
dWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2Ioc3Rk
Ojp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382652</attachid>
            <date>2019-11-01 16:46:24 -0700</date>
            <delta_ts>2019-11-01 16:49:45 -0700</delta_ts>
            <desc>WIP6</desc>
            <filename>wip203714f.patch</filename>
            <type>text/plain</type>
            <size>14995</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTMy
LDEzICszMyw2IEBACiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAgICBJZGxl
VGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50
LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJz
dHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQAogICAgIHJldHVybiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4dCwgV1RGTW92ZSh0YXNrKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTAgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC0xMTcsMTAgKzEx
OSwyOSBAQAogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCYpOwogICAgIHZp
cnR1YWwgfkFjdGl2ZURPTU9iamVjdCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKFQmIG9iamVjdCwg
VGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICB7CisgICAg
ICAgIG9iamVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRPYmplY3Qg
PSBtYWtlUmVmKG9iamVjdCksIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eShvYmplY3Qp
LCBtb3ZlZFRhc2sgPSBXVEZNb3ZlKHRhc2spXSAoKSB7CisgICAgICAgICAgICBtb3ZlZFRhc2so
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJn
ZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwg
UmVmPEV2ZW50VHlwZT4mJiBldmVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghZXZlbnQtPnRh
cmdldCgpKTsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSh0YXJnZXQs
IHNvdXJjZSwgW3RhcmdldCwgbW92ZWRFdmVudCA9IFdURk1vdmUoZXZlbnQpXSAoKSB7CisgICAg
ICAgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChtb3ZlZEV2ZW50LmdldCgpKTsKKyAgICAgICAg
fSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRUeXBlIHsgQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfTsKICAgICBBY3RpdmVE
T01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIENoZWNrZWRTY3JpcHRFeGVjdXRpb25D
b250ZXh0VHlwZSk7CiAKKyAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Us
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CisKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdBY3Rp
dml0eUNvdW50IHsgMCB9OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVu
ZElmTmVlZGVkV2FzQ2FsbGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9U
YXNrU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2Uu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90IHsK
KyAgICBET01NYW5pcHVsYXRpb24sCisgICAgRmlsZVJlYWRpbmcsCisgICAgSWRsZVRhc2ssCisg
ICAgTmV0d29ya2luZywKKyAgICBVc2VySW50ZXJhY3Rpb24KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI1MTk0OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBACiAKICAgICAgICAgYXV0byYgY29udGV4
dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgICAgIGVuc3VyZVNXQ2xpZW50Q29u
bmVjdGlvbigpLndoZW5SZWdpc3RyYXRpb25SZWFkeShjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEo
KSwgY29udGV4dC51cmwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
YXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgZW5xdWV1ZVRh
c2soW3RoaXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcmVnaXN0cmF0aW9uRGF0
YSA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSk7CiAgICAgICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92
ZShyZWdpc3RyYXRpb24pKTsKICAgICAgICAgICAgIH0pOwpAQCAtMjcxLDcgKzI3MSw3IEBACiAg
ICAgfQogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24o
U2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2Vk
VVJMLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVU
YXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShy
ZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAzLDcgKzMwMyw3IEBACiAKICAg
ICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBlbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKS5nZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSB7
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
YXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2so
W3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZWdpc3RyYXRpb25EYXRhcyA9IFdU
Rk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
IFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8g
cmVnaXN0cmF0aW9ucyA9IFdURjo6bWFwKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpLCBbJl0o
YXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgfSk7CkBA
IC0zMzUsNyArMzM1LDcgQEAKICAgICBpZiAoIXByb21pc2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgp
IG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBl
eGNlcHRpb25dKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChleGNlcHRpb24p
OwogICAgIH0pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAgaWYgKCFwcm9taXNlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdU
Rk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBp
bmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50
aWZpZXIoKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCwg
bm90aWZ5SWZFeGl0RWFybHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhpdEVhcmx5KV0oKSBtdXRhYmxl
IHsKICAgICAgICAgbm90aWZ5SWZFeGl0RWFybHkucmVsZWFzZSgpOwogCiAgICAgICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpAQCAtNDM1LDcg
KzQzNSw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBlbnF1ZXVlVGFzayhbcHJv
bWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oKSBtdXRhYmxl
IHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0
cmF0aW9uUmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJv
b2xlYW4+KHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB9KTsKIH0KQEAgLTQ4Miw3ICs0ODIs
NyBAQAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJqb2JGaW5p
c2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1
NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGF1dG8gcHJvbWlz
ZSA9IGpvYi50YWtlUHJvbWlzZSgpKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFi
bGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhj
ZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAg
LTU1Miw5ICs1NTIsNyBAQAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIGVucXVldWVUYXNrKFt0aGlzXSB7Ci0g
ICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxl
cmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJv
bGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKQEAgLTYx
OCwxNiArNjE2LDYgQEAKICAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUoZXZlbnRMaXN0ZW5lciksIG9wdGlvbnMp
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVucXVldWVUYXNrKEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgY29udGV4
dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgKmNv
bnRleHQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBlbmRpbmdBY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewotICAg
ICAgICB0YXNrKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAkocmV2aXNp
b24gMjUxOTQ4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNiBAQAogCiBwcml2YXRl
OgogICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IFJlZjxFdmVudExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgPSB7
IH0pIGZpbmFsOwotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382653</attachid>
            <date>2019-11-01 16:50:41 -0700</date>
            <delta_ts>2019-11-01 17:17:01 -0700</delta_ts>
            <desc>WIP7</desc>
            <filename>wip203714g.patch</filename>
            <type>text/plain</type>
            <size>15013</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUxOTUzKQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBACiAgICAg
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20v
U3VjY2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRv
bS9UZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjUxOTUzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
QjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgy
MzVFQUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0
MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUg
LyogVGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1
MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3
RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4
QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9T
dGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlB
Q0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jv
b3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8q
IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjgxNzAsNiArMjgxNzIsNyBAQAogCQkJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAv
KiBTdHlsZWRFbGVtZW50LmNwcCAqLywKIAkJCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5oICovLAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNj
ZXNzT3IuaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5o
ICovLAogCQkJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LywKIAkJCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovLAog
CQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmNwcCAqLywKQEAgLTMyMDI3LDYgKzMyMDMwLDcgQEAKIAkJCQk1MTdBNTMyOTFGNEI5
MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEw
RUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwQUJDQUUy
MzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTJC
NTQzMUY5RjlDQTAwMEU2Nzg3NSAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUUzN0Y2MUZBQTk0MDIwMEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZDMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTk1MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTMy
LDE0ICszMyw2IEBACiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAgICBGaWxl
UmVhZGluZywKLSAgICBJZGxlVGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJbnRlcmFj
dGlvbgotfTsKLQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2Vi
YXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDogcHVibGlj
IFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQgKzEzMSwx
MiBAQAogICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSAmJiAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7CiB9CiAKK3Zv
aWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJj
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4
dCwgV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCAr
MjcsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCkBAIC0xMTcsMTAgKzExOSwyOSBAQAogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChE
b2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkFjdGl2ZURPTU9iamVjdCgpOwogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVj
dEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
dGFzaykKKyAgICB7CisgICAgICAgIG9iamVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2Us
IFtwcm90ZWN0ZWRPYmplY3QgPSBtYWtlUmVmKG9iamVjdCksIGFjdGl2aXR5ID0gbWFrZVBlbmRp
bmdBY3Rpdml0eShvYmplY3QpLCBtb3ZlZFRhc2sgPSBXVEZNb3ZlKHRhc2spXSAoKSB7CisgICAg
ICAgICAgICBtb3ZlZFRhc2soKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CisgICAgc3RhdGlj
IHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBU
YXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghZXZlbnQtPnRhcmdldCgpKTsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ1RoaXNP
YmplY3RBbGl2ZSh0YXJnZXQsIHNvdXJjZSwgW3RhcmdldCwgbW92ZWRFdmVudCA9IFdURk1vdmUo
ZXZlbnQpXSAoKSB7CisgICAgICAgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChtb3ZlZEV2ZW50
LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gQ2hlY2tl
ZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlIHsgQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgfTsKICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIENoZWNr
ZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSk7CiAKKyAgICB2b2lkIHF1ZXVlVGFza0luRXZl
bnRMb29wKFRhc2tTb3VyY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CisKICAgICB1bnNp
Z25lZCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9OwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBib29sIG1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1Rhc2tTb3VyY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
VGFza1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFRhc2tT
b3VyY2UgOiB1aW50OF90IHsKKyAgICBET01NYW5pcHVsYXRpb24sCisgICAgRmlsZVJlYWRpbmcs
CisgICAgSWRsZVRhc2ssCisgICAgTmV0d29ya2luZywKKyAgICBVc2VySW50ZXJhY3Rpb24KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlz
aW9uIDI1MTk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBACiAKICAg
ICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgICAg
IGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLndoZW5SZWdpc3RyYXRpb25SZWFkeShjb250ZXh0
LnRvcE9yaWdpbigpLmRhdGEoKSwgY29udGV4dC51cmwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIG11dGFibGUgewotICAg
ICAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhp
cywgcmVnaXN0cmF0aW9uRGF0YSA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywg
V1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSk7CiAgICAgICAgICAgICAgICAgbV9yZWFkeVByb21p
c2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKICAgICAgICAgICAgIH0pOwpAQCAt
MjcxLDcgKzI3MSw3IEBACiAgICAgfQogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCku
bWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4o
KS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
IFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAz
LDcgKzMwMyw3IEBACiAKICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRSZWdpc3RyYXRpb25zKFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGNvbnRleHQu
dXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKLSAg
ICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZWdp
c3RyYXRpb25EYXRhcyA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpXSgpIG11dGFibGUgewor
ICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVn
aXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IFdURjo6bWFwKFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YXMpLCBbJl0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwog
ICAgICAgICAgICAgfSk7CkBAIC0zMzUsNyArMzM1LDcgQEAKICAgICBpZiAoIXByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21pc2Ut
PnJlamVjdChleGNlcHRpb24pOwogICAgIH0pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAg
aWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmll
cigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3Rp
ZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUgewor
ICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBqb2JJZGVu
dGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNob3VsZE5v
dGlmeVdoZW5SZXNvbHZlZCwgbm90aWZ5SWZFeGl0RWFybHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhp
dEVhcmx5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbm90aWZ5SWZFeGl0RWFybHkucmVsZWFzZSgp
OwogCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUo
ZGF0YSkpOwpAQCAtNDM1LDcgKzQzNSw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpLCB1bnJlZ2lzdHJhdGlv
blJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gam9iLnRha2VQ
cm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB9KTsK
IH0KQEAgLTQ4Miw3ICs0ODIsNyBAQAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxlZCB0byBmZXRjaCBzY3Jp
cHQgZm9yIGpvYiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgaWYgKGF1dG8gcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpKSB7Ci0gICAgICAgIGVucXVl
dWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShl
eGNlcHRpb24pXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTU1Miw5ICs1NTIsNyBAQAogICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIGVucXVl
dWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzdG9wKCkKQEAgLTYxOCwxNiArNjE2LDYgQEAKICAgICByZXR1cm4gRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUoZXZlbnRM
aXN0ZW5lciksIG9wdGlvbnMpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVu
cXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotewotICAgIGF1dG8qIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm47Ci0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgKmNvbnRleHQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RG
TW92ZSh0YXNrKV0gewotICAgICAgICB0YXNrKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaAkocmV2aXNpb24gMjUxOTUzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNiBAQAogCiBwcml2YXRlOgogICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExp
c3RlbmVyT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rp
b248dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJKb2I+JiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382660</attachid>
            <date>2019-11-01 17:17:03 -0700</date>
            <delta_ts>2019-11-03 00:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203714-20191101171702.patch</filename>
            <type>text/plain</type>
            <size>19112</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTExLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlv
biB0byBzY2hlZHVsZSBhIHRhc2sgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgdG8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0d28gaGVscGVyIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHF1ZXVlVGFza0tlZXBpbmdUaGlz
T2JqZWN0QWxpdmUgYW5kIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudAorICAgICAgICB0byBBY3Rp
dmVET01PYmplY3QgYW5kIGRlcGxveWVkIHRoZW0gaW4gU2VydmljZVdvcmtlckNvbnRhaW5lci4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9y
YWwgY2hhbmdlcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9BYnN0cmFjdEV2ZW50
TG9vcC5oOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcCk6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6cXVldWVUYXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQpOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vVGFza1NvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmZpcmVDb250cm9sbGVyQ2hhbmdlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5xdWV1ZVRh
c2spOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmg6CisKIDIwMTktMTEtMDEgIEJlbmphbWluIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYXJrIFZlcnlMb3cgcHJpb3JpdHkgcmVxdWVzdHMgdXNpbmcgYSByZXF1ZXN0
IGRpY3Rpb25hcnkga2V5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI1MTk1MykK
KysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2
ICs0NTEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9t
L1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKICAgICBkb20vU3Vj
Y2Vzc09yLmgKKyAgICBkb20vVGFza1NvdXJjZS5oCiAgICAgZG9tL1RleHQuaAogICAgIGRvbS9U
ZXh0RXZlbnQuaAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjUxOTUzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODU0LDYgKzI4NTQsNyBAQAogCQk5QTUyOEU4NDE3RDdG
NTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRp
bmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFG
MzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgyMzVF
QUQyQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0MDQ0
QjIgLyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUgLyog
VGFza1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1MDBD
NTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVu
dC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURCMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3RkM1
RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggKi87IH07CiAJCTlCMkQ4QTc5
MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEx
MTA4LDYgKzExMTA5LDcgQEAKIAkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0
RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZl
bnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0EzMjM2NzlBQ0Yw
MEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxMzI1N0IxRjNEMkFCQTAwREFBQjY5IC8qIERh
dGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjgxNzIsNiArMjgxNzQsNyBAQAogCQkJCUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBT
dWNjZXNzT3IuaCAqLywKIAkJCQk0NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVj
dGlvbi5jcHAgKi8sCiAJCQkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rp
b24uaCAqLywKKwkJCQk5QjBBQkNBQzIzNkJCNDBBMDBCNDUwODUgLyogVGFza1NvdXJjZS5oICov
LAogCQkJCTBGMjZBN0E3MjA1NEMyMjcwMDkwQTE0MSAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmNwcCAqLywKIAkJCQlDNjUwNDZBODE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxh
dGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oICovLAogCQkJCTY1NTBCNjlCMDk5REYwMjcwMDkw
RDc4MSAvKiBUZXh0LmNwcCAqLywKQEAgLTMwNTc3LDcgKzMwNTgwLDYgQEAKIAkJCQlCQ0UxQzQz
QzBEOTgzMEQzMDAzQjAyRjIgLyogSlNMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNB
ODA2MjAxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREFCNkQyRTE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRTRBQkFDMDYyMzZCMDE2RDAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzkyIC8qIEpTTWVkaWFE
ZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNTczOUJCQjFCNDIwMTJEMDBEMjU4QzEg
LyogSlNNZWRpYURldmljZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMjNBMTI2MTNGNUZBNTkw
MEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMjE0OCw4ICszMjE1MCwxMCBAQAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAv
KiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYw
MEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVF
QjY3QjBFODFEM0JFMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFNEFCQUMwNjIzNkIwMTZEMDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4M0I5Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzVEMzYzNzE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVC
dWlsZGVyQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEFCQUMwNDIzNkFFOTU5MDBGQTQz
NDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFCQUJG
MzIzNjhCOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUY0NDREMEU2NzQ2MjgwMDFDMTI4NyAvKiBTdHlsZUNhY2hlZEltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDAxRTBBNDFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuaCBp
biBIZWFkZXJzICovLApAQCAtMzIzNTMsNyArMzIzNTcsNiBAQAogCQkJCTA4NTRCMDIzMTI1NUU0
RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FBMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBQTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5l
cmF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZEMDEwMERBRjMzNTUwMEY1RjU1QyAvKiBT
VkdTTUlMRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBQzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQxMiw2
ICszMjQxNSw3IEBACiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkI2QjgxMTIyQTdEMzEzMDAzQTJBNjkgLyogVGFiU2l6
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0Nv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMEFCQ0FFMjM2QkI0MzEwMEI0NTA4NSAv
KiBUYXNrU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYy
NjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0M1NjRCODE4
QkFCRUE2MDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0
cmFjdEV2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFj
dEV2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJz
dHJhY3RFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zMiwxNCArMzMsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVu
dW0gY2xhc3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1hbmlwdWxhdGlvbiwKLSAg
ICBGaWxlUmVhZGluZywKLSAgICBJZGxlVGFzaywKLSAgICBOZXR3b3JraW5nLAotICAgIFVzZXJJ
bnRlcmFjdGlvbgotfTsKLQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKIGNsYXNzIEFic3RyYWN0RXZlbnRMb29wIDog
cHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+IHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTE5NTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtMTMwLDQg
KzEzMSwxMiBAQCBib29sIEFjdGl2ZURPTU9iamVjdDo6aXNBbGxvd2VkVG9SdW5TY3JpCiAgICAg
cmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpICYmICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKTsKIH0KIAordm9pZCBBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ugc291cmNlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAg
IGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhzb3VyY2UsICpjb250ZXh0LCBXVEZNb3Zl
KHRhc2spKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24gMjUxOTUzKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNywxMCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgor
I2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTEx
NywxMCArMTE5LDI5IEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY3RpdmVET01PYmplY3Qo
RG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5BY3RpdmVET01PYmplY3QoKTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrS2VlcGluZ1RoaXNPYmpl
Y3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYm
IHRhc2spCisgICAgeworICAgICAgICBvYmplY3QucXVldWVUYXNrSW5FdmVudExvb3Aoc291cmNl
LCBbcHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3QpLCBhY3Rpdml0eSA9IG9iamVjdC5t
YWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIG1vdmVkVGFzayA9IFdURk1vdmUodGFzayldICgp
IHsKKyAgICAgICAgICAgIG1vdmVkVGFzaygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4KKyAg
ICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0
YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnRUeXBlPiYmIGV2ZW50KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFldmVudC0+dGFyZ2V0KCkpOworICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nVGhpc09iamVjdEFsaXZlKHRhcmdldCwgc291cmNlLCBbJnRhcmdldCwgbW92ZWRFdmVudCA9
IFdURk1vdmUoZXZlbnQpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRhcmdldC5kaXNwYXRj
aEV2ZW50KG1vdmVkRXZlbnQuZ2V0KCkpOworICAgICAgICB9KTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgZW51bSBDaGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUgeyBDaGVja2VkU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCB9OwogICAgIEFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlKTsKIAorICAgIHZv
aWQgcXVldWVUYXNrSW5FdmVudExvb3AoVGFza1NvdXJjZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmKTsKKwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgbV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgeworICAgIERPTU1hbmlwdWxhdGlvbiwK
KyAgICBGaWxlUmVhZGluZywKKyAgICBJZGxlVGFzaywKKyAgICBOZXR3b3JraW5nLAorICAgIFVz
ZXJJbnRlcmFjdGlvbgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAkocmV2aXNpb24gMjUxOTUzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NyArMTA5LDcgQEAgYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+IAogCiAg
ICAgICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAg
ICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS53aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29udGV4
dC50b3BPcmlnaW4oKS5kYXRhKCksIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCByZWdpc3RyYXRpb25EYXRhID0gV1RGTW92ZShy
ZWdpc3RyYXRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Ro
aXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMs
IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgICAgIG1fcmVhZHlQcm9t
aXNlLT5yZXNvbHZlKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CiAgICAgICAgICAgICB9KTsKQEAg
LTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJh
CiAgICAgfQogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRp
b24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFy
c2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVl
dWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nVGhpc09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmEKIAogICAgIGF1dG8mIGNvbnRl
eHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVj
dGlvbigpLmdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BP
cmlnaW4oKS5kYXRhKCkgfSwgY29udGV4dC51cmwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiYgcmVnaXN0
cmF0aW9uRGF0YXMpIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlZ2lzdHJhdGlvbkRhdGFzID0gV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZWdpc3RyYXRpb25EYXRhcyA9IFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25z
ID0gV1RGOjptYXAoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyksIFsmXShhdXRvJiYgcmVnaXN0
cmF0aW9uRGF0YSkgewogICAgICAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RG
TW92ZShyZWdpc3RyYXRpb25EYXRhKSk7CiAgICAgICAgICAgICB9KTsKQEAgLTMzNSw3ICszMzUs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpCiAgICAgaWYgKCFw
cm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbl0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVw
aW5nVGhpc09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgewogICAgICAg
ICBwcm9taXNlLT5yZWplY3QoZXhjZXB0aW9uKTsKICAgICB9KTsKIH0KQEAgLTM4MCw3ICszODAs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkCiAgICAgaWYgKCFw
cm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4
aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUgeworICAgIHF1
ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlw
dWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBqb2JJZGVudGlmaWVy
ID0gam9iLmlkZW50aWZpZXIoKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZCwgbm90aWZ5SWZFeGl0RWFybHkgPSBXVEZNb3ZlKG5vdGlmeUlmRXhpdEVhcmx5
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbm90aWZ5SWZFeGl0RWFybHkucmVsZWFzZSgpOwogCiAg
ICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0
T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGF0YSkp
OwpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVz
b2x2ZWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVucXVldWVUYXNrKFtwcm9taXNl
ID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XSgpIG11dGFibGUgewor
ICAgIHF1ZXVlVGFza0tlZXBpbmdUaGlzT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSwgdW5yZWdpc3RyYXRp
b25SZXN1bHRdKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVh
bj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIH0pOwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG8KICAgICBDT05UQUlORVJf
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBG
YWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBqb2IgJSIgUFJJdTY0ICIsIGVycm9yOiAlcyIsIGpv
Yi5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChhdXRvIHByb21pc2UgPSBqb2IudGFrZVByb21pc2Uo
KSkgewotICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4
Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVU
YXNrS2VlcGluZ1RoaXNPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhj
ZXB0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3Zl
KGV4Y2VwdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CkBAIC01NTIsOSArNTUyLDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpmaXJlQ29udHJvbAogICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIGVu
cXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1ZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdG9wKCkKQEAgLTYxOCwxNiArNjE2LDYgQEAgYm9vbCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRFdmVudExpcwogICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShldmVudExpc3RlbmVyKSwgb3B0
aW9ucyk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5xdWV1ZVRhc2soRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAgICBj
b250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
LCAqY29udGV4dCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7
Ci0gICAgICAgIHRhc2soKTsKLSAgICB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCShy
ZXZpc2lvbiAyNTE5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw2IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5l
ck9wdGlvbnMmID0geyB9KSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNl
V29ya2VySm9iPiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382697</attachid>
            <date>2019-11-03 00:31:10 -0700</date>
            <delta_ts>2019-11-03 00:31:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203714-20191103003109.patch</filename>
            <type>text/plain</type>
            <size>17351</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTExLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlv
biB0byBzY2hlZHVsZSBhIHRhc2sgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgdG8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGRlZCB0
d28gaGVscGVyIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSBhbmQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50CisgICAgICAgIHRvIEFjdGl2ZURPTU9i
amVjdCBhbmQgZGVwbG95ZWQgdGhlbSBpbiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFu
Z2VzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Fic3RyYWN0RXZlbnRMb29wLmg6
CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29wKTogQWRkZWQuCisgICAgICAgICog
ZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KTogQWRkZWQuCisgICAg
ICAgICogZG9tL1Rhc2tTb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpmaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVucXVldWVUYXNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgor
CiAyMDE5LTExLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UG9ydCBET01DYWNoZSAvIERPTUNhY2hlU3RvcmFnZSB0byB0aGUgSFRNTDUgZXZlbnQgbG9vcApJ
bmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNTE5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5n
LmgKICAgICBkb20vU3R5bGVkRWxlbWVudC5oCiAgICAgZG9tL1N1Y2Nlc3NPci5oCisgICAgZG9t
L1Rhc2tTb3VyY2UuaAogICAgIGRvbS9UZXh0LmgKICAgICBkb20vVGV4dEV2ZW50LmgKICAgICBk
b20vVGV4dEV2ZW50SW5wdXRUeXBlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjg1NSw2ICsyODU1LDcgQEAKIAkJOUE1MjhFODQxN0Q3RjUyRjAwQUE5NTE4IC8qIEZs
b2F0aW5nT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUE1MjhFODIxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlBQjFGMzgwMThF
MjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3
NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCMDJFMEM4MjM1RUFEMkEwMDQwNDRCMiAvKiBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwMkUwQzMyMzVFNzZBQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOUIwQUJDQUUyMzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0FDMjM2QkI0
MEEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJOUIy
N0ZDNjAyMzREOUFEQjAwMzk0QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyN0ZDNUUyMzREOUFEQTAwMzk0QTQ2
IC8qIFdpbmRvd0V2ZW50TG9vcC5oICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0Ug
LyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTExMSw2ICsxMTExMiw3IEBA
CiAJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdEV2ZW50TG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBBQkNBMzIzNjc5QUNGMDBCNDUwODUgLyogV29ya2Vy
RXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
ckV2ZW50TG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0E0MjM2
NzlBQ0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlCMEFCQ0FDMjM2QkI0MEEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRhc2tTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkU4NzMx
RDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJdGVtTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJhbnNmZXJJ
dGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRF
NTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MTc3LDYgKzI4MTc5
LDcgQEAKIAkJCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCiAJ
CQkJNDYzRUI2MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovLAogCQkJ
CTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIw
QUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLywKIAkJCQkwRjI2QTdBNzIw
NTRDMjI3MDA5MEExNDEgLyogVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5jcHAgKi8s
CiAJCQkJQzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQuaCAqLywKIAkJCQk2NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAg
Ki8sCkBAIC0zMjQxOCw2ICszMjQyMSw3IEBACiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0
IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkI2QjgxMTIyQTdEMzEzMDAz
QTJBNjkgLyogVGFiU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRUI2MjMxQjg3ODlFMDAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMEFCQ0FFMjM2
QkI0MzEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RE
NjEyNTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0M1NjRCODE4QkFCRUE2MDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0
ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE5NzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0z
MiwxNCArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKLWVudW0gY2xhc3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1h
bmlwdWxhdGlvbiwKLSAgICBGaWxlUmVhZGluZywKLSAgICBJZGxlVGFzaywKLSAgICBOZXR3b3Jr
aW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKIGNsYXNzIEFic3Ry
YWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+IHsKIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lv
biAyNTE5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQCBib29sIEFjdGl2ZURPTU9iamVjdDo6aXNBbGxvd2Vk
VG9SdW5TY3JpCiAgICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSAmJiAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpICYmICFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKTsKIH0K
IAordm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ug
c291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4
dCwgV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCAr
MjcsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCkBAIC0xMTcsMTAgKzExOSwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZl
RE9NT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIHRhc2spCisgICAgeworICAgICAgICBvYmplY3QucXVldWVUYXNrSW5FdmVudExvb3Ao
c291cmNlLCBbcHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3QpLCBhY3Rpdml0eSA9IG9i
amVjdC5tYWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSAo
KSB7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBlPgorICAgIHN0
YXRpYyB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5cGUmIHRhcmdl
dCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSk7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSh0YXJnZXQsIHNvdXJjZSwgWyZ0YXJnZXQsIGV2ZW50ID0gV1RGTW92ZShldmVu
dCldICgpIG11dGFibGUgeworICAgICAgICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQu
Z2V0KCkpOworICAgICAgICB9KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBDaGVja2Vk
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUgeyBDaGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB9OwogICAgIEFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQ2hlY2tl
ZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlKTsKIAorICAgIHZvaWQgcXVldWVUYXNrSW5FdmVu
dExvb3AoVGFza1NvdXJjZSwgRnVuY3Rpb248dm9pZCAoKT4mJik7CisKICAgICB1bnNpZ25lZCBt
X3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBi
b29sIG1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1Rhc2tTb3VyY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1Nv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFRhc2tTb3VyY2Ug
OiB1aW50OF90IHsKKyAgICBET01NYW5pcHVsYXRpb24sCisgICAgRmlsZVJlYWRpbmcsCisgICAg
SWRsZVRhc2ssCisgICAgTmV0d29ya2luZywKKyAgICBVc2VySW50ZXJhY3Rpb24KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI1
MTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIGF1dG8gU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiAKIAogICAgICAgICBhdXRvJiBjb250ZXh0ID0g
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0
aW9uKCkud2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpLCBj
b250ZXh0LnVybCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRv
JiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhb
dGhpcywgcmVnaXN0cmF0aW9uRGF0YSA9IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkp
OwogICAgICAgICAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKFdURk1vdmUocmVnaXN0
cmF0aW9uKSk7CiAgICAgICAgICAgICB9KTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhCiAgICAgfQogCiAgICAgZW5zdXJlU1dDbGll
bnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29u
dGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBX
VEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRS
ZWdpc3RyYQogCiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0
eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBjb250ZXh0LnVybCgp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhcykgbXV0YWJsZSB7Ci0gICAgICAg
IGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0
aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9u
RGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IFdURjo6bWFwKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0
YXMpLCBbJl0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAg
ICAgfSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JGYWlsZWRXaQogICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5x
dWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0YWJs
ZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgp
IG11dGFibGUgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhjZXB0aW9uKTsKICAgICB9KTsK
IH0KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJl
c29sdmVkCiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVl
VGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBq
b2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgp
IG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
c2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90
aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUgewogICAgICAgICBub3RpZnlJZkV4aXRFYXJseS5y
ZWxlYXNlKCk7CiAKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywg
V1RGTW92ZShkYXRhKSk7CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZW5xdWV1
ZVRhc2soW3Byb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRd
KCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVu
cmVnaXN0cmF0aW9uUmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB9KTsKIH0KQEAgLTQ4Miw3
ICs0ODIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvCiAgICAg
Q09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGlu
Z1NjcmlwdDogRmFpbGVkIHRvIGZldGNoIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJv
cjogJXMiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAoYXV0byBwcm9taXNlID0gam9iLnRh
a2VQcm9taXNlKCkpIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJsZSB7CisgICAg
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1v
dmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChX
VEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CkBAIC01NTIsOSArNTUyLDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpmaXJlQ29udHJvbAogICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAot
ICAgIGVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpzdG9wKCkKQEAgLTYxOCwxNiArNjE2LDYgQEAgYm9vbCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRFdmVudExpcwogICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShldmVudExpc3RlbmVy
KSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5xdWV1ZVRh
c2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsK
LSAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCAqY29udGV4dCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRh
c2spXSB7Ci0gICAgICAgIHRhc2soKTsKLSAgICB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCShyZXZpc2lvbiAyNTE5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw2IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRM
aXN0ZW5lck9wdGlvbnMmID0geyB9KSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VySm9iPiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382698</attachid>
            <date>2019-11-03 00:31:42 -0700</date>
            <delta_ts>2019-11-03 12:02:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203714-20191103003141.patch</filename>
            <type>text/plain</type>
            <size>17381</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTExLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlv
biB0byBzY2hlZHVsZSBhIHRhc2sgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgdG8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGRlZCB0
d28gaGVscGVyIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSBhbmQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50CisgICAgICAgIHRvIEFjdGl2ZURPTU9i
amVjdCBhbmQgZGVwbG95ZWQgdGhlbSBpbiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFu
Z2VzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Fic3RyYWN0RXZlbnRMb29wLmg6
CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29wKTogQWRkZWQuCisgICAgICAgICog
ZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KTogQWRkZWQuCisgICAg
ICAgICogZG9tL1Rhc2tTb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpmaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVucXVldWVUYXNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgor
CiAyMDE5LTExLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UG9ydCBET01DYWNoZSAvIERPTUNhY2hlU3RvcmFnZSB0byB0aGUgSFRNTDUgZXZlbnQgbG9vcApJ
bmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNTE5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5n
LmgKICAgICBkb20vU3R5bGVkRWxlbWVudC5oCiAgICAgZG9tL1N1Y2Nlc3NPci5oCisgICAgZG9t
L1Rhc2tTb3VyY2UuaAogICAgIGRvbS9UZXh0LmgKICAgICBkb20vVGV4dEV2ZW50LmgKICAgICBk
b20vVGV4dEV2ZW50SW5wdXRUeXBlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjg1NSw2ICsyODU1LDcgQEAKIAkJOUE1MjhFODQxN0Q3RjUyRjAwQUE5NTE4IC8qIEZs
b2F0aW5nT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUE1MjhFODIxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlBQjFGMzgwMThF
MjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3
NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCMDJFMEM4MjM1RUFEMkEwMDQwNDRCMiAvKiBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwMkUwQzMyMzVFNzZBQTAwNDA0NEIyIC8qIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOUIwQUJDQUUyMzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0FDMjM2QkI0
MEEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJOUIy
N0ZDNjAyMzREOUFEQjAwMzk0QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyN0ZDNUUyMzREOUFEQTAwMzk0QTQ2
IC8qIFdpbmRvd0V2ZW50TG9vcC5oICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0Ug
LyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTExMSw2ICsxMTExMiw3IEBA
CiAJCTlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4NSAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdEV2ZW50TG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBBQkNBMzIzNjc5QUNGMDBCNDUwODUgLyogV29ya2Vy
RXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
ckV2ZW50TG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEFCQ0E0MjM2
NzlBQ0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlCMEFCQ0FDMjM2QkI0MEEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRhc2tTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkU4NzMx
RDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJdGVtTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJhbnNmZXJJ
dGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRF
NTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MTc3LDYgKzI4MTc5
LDcgQEAKIAkJCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCiAJ
CQkJNDYzRUI2MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovLAogCQkJ
CTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIw
QUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLywKIAkJCQkwRjI2QTdBNzIw
NTRDMjI3MDA5MEExNDEgLyogVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5jcHAgKi8s
CiAJCQkJQzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQuaCAqLywKIAkJCQk2NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAg
Ki8sCkBAIC0zMjQxOCw2ICszMjQyMSw3IEBACiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0
IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkI2QjgxMTIyQTdEMzEzMDAz
QTJBNjkgLyogVGFiU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRUI2MjMxQjg3ODlFMDAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMEFCQ0FFMjM2
QkI0MzEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RE
NjEyNTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0M1NjRCODE4QkFCRUE2MDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0
ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE5NzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlRhc2tTb3VyY2UuaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0z
MiwxNCArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKLWVudW0gY2xhc3MgVGFza1NvdXJjZSA6IHVpbnQ4X3QgewotICAgIERPTU1h
bmlwdWxhdGlvbiwKLSAgICBGaWxlUmVhZGluZywKLSAgICBJZGxlVGFzaywKLSAgICBOZXR3b3Jr
aW5nLAotICAgIFVzZXJJbnRlcmFjdGlvbgotfTsKLQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2V2ZW50LWxvb3AKIGNsYXNzIEFic3Ry
YWN0RXZlbnRMb29wIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RFdmVudExvb3A+IHsKIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lv
biAyNTE5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKIApAQCAtMTMwLDQgKzEzMSwxMiBAQCBib29sIEFjdGl2ZURPTU9iamVjdDo6aXNBbGxvd2Vk
VG9SdW5TY3JpCiAgICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSAmJiAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpICYmICFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKTsKIH0K
IAordm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ug
c291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit7CisgICAgYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICBjb250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCAqY29udGV4
dCwgV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCAr
MjcsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCkBAIC0xMTcsMTAgKzExOSwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZl
RE9NT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIHRhc2spCisgICAgeworICAgICAgICBvYmplY3QucXVldWVUYXNrSW5FdmVudExvb3Ao
c291cmNlLCBbcHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3QpLCBhY3Rpdml0eSA9IG9i
amVjdC5tYWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSAo
KSB7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBlPgorICAgIHN0
YXRpYyB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5cGUmIHRhcmdl
dCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSB8fCAmdGFyZ2V0ID09IGV2ZW50LT50YXJnZXQo
KSk7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSh0YXJnZXQsIHNvdXJjZSwg
WyZ0YXJnZXQsIGV2ZW50ID0gV1RGTW92ZShldmVudCldICgpIG11dGFibGUgeworICAgICAgICAg
ICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgICAgICB9KTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgZW51bSBDaGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUg
eyBDaGVja2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB9OwogICAgIEFjdGl2ZURPTU9iamVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBl
KTsKIAorICAgIHZvaWQgcXVldWVUYXNrSW5FdmVudExvb3AoVGFza1NvdXJjZSwgRnVuY3Rpb248
dm9pZCAoKT4mJik7CisKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVuZElmTmVlZGVkV2FzQ2Fs
bGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90IHsKKyAgICBET01NYW5pcHVs
YXRpb24sCisgICAgRmlsZVJlYWRpbmcsCisgICAgSWRsZVRhc2ssCisgICAgTmV0d29ya2luZywK
KyAgICBVc2VySW50ZXJhY3Rpb24KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI1MTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDcgKzEwOSw3IEBAIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAt
PiAKIAogICAgICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkud2hlblJlZ2lzdHJhdGlvblJlYWR5
KGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpLCBjb250ZXh0LnVybCgpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcmVnaXN0cmF0aW9uRGF0YSA9IFdU
Rk1vdmUocmVnaXN0cmF0aW9uRGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3RoaXMsIHJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRo
aXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgICAgIG1fcmVhZHlQ
cm9taXNlLT5yZXNvbHZlKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CiAgICAgICAgICAgICB9KTsK
QEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lz
dHJhCiAgICAgfQogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3Ry
YXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwg
cGFyc2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVu
cXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RG
TW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJl
c29sdmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYQogCiAgICAgYXV0byYgY29udGV4
dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0
aW9uKCkuZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9y
aWdpbigpLmRhdGEoKSB9LCBjb250ZXh0LnVybCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGF1dG8mJiByZWdpc3Ry
YXRpb25EYXRhcykgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJh
dGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGFzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IFdU
Rjo6bWFwKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpLCBbJl0oYXV0byYmIHJlZ2lzdHJhdGlv
bkRhdGEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUo
cmVnaXN0cmF0aW9uRGF0YSkpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzUsNyArMzM1LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaQogICAgIGlmICghcHJvbWlz
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBleGNlcHRpb25dKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uXSgpIG11dGFibGUgewogICAgICAgICBwcm9taXNl
LT5yZWplY3QoZXhjZXB0aW9uKTsKICAgICB9KTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkCiAgICAgaWYgKCFwcm9taXNlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RG
TW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBub3RpZnlJZkV4aXRFYXJseSA9
IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRp
ZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCBu
b3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11dGFibGUg
ewogICAgICAgICBub3RpZnlJZkV4aXRFYXJseS5yZWxlYXNlKCk7CiAKICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShkYXRhKSk7CkBAIC00MzUsNyAr
NDM1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBqb2IudGFrZVBy
b21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRdKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtw
cm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XSgpIG11dGFi
bGUgewogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHVucmVnaXN0cmF0aW9u
UmVzdWx0KTsKICAgICB9KTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdDogRmFpbGVkIHRvIGZldGNoIHNj
cmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJvcjogJXMiLCBqb2IuaWRlbnRpZmllcigpLnRv
VUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiAK
ICAgICBpZiAoYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCkpIHsKLSAgICAgICAgZW5x
dWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3Zl
KGV4Y2VwdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgICAg
ICB9KTsKICAgICB9CkBAIC01NTIsOSArNTUyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpmaXJlQ29udHJvbAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIGVucXVldWVUYXNrKFt0aGlzXSB7Ci0g
ICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJvbGxl
cmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKLSAgICB9KTsKKyAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJv
bGxlcmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKQEAgLTYx
OCwxNiArNjE2LDYgQEAgYm9vbCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRFdmVudExpcwog
ICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgV1RGTW92ZShldmVudExpc3RlbmVyKSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6ZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Ci17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAgICBjb250ZXh0LT5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCAqY29udGV4dCwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRhc2soKTsKLSAg
ICB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCShyZXZpc2lvbiAyNTE5NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmID0geyB9KSBmaW5h
bDsKLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lk
IHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>