<?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>179745</bug_id>
          
          <creation_ts>2017-11-15 14:38:01 -0800</creation_ts>
          <short_desc>Dispatching an event on a ServiceWorker may fail or crash due to GC</short_desc>
          <delta_ts>2017-11-16 10:22:23 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179751</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=179778</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1372460</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-15 14:38:01 -0800</bug_when>
    <thetext>Dispatching an event on a ServiceWorker may fail or crash due to GC. We need to make sure that a ServiceWorker&apos;s wrapper stays alive as long as we may dispatch events on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372463</commentid>
    <comment_count>1</comment_count>
      <attachid>327028</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-15 14:50:16 -0800</bug_when>
    <thetext>Created attachment 327028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372485</commentid>
    <comment_count>2</comment_count>
      <attachid>327031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-15 16:02:29 -0800</bug_when>
    <thetext>Created attachment 327031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372489</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-15 16:13:29 -0800</bug_when>
    <thetext>Crash trace for reference:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000040bcfc0b4 WTFCrash + 36 (Assertions.cpp:270)
1   com.apple.WebCore             	0x00000003fe22b3be WebCore::JSEventListener::jsFunction(WebCore::ScriptExecutionContext&amp;) const + 398 (JSEventListener.h:128)
2   com.apple.WebCore             	0x00000003fe22a84d WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;) + 205 (JSEventListener.cpp:97)
3   com.apple.WebCore             	0x00000003fe773df2 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener&gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;) + 962 (EventTarget.cpp:287)
4   com.apple.WebCore             	0x00000003fe76b8ca WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;) + 314 (EventTarget.cpp:228)
5   com.apple.WebCore             	0x00000003fe7739a9 WebCore::EventTarget::dispatchEvent(WebCore::Event&amp;) + 233 (EventTarget.cpp:188)
6   com.apple.WebCore             	0x00000003ffb77c84 WebCore::ServiceWorker::scheduleTaskToUpdateState(WebCore::ServiceWorkerState)::$_3::operator()(WebCore::ScriptExecutionContext&amp;) const + 84 (ServiceWorker.cpp:100)
7   com.apple.WebCore             	0x00000003ffb77ae4 WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::CallableWrapper&lt;WebCore::ServiceWorker::scheduleTaskToUpdateState(WebCore::ServiceWorkerState)::$_3&gt;::call(WebCore::ScriptExecutionContext&amp;) + 52 (Function.h:101)
8   com.apple.WebCore             	0x00000003fe1113be WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::operator()(WebCore::ScriptExecutionContext&amp;) const + 158 (Function.h:56)
9   com.apple.WebCore             	0x00000003fe0fed8d WebCore::ScriptExecutionContext::Task::performTask(WebCore::ScriptExecutionContext&amp;) + 29 (ScriptExecutionContext.h:183)
10  com.apple.WebCore             	0x00000003fe7269c6 WebCore::Document::postTask(WebCore::ScriptExecutionContext::Task&amp;&amp;)::$_2::operator()() + 278 (Document.cpp:5749)
11  com.apple.WebCore             	0x00000003fe7267a9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WebCore::Document::postTask(WebCore::ScriptExecutionContext::Task&amp;&amp;)::$_2&gt;::call() + 25 (Function.h:101)
12  com.apple.JavaScriptCore      	0x000000040bd316fb WTF::Function&lt;void ()&gt;::operator()() const + 139 (Function.h:56)
13  com.apple.JavaScriptCore      	0x000000040bd3130b WTF::dispatchFunctionsFromMainThread() + 331 (MainThread.cpp:129)
14  com.apple.JavaScriptCore      	0x000000040bd33fc1 WTF::timerFired(__CFRunLoopTimer*, void*) + 49 (MainThreadMac.mm:111)
15  com.apple.CoreFoundation      	0x00007fff4abe4ce4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372669</commentid>
    <comment_count>4</comment_count>
      <attachid>327031</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-11-16 09:51:08 -0800</bug_when>
    <thetext>Comment on attachment 327031
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:12
&gt; +        implementation objects keeps a PendingActivity alive while it may dispatch JS events.

object

&gt; Source/WebCore/ChangeLog:13
&gt; +        The only even dispatched on ServiceWorker objects is the &quot;statechange&quot; one. We may

event

&gt; Source/WebCore/workers/service/ServiceWorker.cpp:78
&gt; +    serviceWorker-&gt;updatePendingActivityForEventDispatch();

Since this is required for correctness upon allocation, I think it would be clearer to do this in the ServiceWorker constructor.

&gt; Source/WebCore/workers/service/ServiceWorker.cpp:175
&gt; +    // FIXME: We should do better.

Would be nice to explain here that this prevents us from entering the page cache when we have a service worker.

&gt; Source/WebCore/workers/service/ServiceWorker.cpp:181
&gt; +    removeFromAllWorkers(*this);

Are we required to remove ourselves from the map upon stop, or can we wait for our destructor? Since we added ourselves in the constructor, I think it&apos;s a little clearer to remove ourselves in the destructor.

&gt; Source/WebCore/workers/service/ServiceWorker.cpp:188
&gt; +    // ServiceWorker can dispatch events until they become redundant or they are stopped.

ServiceWorkers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372672</commentid>
    <comment_count>5</comment_count>
      <attachid>327031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 09:57:23 -0800</bug_when>
    <thetext>Comment on attachment 327031
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorker.cpp:78
&gt;&gt; +    serviceWorker-&gt;updatePendingActivityForEventDispatch();
&gt; 
&gt; Since this is required for correctness upon allocation, I think it would be clearer to do this in the ServiceWorker constructor.

The reason I moved it here is because I hit an assertion when doing this in the constructor. The reason is that this refs |this| when taking a PendingActivity and doing so in the constructor would mean we ref *before* the object has been adopted. (Should I use relax adoptionRequirements() instead?)

&gt;&gt; Source/WebCore/workers/service/ServiceWorker.cpp:181
&gt;&gt; +    removeFromAllWorkers(*this);
&gt; 
&gt; Are we required to remove ourselves from the map upon stop, or can we wait for our destructor? Since we added ourselves in the constructor, I think it&apos;s a little clearer to remove ourselves in the destructor.

I&apos;ll drop this and replace with an assertion to make sure we do not recycle/reuse workers that have been stopped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372677</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-11-16 10:06:09 -0800</bug_when>
    <thetext>&gt; &gt; Since this is required for correctness upon allocation, I think it would be clearer to do this in the ServiceWorker constructor.
&gt; 
&gt; The reason I moved it here is because I hit an assertion when doing this in
&gt; the constructor. The reason is that this refs |this| when taking a
&gt; PendingActivity and doing so in the constructor would mean we ref *before*
&gt; the object has been adopted. (Should I use relax adoptionRequirements()
&gt; instead?)

I think I would either relaxAdoptionRequirement() or add a create method to encapsulate the updatePendingActivityForEventDispatch() call and make the constructor private.

It&apos;s kind of annoying that the m_adoptionIsRequired mechanism prevents you from calling a function that uses RefPtr from your constructor. It is definitely not a programming error to do that.

&gt; &gt;&gt; Source/WebCore/workers/service/ServiceWorker.cpp:181
&gt; &gt;&gt; +    removeFromAllWorkers(*this);
&gt; &gt; 
&gt; &gt; Are we required to remove ourselves from the map upon stop, or can we wait for our destructor? Since we added ourselves in the constructor, I think it&apos;s a little clearer to remove ourselves in the destructor.
&gt; 
&gt; I&apos;ll drop this and replace with an assertion to make sure we do not
&gt; recycle/reuse workers that have been stopped.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372679</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 10:08:25 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; &gt; &gt; Since this is required for correctness upon allocation, I think it would be clearer to do this in the ServiceWorker constructor.
&gt; &gt; 
&gt; &gt; The reason I moved it here is because I hit an assertion when doing this in
&gt; &gt; the constructor. The reason is that this refs |this| when taking a
&gt; &gt; PendingActivity and doing so in the constructor would mean we ref *before*
&gt; &gt; the object has been adopted. (Should I use relax adoptionRequirements()
&gt; &gt; instead?)
&gt; 
&gt; I think I would either relaxAdoptionRequirement() or add a create method to
&gt; encapsulate the updatePendingActivityForEventDispatch() call and make the
&gt; constructor private.

I do not understand this comment. The constructor already is private and the call to updatePendingActivityForEventDispatch() is already in the create function of the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372682</commentid>
    <comment_count>8</comment_count>
      <attachid>327076</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 10:13:27 -0800</bug_when>
    <thetext>Created attachment 327076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372683</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 10:13:55 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; &gt; &gt; Since this is required for correctness upon allocation, I think it would be clearer to do this in the ServiceWorker constructor.
&gt; &gt; &gt; 
&gt; &gt; &gt; The reason I moved it here is because I hit an assertion when doing this in
&gt; &gt; &gt; the constructor. The reason is that this refs |this| when taking a
&gt; &gt; &gt; PendingActivity and doing so in the constructor would mean we ref *before*
&gt; &gt; &gt; the object has been adopted. (Should I use relax adoptionRequirements()
&gt; &gt; &gt; instead?)
&gt; &gt; 
&gt; &gt; I think I would either relaxAdoptionRequirement() or add a create method to
&gt; &gt; encapsulate the updatePendingActivityForEventDispatch() call and make the
&gt; &gt; constructor private.
&gt; 
&gt; I do not understand this comment. The constructor already is private and the
&gt; call to updatePendingActivityForEventDispatch() is already in the create
&gt; function of the class.

Anyway, latest iteration now uses relaxAdoptionRequirements().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372686</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-11-16 10:16:05 -0800</bug_when>
    <thetext>&gt; &gt; I think I would either relaxAdoptionRequirement() or add a create method to
&gt; &gt; encapsulate the updatePendingActivityForEventDispatch() call and make the
&gt; &gt; constructor private.
&gt; 
&gt; I do not understand this comment. The constructor already is private and the
&gt; call to updatePendingActivityForEventDispatch() is already in the create
&gt; function of the class.

Sorry, I didn&apos;t notice that this was the getOrCreate function :(.

I think relaxAdoptionRequirement() is fine too, so I&apos;ll cq+ this new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372688</commentid>
    <comment_count>11</comment_count>
      <attachid>327076</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 10:21:49 -0800</bug_when>
    <thetext>Comment on attachment 327076
Patch

Clearing flags on attachment: 327076

Committed r224924: &lt;https://trac.webkit.org/changeset/224924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372689</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-16 10:21:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372691</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-16 10:22:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/35591546&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327028</attachid>
            <date>2017-11-15 14:50:16 -0800</date>
            <delta_ts>2017-11-15 16:02:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179745-20171115145016.patch</filename>
            <type>text/plain</type>
            <size>11432</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxM2JmN2EwODcwMTFh
ZmY4Y2Y5NjJiMmE2ZDYxYmQ0ZjM5MzY1MS4uMTk2MGRjZDMwNDVhODZhN2RiMWRjNjI0YThjNDU5
YTQwNGY4YzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTExLTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4gZXZl
bnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NzQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4g
ZXZlbnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQy4gV2Ug
bmVlZCB0byBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBhIFNlcnZpY2VXb3JrZXIncyB3cmFwcGVy
IHN0YXlzIGFsaXZlIGFzIGxvbmcgYXMgd2UgbWF5IGRpc3BhdGNoIGV2ZW50cyBvbiBpdC4KKwor
ICAgICAgICBLZWVwIHRoZSB3cmFwcGVyIGFsaXZlIGJ5IG1ha2luZyBTZXJ2aWNlV29ya2VyIGFu
IEFjdGl2ZURPTU9iamVjdCBhbmQgbWFraW5nIHN1cmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0
aW9uIG9iamVjdHMga2VlcHMgYSBQZW5kaW5nQWN0aXZpdHkgYWxpdmUgd2hpbGUgaXQgbWF5IGRp
c3BhdGNoIEpTIGV2ZW50cy4KKyAgICAgICAgVGhlIG9ubHkgZXZlbiBkaXNwYXRjaGVkIG9uIFNl
cnZpY2VXb3JrZXIgb2JqZWN0cyBpcyB0aGUgInN0YXRlY2hhbmdlIiBvbmUuIFdlIG1heQorICAg
ICAgICBkaXNwYXRjaCBzdGF0ZWNoYW5nZSBldmVudHMgb24gYSBTZXJ2aWNlV29ya2VyIHVudGls
IGl0cyBzdGF0ZSBiZWNvbWVzICJyZWR1bmRhbnQiLgorICAgICAgICBXZSB0aGVyZWZvcmUgdGFr
ZSBhIFBlbmRpbmdBY3Rpdml0eSB3aGVuIHRoZSBTZXJ2aWNlV29ya2VyJ3Mgc3RhdGUgaXMgb3Ig
YmVjb21lcworICAgICAgICBub24tcmVkdW5kYW50IChiZWNvbWluZyBub24gcmVkdW5kYW50IGNh
biBvbmx5IGhhcHBlbiB3aGVuIHN3aXRjaGluZyBpbml0aWFsbHkgZnJvbQorICAgICAgICByZWR1
bmRhbnQgdG8gaW5zdGFsbGluZywgYXQgd2hpY2ggcG9pbnQgdGhlIFNlcnZpY2VXb3JrZXIgb2Jq
ZWN0IGlzIG5vdCBleHBvc2VkIHRvCisgICAgICAgIHRoZSBKUyB5ZXQpLiBXZSByZWxlYXNlIHRo
ZSBQZW5kaW5nQWN0aXZpdHkgd2hlbiB0aGUgU2VydmljZVdvcmtlcidzIHN0YXRlIGJlY29tZXMK
KyAgICAgICAgcmVkdW5kYW50IG9yIHRoZSBBY3RpdmVET01PYmplY3QgaXMgc3RvcHBlZCAodG8g
YXZvaWQgbGVha3Mgb24gbmF2aWdhdGlvbikuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQuaHRtbAorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXV0
YWJsZUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6cmVtb3Zl
RnJvbUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Z2V0T3JD
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6U2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjp+U2VydmljZVdvcmtlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRpbmdBY3Rp
dml0eUZvckV2ZW50RGlzcGF0Y2gpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsOgor
CiAyMDE3LTExLTE1ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkgaW4gV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0IHdpdGggTWF0aE1M
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
aW5kZXggNzc5NjYyNzY1NjNhYzgzYzUxYTY0MDNlYWI0MGNhODBiN2Q4MTg1Ny4uNjU4NTdlY2Jj
MTRjNGY5NzM2MzhkNzdlMDgyMzRhYjZiNzI5ZDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNDAsMTggKzQwLDI5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgbXV0YWJsZUFsbFdvcmtlcnMoKQorewor
ICAgIC8vIEZJWE1FOiBPbmNlIHdlIHN1cHBvcnQgc2VydmljZSB3b3JrZXJzIGZyb20gd29ya2Vy
cywgdGhpcyB3aWxsIG5lZWQgdG8gY2hhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoU2V0PFNlcnZpY2VXb3JrZXIqPj4+IGFsbFdvcmtlcnNNYXA7Cisg
ICAgcmV0dXJuIGFsbFdvcmtlcnNNYXA7Cit9CisKIGNvbnN0IEhhc2hNYXA8U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgU2VydmljZVdvcmtlcjo6YWxs
V29ya2VycygpCiB7CiAgICAgcmV0dXJuIG11dGFibGVBbGxXb3JrZXJzKCk7CiB9CiAKLUhhc2hN
YXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgU2Vy
dmljZVdvcmtlcjo6bXV0YWJsZUFsbFdvcmtlcnMoKQorc3RhdGljIHZvaWQgcmVtb3ZlRnJvbUFs
bFdvcmtlcnMoU2VydmljZVdvcmtlciYgc2VydmljZVdvcmtlcikKIHsKLSAgICAvLyBGSVhNRTog
T25jZSB3ZSBzdXBwb3J0IHNlcnZpY2Ugd29ya2VycyBmcm9tIHdvcmtlcnMsIHRoaXMgd2lsbCBu
ZWVkIHRvIGNoYW5nZS4KLSAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+Pj4gYWxsV29ya2Vyc01hcDsKLSAgICByZXR1cm4g
YWxsV29ya2Vyc01hcDsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbXV0YWJsZUFsbFdvcmtlcnMoKS5m
aW5kKHNlcnZpY2VXb3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbXV0
YWJsZUFsbFdvcmtlcnMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3It
PnZhbHVlLnJlbW92ZSgmc2VydmljZVdvcmtlcik7CisgICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgIG11dGFibGVBbGxXb3JrZXJzKCkucmVtb3ZlKGl0ZXJhdG9yKTsK
IH0KIAogUmVmPFNlcnZpY2VXb3JrZXI+IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNlcnZpY2VXb3JrZXJEYXRhJiYgZGF0YSkKQEAg
LTYzLDEzICs3NCwxNyBAQCBSZWY8U2VydmljZVdvcmtlcj4gU2VydmljZVdvcmtlcjo6Z2V0T3JD
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUwogICAgICAgICAgICAgICAg
IHJldHVybiAqd29ya2VyOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXIoY29udGV4dCwgV1RGTW92ZShkYXRhKSkpOworICAgIGF1dG8gc2Vy
dmljZVdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlcihjb250ZXh0LCBXVEZNb3Zl
KGRhdGEpKSk7CisgICAgc2VydmljZVdvcmtlci0+dXBkYXRlUGVuZGluZ0FjdGl2aXR5Rm9yRXZl
bnREaXNwYXRjaCgpOworICAgIHJldHVybiBzZXJ2aWNlV29ya2VyOwogfQogCiBTZXJ2aWNlV29y
a2VyOjpTZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYgZGF0YSkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZj
b250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCiB7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CisKICAgICBhdXRvIHJlc3Vs
dCA9IG11dGFibGVBbGxXb3JrZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIoKSwgW10gewogICAgICAg
ICByZXR1cm4gSGFzaFNldDxTZXJ2aWNlV29ya2VyKj4oKTsKICAgICB9KTsKQEAgLTc4LDEzICs5
Myw3IEBAIFNlcnZpY2VXb3JrZXI6OlNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgU2VydmljZVdvcmtlckRhdGEmCiAKIFNlcnZpY2VXb3JrZXI6On5TZXJ2aWNl
V29ya2VyKCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbXV0YWJsZUFsbFdvcmtlcnMoKS5maW5k
KGlkZW50aWZpZXIoKSk7Ci0KLSAgICBBU1NFUlQoaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRo
aXMpKTsKLSAgICBpdGVyYXRvci0+dmFsdWUucmVtb3ZlKHRoaXMpOwotCi0gICAgaWYgKGl0ZXJh
dG9yLT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIG11dGFibGVBbGxXb3JrZXJzKCkucmVtb3Zl
KGl0ZXJhdG9yKTsKKyAgICByZW1vdmVGcm9tQWxsV29ya2VycygqdGhpcyk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlcjo6c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShTdGF0ZSBzdGF0ZSkKQEAg
LTk3LDggKzEwNiwxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXI6OnNjaGVkdWxlVGFza1RvVXBkYXRl
U3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRlXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgICAgICBBU1NFUlQodGhpcy0+c3RhdGUoKSAhPSBzdGF0
ZSk7CisKICAgICAgICAgbV9kYXRhLnN0YXRlID0gc3RhdGU7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBTdGF0ZTo6SW5zdGFsbGluZyAmJiAhbV9pc1N0
b3BwZWQpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlz
cGF0Y2gpOworICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHVwZGF0ZVBlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKTsKICAgICB9KTsKIH0K
IApAQCAtMTQ5LDYgKzE2NSwzNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTZXJ2aWNlV29y
a2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAorY29uc3Qg
Y2hhciogU2VydmljZVdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICJTZXJ2aWNlV29ya2VyIjsKK30KKworYm9vbCBTZXJ2aWNlV29ya2VyOjpjYW5TdXNw
ZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGRvIGJldHRlci4KKyAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXI6OnN0b3AoKQoreworICAgIHJlbW92ZUZyb21BbGxXb3JrZXJzKCp0
aGlzKTsKKyAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgdXBkYXRlUGVuZGluZ0FjdGl2aXR5
Rm9yRXZlbnREaXNwYXRjaCgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRp
bmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKQoreworICAgIC8vIFNlcnZpY2VXb3JrZXIgY2Fu
IGRpc3BhdGNoIGV2ZW50cyB1bnRpbCB0aGV5IGJlY29tZSByZWR1bmRhbnQgb3IgdGhleSBhcmUg
c3RvcHBlZC4KKyAgICBpZiAobV9pc1N0b3BwZWQgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6UmVkdW5k
YW50KSB7CisgICAgICAgIG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaCA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5Rm9y
RXZlbnREaXNwYXRjaCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5Rm9y
RXZlbnREaXNwYXRjaCA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA3NGM4
Y2E5ZGQ5YzI3NmRkZWMxZmZiOGU2ZmRiYzY2MTNmM2VmNmNmLi45YmVjMjdhZjA5N2U1ZDVmZmVk
ZjFjZWIzYTM4NjVjM2VmN2M1ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRGF0YS5oIgpAQCAtNDIsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VyIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlcj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgU2Vy
dmljZVdvcmtlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXI+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgU3RhdGUgPSBTZXJ2aWNlV29ya2VyU3RhdGU7CiAgICAgc3RhdGlj
IFJlZjxTZXJ2aWNlV29ya2VyPiBnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
U2VydmljZVdvcmtlckRhdGEmJik7CkBAIC02NiwxNCArNjcsMjEgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNlcnZpY2VX
b3JrZXJEYXRhJiYpOwotICAgIHN0YXRpYyBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBIYXNoU2V0PFNlcnZpY2VXb3JrZXIqPj4mIG11dGFibGVBbGxXb3JrZXJzKCk7CisgICAgdm9p
ZCB1cGRhdGVQZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3BhdGNoKCk7CiAKICAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0
YTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0Fj
dGl2aXR5PFNlcnZpY2VXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2g7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwKaW5kZXggMTkyZWEwN2FlNThhNDgwNzE0ZDJm
Y2Q3MjViZDczZjk0YzgwMzM4MS4uNzQxYjhlMmNiNjhhY2YzMDc0ZGRhMWYyY2E5YmU3NDhiNTk1
ZmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyLmlkbApAQCAtMjcsNiArMjcsNyBAQAogLy8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQg
bmVzdGVkIHdvcmtlcnMuCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgU2VjdXJlQ29u
dGV4dCwKICAgICBFeHBvc2VkPShXaW5kb3cpLAogICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09S
S0VSLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDg5MjkwNjVlMTMwZWZmNWRiYmRlNTI3ZGFkNTIyYWNkMGY3OWEzMjQuLmY4
Mzg1YjFlNmUwZjhiZGU3Y2YxNzRmOTc5YTI2NDM5MzMyZWMzZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNy0xMS0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3BhdGNoaW5nIGFuIGV2ZW50IG9uIGEgU2VydmljZVdvcmtlciBtYXkgZmFpbCBvciBj
cmFzaCBkdWUgdG8gR0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3OTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10ZXN0LXByZS5qczoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1nYy1ldmVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1n
Yy1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDE3LTExLTE1ICBGcmVkZXJpYyBXYW5n
ICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVy
ZXItPm5lZWRzTGF5b3V0KCkgaW4gV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25l
ZE9iamVjdHNOZWVkTGF5b3V0IHdpdGggTWF0aE1MCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3ctdGVzdC1wcmUu
anMKaW5kZXggNDk2MDAxOTk3YWU3ZTkzYzIyMDIyZjI4MDVlOTQ3OGI3ZDY1YTA4Ni4uZWQyYTll
NzJlNzQyYjgxZTI4MjJlODJkNGM2YWZjOWY5NWEwMjBhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10
ZXN0LXByZS5qcwpAQCAtNjEsMyArNjEsMjAgQEAgYXN5bmMgZnVuY3Rpb24gaW50ZXJjZXB0ZWRG
cmFtZSh3b3JrZXJVUkwsIHNjb3BlVVJMKQogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZyYW1lKTsKICAgICB9KTsKIH0KKworZnVuY3Rpb24gZ2MoKSB7CisgICAgaWYgKHR5cGVv
ZiBHQ0NvbnRyb2xsZXIgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOworICAgIGVsc2UgeworICAgICAgICB2YXIgZ2NSZWMgPSBmdW5jdGlvbiAobikgewor
ICAgICAgICAgICAgaWYgKG4gPCAxKQorICAgICAgICAgICAgICAgIHJldHVybiB7fTsKKyAgICAg
ICAgICAgIHZhciB0ZW1wID0ge2k6ICJhYiIgKyBpICsgKGkgLyAxMDAwMDApfTsKKyAgICAgICAg
ICAgIHRlbXAgKz0gImZvbyI7CisgICAgICAgICAgICBnY1JlYyhuLTEpOworICAgICAgICB9Owor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICAgICAgICAgIGdjUmVj
KDEwKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWM4MTA5MTE1NjQ5ZTE2MmU5ZjkwMzM2ZmE2Zjhl
NTIwYjk1NTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorc3RhdGVjaGFuZ2UgdG8gaW5zdGFsbGVkCitzdGF0ZWNoYW5nZSB0byBhY3RpdmF0
aW5nCitzdGF0ZWNoYW5nZSB0byBhY3RpdmF0ZWQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327031</attachid>
            <date>2017-11-15 16:02:29 -0800</date>
            <delta_ts>2017-11-16 10:13:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179745-20171115160228.patch</filename>
            <type>text/plain</type>
            <size>12629</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxM2JmN2EwODcwMTFh
ZmY4Y2Y5NjJiMmE2ZDYxYmQ0ZjM5MzY1MS4uMTk2MGRjZDMwNDVhODZhN2RiMWRjNjI0YThjNDU5
YTQwNGY4YzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTExLTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4gZXZl
bnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NzQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4g
ZXZlbnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQy4gV2Ug
bmVlZCB0byBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBhIFNlcnZpY2VXb3JrZXIncyB3cmFwcGVy
IHN0YXlzIGFsaXZlIGFzIGxvbmcgYXMgd2UgbWF5IGRpc3BhdGNoIGV2ZW50cyBvbiBpdC4KKwor
ICAgICAgICBLZWVwIHRoZSB3cmFwcGVyIGFsaXZlIGJ5IG1ha2luZyBTZXJ2aWNlV29ya2VyIGFu
IEFjdGl2ZURPTU9iamVjdCBhbmQgbWFraW5nIHN1cmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0
aW9uIG9iamVjdHMga2VlcHMgYSBQZW5kaW5nQWN0aXZpdHkgYWxpdmUgd2hpbGUgaXQgbWF5IGRp
c3BhdGNoIEpTIGV2ZW50cy4KKyAgICAgICAgVGhlIG9ubHkgZXZlbiBkaXNwYXRjaGVkIG9uIFNl
cnZpY2VXb3JrZXIgb2JqZWN0cyBpcyB0aGUgInN0YXRlY2hhbmdlIiBvbmUuIFdlIG1heQorICAg
ICAgICBkaXNwYXRjaCBzdGF0ZWNoYW5nZSBldmVudHMgb24gYSBTZXJ2aWNlV29ya2VyIHVudGls
IGl0cyBzdGF0ZSBiZWNvbWVzICJyZWR1bmRhbnQiLgorICAgICAgICBXZSB0aGVyZWZvcmUgdGFr
ZSBhIFBlbmRpbmdBY3Rpdml0eSB3aGVuIHRoZSBTZXJ2aWNlV29ya2VyJ3Mgc3RhdGUgaXMgb3Ig
YmVjb21lcworICAgICAgICBub24tcmVkdW5kYW50IChiZWNvbWluZyBub24gcmVkdW5kYW50IGNh
biBvbmx5IGhhcHBlbiB3aGVuIHN3aXRjaGluZyBpbml0aWFsbHkgZnJvbQorICAgICAgICByZWR1
bmRhbnQgdG8gaW5zdGFsbGluZywgYXQgd2hpY2ggcG9pbnQgdGhlIFNlcnZpY2VXb3JrZXIgb2Jq
ZWN0IGlzIG5vdCBleHBvc2VkIHRvCisgICAgICAgIHRoZSBKUyB5ZXQpLiBXZSByZWxlYXNlIHRo
ZSBQZW5kaW5nQWN0aXZpdHkgd2hlbiB0aGUgU2VydmljZVdvcmtlcidzIHN0YXRlIGJlY29tZXMK
KyAgICAgICAgcmVkdW5kYW50IG9yIHRoZSBBY3RpdmVET01PYmplY3QgaXMgc3RvcHBlZCAodG8g
YXZvaWQgbGVha3Mgb24gbmF2aWdhdGlvbikuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQuaHRtbAorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXV0
YWJsZUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6cmVtb3Zl
RnJvbUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Z2V0T3JD
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6U2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjp+U2VydmljZVdvcmtlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRpbmdBY3Rp
dml0eUZvckV2ZW50RGlzcGF0Y2gpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsOgor
CiAyMDE3LTExLTE1ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkgaW4gV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0IHdpdGggTWF0aE1M
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
aW5kZXggNzc5NjYyNzY1NjNhYzgzYzUxYTY0MDNlYWI0MGNhODBiN2Q4MTg1Ny4uNjU4NTdlY2Jj
MTRjNGY5NzM2MzhkNzdlMDgyMzRhYjZiNzI5ZDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNDAsMTggKzQwLDI5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgbXV0YWJsZUFsbFdvcmtlcnMoKQorewor
ICAgIC8vIEZJWE1FOiBPbmNlIHdlIHN1cHBvcnQgc2VydmljZSB3b3JrZXJzIGZyb20gd29ya2Vy
cywgdGhpcyB3aWxsIG5lZWQgdG8gY2hhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoU2V0PFNlcnZpY2VXb3JrZXIqPj4+IGFsbFdvcmtlcnNNYXA7Cisg
ICAgcmV0dXJuIGFsbFdvcmtlcnNNYXA7Cit9CisKIGNvbnN0IEhhc2hNYXA8U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgU2VydmljZVdvcmtlcjo6YWxs
V29ya2VycygpCiB7CiAgICAgcmV0dXJuIG11dGFibGVBbGxXb3JrZXJzKCk7CiB9CiAKLUhhc2hN
YXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+PiYgU2Vy
dmljZVdvcmtlcjo6bXV0YWJsZUFsbFdvcmtlcnMoKQorc3RhdGljIHZvaWQgcmVtb3ZlRnJvbUFs
bFdvcmtlcnMoU2VydmljZVdvcmtlciYgc2VydmljZVdvcmtlcikKIHsKLSAgICAvLyBGSVhNRTog
T25jZSB3ZSBzdXBwb3J0IHNlcnZpY2Ugd29ya2VycyBmcm9tIHdvcmtlcnMsIHRoaXMgd2lsbCBu
ZWVkIHRvIGNoYW5nZS4KLSAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIEhhc2hTZXQ8U2VydmljZVdvcmtlcio+Pj4gYWxsV29ya2Vyc01hcDsKLSAgICByZXR1cm4g
YWxsV29ya2Vyc01hcDsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbXV0YWJsZUFsbFdvcmtlcnMoKS5m
aW5kKHNlcnZpY2VXb3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbXV0
YWJsZUFsbFdvcmtlcnMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3It
PnZhbHVlLnJlbW92ZSgmc2VydmljZVdvcmtlcik7CisgICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgIG11dGFibGVBbGxXb3JrZXJzKCkucmVtb3ZlKGl0ZXJhdG9yKTsK
IH0KIAogUmVmPFNlcnZpY2VXb3JrZXI+IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNlcnZpY2VXb3JrZXJEYXRhJiYgZGF0YSkKQEAg
LTYzLDEzICs3NCwxNyBAQCBSZWY8U2VydmljZVdvcmtlcj4gU2VydmljZVdvcmtlcjo6Z2V0T3JD
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUwogICAgICAgICAgICAgICAg
IHJldHVybiAqd29ya2VyOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXIoY29udGV4dCwgV1RGTW92ZShkYXRhKSkpOworICAgIGF1dG8gc2Vy
dmljZVdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlcihjb250ZXh0LCBXVEZNb3Zl
KGRhdGEpKSk7CisgICAgc2VydmljZVdvcmtlci0+dXBkYXRlUGVuZGluZ0FjdGl2aXR5Rm9yRXZl
bnREaXNwYXRjaCgpOworICAgIHJldHVybiBzZXJ2aWNlV29ya2VyOwogfQogCiBTZXJ2aWNlV29y
a2VyOjpTZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYgZGF0YSkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZj
b250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCiB7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CisKICAgICBhdXRvIHJlc3Vs
dCA9IG11dGFibGVBbGxXb3JrZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIoKSwgW10gewogICAgICAg
ICByZXR1cm4gSGFzaFNldDxTZXJ2aWNlV29ya2VyKj4oKTsKICAgICB9KTsKQEAgLTc4LDEzICs5
Myw3IEBAIFNlcnZpY2VXb3JrZXI6OlNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgU2VydmljZVdvcmtlckRhdGEmCiAKIFNlcnZpY2VXb3JrZXI6On5TZXJ2aWNl
V29ya2VyKCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbXV0YWJsZUFsbFdvcmtlcnMoKS5maW5k
KGlkZW50aWZpZXIoKSk7Ci0KLSAgICBBU1NFUlQoaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRo
aXMpKTsKLSAgICBpdGVyYXRvci0+dmFsdWUucmVtb3ZlKHRoaXMpOwotCi0gICAgaWYgKGl0ZXJh
dG9yLT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIG11dGFibGVBbGxXb3JrZXJzKCkucmVtb3Zl
KGl0ZXJhdG9yKTsKKyAgICByZW1vdmVGcm9tQWxsV29ya2VycygqdGhpcyk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlcjo6c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShTdGF0ZSBzdGF0ZSkKQEAg
LTk3LDggKzEwNiwxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXI6OnNjaGVkdWxlVGFza1RvVXBkYXRl
U3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRlXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgICAgICBBU1NFUlQodGhpcy0+c3RhdGUoKSAhPSBzdGF0
ZSk7CisKICAgICAgICAgbV9kYXRhLnN0YXRlID0gc3RhdGU7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBTdGF0ZTo6SW5zdGFsbGluZyAmJiAhbV9pc1N0
b3BwZWQpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlz
cGF0Y2gpOworICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHVwZGF0ZVBlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKTsKICAgICB9KTsKIH0K
IApAQCAtMTQ5LDYgKzE2NSwzNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTZXJ2aWNlV29y
a2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAorY29uc3Qg
Y2hhciogU2VydmljZVdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICJTZXJ2aWNlV29ya2VyIjsKK30KKworYm9vbCBTZXJ2aWNlV29ya2VyOjpjYW5TdXNw
ZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGRvIGJldHRlci4KKyAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXI6OnN0b3AoKQoreworICAgIHJlbW92ZUZyb21BbGxXb3JrZXJzKCp0
aGlzKTsKKyAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgdXBkYXRlUGVuZGluZ0FjdGl2aXR5
Rm9yRXZlbnREaXNwYXRjaCgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRp
bmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKQoreworICAgIC8vIFNlcnZpY2VXb3JrZXIgY2Fu
IGRpc3BhdGNoIGV2ZW50cyB1bnRpbCB0aGV5IGJlY29tZSByZWR1bmRhbnQgb3IgdGhleSBhcmUg
c3RvcHBlZC4KKyAgICBpZiAobV9pc1N0b3BwZWQgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6UmVkdW5k
YW50KSB7CisgICAgICAgIG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaCA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5Rm9y
RXZlbnREaXNwYXRjaCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5Rm9y
RXZlbnREaXNwYXRjaCA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA3NGM4
Y2E5ZGQ5YzI3NmRkZWMxZmZiOGU2ZmRiYzY2MTNmM2VmNmNmLi45YmVjMjdhZjA5N2U1ZDVmZmVk
ZjFjZWIzYTM4NjVjM2VmN2M1ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRGF0YS5oIgpAQCAtNDIsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VyIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlcj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgU2Vy
dmljZVdvcmtlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXI+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgU3RhdGUgPSBTZXJ2aWNlV29ya2VyU3RhdGU7CiAgICAgc3RhdGlj
IFJlZjxTZXJ2aWNlV29ya2VyPiBnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
U2VydmljZVdvcmtlckRhdGEmJik7CkBAIC02NiwxNCArNjcsMjEgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNlcnZpY2VX
b3JrZXJEYXRhJiYpOwotICAgIHN0YXRpYyBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBIYXNoU2V0PFNlcnZpY2VXb3JrZXIqPj4mIG11dGFibGVBbGxXb3JrZXJzKCk7CisgICAgdm9p
ZCB1cGRhdGVQZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3BhdGNoKCk7CiAKICAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0
YTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0Fj
dGl2aXR5PFNlcnZpY2VXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2g7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwKaW5kZXggMTkyZWEwN2FlNThhNDgwNzE0ZDJm
Y2Q3MjViZDczZjk0YzgwMzM4MS4uNzQxYjhlMmNiNjhhY2YzMDc0ZGRhMWYyY2E5YmU3NDhiNTk1
ZmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyLmlkbApAQCAtMjcsNiArMjcsNyBAQAogLy8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQg
bmVzdGVkIHdvcmtlcnMuCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgU2VjdXJlQ29u
dGV4dCwKICAgICBFeHBvc2VkPShXaW5kb3cpLAogICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09S
S0VSLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDg5MjkwNjVlMTMwZWZmNWRiYmRlNTI3ZGFkNTIyYWNkMGY3OWEzMjQuLmY4
Mzg1YjFlNmUwZjhiZGU3Y2YxNzRmOTc5YTI2NDM5MzMyZWMzZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNy0xMS0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3BhdGNoaW5nIGFuIGV2ZW50IG9uIGEgU2VydmljZVdvcmtlciBtYXkgZmFpbCBvciBj
cmFzaCBkdWUgdG8gR0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3OTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10ZXN0LXByZS5qczoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1nYy1ldmVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1n
Yy1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDE3LTExLTE1ICBGcmVkZXJpYyBXYW5n
ICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVy
ZXItPm5lZWRzTGF5b3V0KCkgaW4gV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25l
ZE9iamVjdHNOZWVkTGF5b3V0IHdpdGggTWF0aE1MCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3ctdGVzdC1wcmUu
anMKaW5kZXggNDk2MDAxOTk3YWU3ZTkzYzIyMDIyZjI4MDVlOTQ3OGI3ZDY1YTA4Ni4uZWQyYTll
NzJlNzQyYjgxZTI4MjJlODJkNGM2YWZjOWY5NWEwMjBhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10
ZXN0LXByZS5qcwpAQCAtNjEsMyArNjEsMjAgQEAgYXN5bmMgZnVuY3Rpb24gaW50ZXJjZXB0ZWRG
cmFtZSh3b3JrZXJVUkwsIHNjb3BlVVJMKQogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZyYW1lKTsKICAgICB9KTsKIH0KKworZnVuY3Rpb24gZ2MoKSB7CisgICAgaWYgKHR5cGVv
ZiBHQ0NvbnRyb2xsZXIgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOworICAgIGVsc2UgeworICAgICAgICB2YXIgZ2NSZWMgPSBmdW5jdGlvbiAobikgewor
ICAgICAgICAgICAgaWYgKG4gPCAxKQorICAgICAgICAgICAgICAgIHJldHVybiB7fTsKKyAgICAg
ICAgICAgIHZhciB0ZW1wID0ge2k6ICJhYiIgKyBpICsgKGkgLyAxMDAwMDApfTsKKyAgICAgICAg
ICAgIHRlbXAgKz0gImZvbyI7CisgICAgICAgICAgICBnY1JlYyhuLTEpOworICAgICAgICB9Owor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICAgICAgICAgIGdjUmVj
KDEwKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWM4MTA5MTE1NjQ5ZTE2MmU5ZjkwMzM2ZmE2Zjhl
NTIwYjk1NTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorc3RhdGVjaGFuZ2UgdG8gaW5zdGFsbGVkCitzdGF0ZWNoYW5nZSB0byBhY3RpdmF0
aW5nCitzdGF0ZWNoYW5nZSB0byBhY3RpdmF0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdj
LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y5MzJiNDVjMmRjOWNjODRhMWVjNmUxMDNjZTk4NjJj
YTIyNGQ0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2V0TmV3ZXN0V29y
a2VyKHJlZ2lzdHJhdGlvbikKK3sKKyAgICBpZiAocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpCisg
ICAgICAgIHJldHVybiByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBpZiAocmVnaXN0cmF0
aW9uLndhaXRpbmcpCisgICAgICAgIHJldHVybiByZWdpc3RyYXRpb24ud2FpdGluZzsKKyAgICBy
ZXR1cm4gcmVnaXN0cmF0aW9uLmFjdGl2ZTsKK30KKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoInJlc291cmNlcy9lbXB0eS5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihfcmVnaXN0
cmF0aW9uKSB7CisgICAgcmVnaXN0cmF0aW9uID0gX3JlZ2lzdHJhdGlvbjsKKyAgICByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZy5hZGRFdmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9u
KCkgeworICAgICAgICBnYygpOworICAgICAgICBsZXQgbmV3U3RhdGUgPSBnZXROZXdlc3RXb3Jr
ZXIocmVnaXN0cmF0aW9uKS5zdGF0ZTsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgbG9nKCJzdGF0
ZWNoYW5nZSB0byAiICsgbmV3U3RhdGUpOworICAgICAgICBpZiAobmV3U3RhdGUgPT0gImFjdGl2
YXRlZCIpCisgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICB9KTsKKyAgICBnYygpOwor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGdjKCk7CisgICAgfSwgMCk7Cit9
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327076</attachid>
            <date>2017-11-16 10:13:27 -0800</date>
            <delta_ts>2017-11-16 10:21:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179745-20171116101327.patch</filename>
            <type>text/plain</type>
            <size>11140</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwNGE1OWFkYzQ2ZDcx
NmMwYWEyYThlNzFjMzg0N2E0MDMzYmZiMC4uYWRhMmZlYTFmOGVkYWE1NjNjMzAzNWNiMWYwNGJl
YzQzMGY3NTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTExLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4gZXZl
bnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NzQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYW4g
ZXZlbnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBHQy4gV2Ug
bmVlZCB0byBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBhIFNlcnZpY2VXb3JrZXIncyB3cmFwcGVy
IHN0YXlzIGFsaXZlIGFzIGxvbmcgYXMgd2UgbWF5IGRpc3BhdGNoIGV2ZW50cyBvbiBpdC4KKwor
ICAgICAgICBLZWVwIHRoZSB3cmFwcGVyIGFsaXZlIGJ5IG1ha2luZyBTZXJ2aWNlV29ya2VyIGFu
IEFjdGl2ZURPTU9iamVjdCBhbmQgbWFraW5nIHN1cmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0
aW9uIG9iamVjdCBrZWVwcyBhIFBlbmRpbmdBY3Rpdml0eSBhbGl2ZSB3aGlsZSBpdCBtYXkgZGlz
cGF0Y2ggSlMgZXZlbnRzLgorICAgICAgICBUaGUgb25seSBldmVudCBkaXNwYXRjaGVkIG9uIFNl
cnZpY2VXb3JrZXIgb2JqZWN0cyBpcyB0aGUgInN0YXRlY2hhbmdlIiBvbmUuIFdlIG1heQorICAg
ICAgICBkaXNwYXRjaCBzdGF0ZWNoYW5nZSBldmVudHMgb24gYSBTZXJ2aWNlV29ya2VyIHVudGls
IGl0cyBzdGF0ZSBiZWNvbWVzICJyZWR1bmRhbnQiLgorICAgICAgICBXZSB0aGVyZWZvcmUgdGFr
ZSBhIFBlbmRpbmdBY3Rpdml0eSB3aGVuIHRoZSBTZXJ2aWNlV29ya2VyJ3Mgc3RhdGUgaXMgb3Ig
YmVjb21lcworICAgICAgICBub24tcmVkdW5kYW50IChiZWNvbWluZyBub24gcmVkdW5kYW50IGNh
biBvbmx5IGhhcHBlbiB3aGVuIHN3aXRjaGluZyBpbml0aWFsbHkgZnJvbQorICAgICAgICByZWR1
bmRhbnQgdG8gaW5zdGFsbGluZywgYXQgd2hpY2ggcG9pbnQgdGhlIFNlcnZpY2VXb3JrZXIgb2Jq
ZWN0IGlzIG5vdCBleHBvc2VkIHRvCisgICAgICAgIHRoZSBKUyB5ZXQpLiBXZSByZWxlYXNlIHRo
ZSBQZW5kaW5nQWN0aXZpdHkgd2hlbiB0aGUgU2VydmljZVdvcmtlcidzIHN0YXRlIGJlY29tZXMK
KyAgICAgICAgcmVkdW5kYW50IG9yIHRoZSBBY3RpdmVET01PYmplY3QgaXMgc3RvcHBlZCAodG8g
YXZvaWQgbGVha3Mgb24gbmF2aWdhdGlvbikuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQuaHRtbAorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXV0
YWJsZUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6cmVtb3Zl
RnJvbUFsbFdvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Z2V0T3JD
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6U2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjp+U2VydmljZVdvcmtlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRpbmdBY3Rp
dml0eUZvckV2ZW50RGlzcGF0Y2gpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsOgor
CiAyMDE3LTExLTE2ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBDb25zaWRlciBub24tbWFpbiBmcmFtZXMgZm9yIGZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5n
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3Bw
CmluZGV4IDc3OTY2Mjc2NTYzYWM4M2M1MWE2NDAzZWFiNDBjYTgwYjdkODE4NTcuLjNmYjMyZmI0
ZWNjNThkODhjMTc4ODY3NmYxMjMwMDhjOTg2MzFiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKQEAgLTU5LDIxICs1OSwyOCBAQCBS
ZWY8U2VydmljZVdvcmtlcj4gU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUwogICAgIGF1dG8gaXQgPSBhbGxXb3JrZXJzKCkuZmluZChk
YXRhLmlkZW50aWZpZXIpOwogICAgIGlmIChpdCAhPSBhbGxXb3JrZXJzKCkuZW5kKCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIGlmICh3
b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSAmY29udGV4dCkKKyAgICAgICAgICAg
IGlmICh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSAmY29udGV4dCkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCghd29ya2VyLT5tX2lzU3RvcHBlZCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuICp3b3JrZXI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlcihjb250ZXh0LCBXVEZNb3ZlKGRhdGEp
KSk7CiB9CiAKIFNlcnZpY2VXb3JrZXI6OlNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgU2VydmljZVdvcmtlckRhdGEmJiBkYXRhKQotICAgIDogQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRl
eHQpCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKIHsKKyAgICBzdXNwZW5kSWZOZWVkZWQo
KTsKKwogICAgIGF1dG8gcmVzdWx0ID0gbXV0YWJsZUFsbFdvcmtlcnMoKS5lbnN1cmUoaWRlbnRp
ZmllcigpLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoU2V0PFNlcnZpY2VXb3JrZXIqPigpOwog
ICAgIH0pOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKHRoaXMpOworCisgICAgcmVs
YXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgdXBkYXRlUGVuZGluZ0FjdGl2aXR5Rm9yRXZl
bnREaXNwYXRjaCgpOwogfQogCiBTZXJ2aWNlV29ya2VyOjp+U2VydmljZVdvcmtlcigpCkBAIC05
Nyw4ICsxMDQsMTUgQEAgdm9pZCBTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZVN0
YXRlKFN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBjb250ZXh0LT5wb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdGF0ZV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPnN0YXRlKCkgIT0gc3RhdGUp
OworCiAgICAgICAgIG1fZGF0YS5zdGF0ZSA9IHN0YXRlOwotICAgICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBpZiAoc3RhdGUgIT0gU3RhdGU6Okluc3RhbGxpbmcgJiYgIW1faXNTdG9w
cGVkKSB7CisgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3Bh
dGNoKTsKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIH0KKworICAgICAg
ICB1cGRhdGVQZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3BhdGNoKCk7CiAgICAgfSk7CiB9CiAK
QEAgLTE0OSw2ICsxNjMsMzUgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2VydmljZVdvcmtl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKK2NvbnN0IGNo
YXIqIFNlcnZpY2VXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiAiU2VydmljZVdvcmtlciI7Cit9CisKK2Jvb2wgU2VydmljZVdvcmtlcjo6Y2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBkbyBiZXR0ZXIgYXMgdGhpcyBwcmV2ZW50cyB0aGUgcGFnZSBmcm9tIGVudGVyaW5nIFBhZ2VD
YWNoZSB3aGVuIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIuCisgICAgcmV0dXJuICFoYXNQZW5k
aW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyOjpzdG9wKCkKK3sKKyAgICBt
X2lzU3RvcHBlZCA9IHRydWU7CisgICAgdXBkYXRlUGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNw
YXRjaCgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXI6OnVwZGF0ZVBlbmRpbmdBY3Rpdml0eUZv
ckV2ZW50RGlzcGF0Y2goKQoreworICAgIC8vIFNlcnZpY2VXb3JrZXJzIGNhbiBkaXNwYXRjaCBl
dmVudHMgdW50aWwgdGhleSBiZWNvbWUgcmVkdW5kYW50IG9yIHRoZXkgYXJlIHN0b3BwZWQuCisg
ICAgaWYgKG1faXNTdG9wcGVkIHx8IHN0YXRlKCkgPT0gU3RhdGU6OlJlZHVuZGFudCkgeworICAg
ICAgICBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2ggPSBudWxscHRyOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0
Y2gpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0
Y2ggPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKaW5kZXggNzRjOGNhOWRkOWMyNzZk
ZGVjMWZmYjhlNmZkYmM2NjEzZjNlZjZjZi4uNDYzZDkyYjYwYmViNzA4ZmZlNzM0OTQyNjU5ZmNm
M2EzYTJlY2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckRhdGEuaCIKQEAgLTQyLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKIAotY2xhc3MgU2VydmljZVdvcmtlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIFNlcnZpY2VXb3JrZXIg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyPiwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAg
IHVzaW5nIFN0YXRlID0gU2VydmljZVdvcmtlclN0YXRlOwogICAgIHN0YXRpYyBSZWY8U2Vydmlj
ZVdvcmtlcj4gZ2V0T3JDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYpOwpAQCAtNjcsMTMgKzY4LDIxIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2Vy
dmljZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU2VydmljZVdvcmtlckRhdGEmJik7
CiAgICAgc3RhdGljIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hTZXQ8U2Vy
dmljZVdvcmtlcio+PiYgbXV0YWJsZUFsbFdvcmtlcnMoKTsKKyAgICB2b2lkIHVwZGF0ZVBlbmRp
bmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKTsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworCiAgICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOworICAgIGJvb2wg
bV9pc1N0b3BwZWQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8U2Vydmlj
ZVdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyLmlkbAppbmRleCAxOTJlYTA3YWU1OGE0ODA3MTRkMmZjZDcyNWJkNzNmOTRj
ODAzMzgxLi43NDFiOGUyY2I2OGFjZjMwNzRkZGExZjJjYTliZTc0OGI1OTVmYzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsCkBAIC0y
Nyw2ICsyNyw3IEBACiAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBuZXN0ZWQgd29ya2Vy
cy4KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4
cG9zZWQ9KFdpbmRvdyksCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NmNiMzkxMmM4NTliM2ViNzBlMTE3MDNjNzU5MjdkNWNjNTQ5Mjk5Yi4uMzM0YTVlNTFkNGE4Njkx
NmU4ZjE1NTE3Yjg5NmIzOTkwMDM0MjZmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEx
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGF0Y2hp
bmcgYW4gZXZlbnQgb24gYSBTZXJ2aWNlV29ya2VyIG1heSBmYWlsIG9yIGNyYXNoIGR1ZSB0byBH
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NzQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQWRkIGxh
eW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWdjLWV2ZW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTctMTEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIExheW91dFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtY29ycy14aHIuaHR0cHMu
aHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10ZXN0LXByZS5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdy10ZXN0LXByZS5qcwppbmRl
eCA0OTYwMDE5OTdhZTdlOTNjMjIwMjJmMjgwNWU5NDc4YjdkNjVhMDg2Li5lZDJhOWU3MmU3NDJi
ODFlMjgyMmU4MmQ0YzZhZmM5Zjk1YTAyMGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N3LXRlc3QtcHJl
LmpzCkBAIC02MSwzICs2MSwyMCBAQCBhc3luYyBmdW5jdGlvbiBpbnRlcmNlcHRlZEZyYW1lKHdv
cmtlclVSTCwgc2NvcGVVUkwpCiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJh
bWUpOwogICAgIH0pOwogfQorCitmdW5jdGlvbiBnYygpIHsKKyAgICBpZiAodHlwZW9mIEdDQ29u
dHJvbGxlciAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7
CisgICAgZWxzZSB7CisgICAgICAgIHZhciBnY1JlYyA9IGZ1bmN0aW9uIChuKSB7CisgICAgICAg
ICAgICBpZiAobiA8IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIHt9OworICAgICAgICAgICAg
dmFyIHRlbXAgPSB7aTogImFiIiArIGkgKyAoaSAvIDEwMDAwMCl9OworICAgICAgICAgICAgdGVt
cCArPSAiZm9vIjsKKyAgICAgICAgICAgIGdjUmVjKG4tMSk7CisgICAgICAgIH07CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKQorICAgICAgICAgICAgZ2NSZWMoMTApOwor
ICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1YzgxMDkxMTU2NDllMTYyZTlmOTAzMzZmYTZmOGU1MjBiOTU1
NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2aWNlLXdvcmtlci1nYy1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CitzdGF0ZWNoYW5nZSB0byBpbnN0YWxsZWQKK3N0YXRlY2hhbmdlIHRvIGFjdGl2YXRpbmcKK3N0
YXRlY2hhbmdlIHRvIGFjdGl2YXRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1nYy1ldmVudC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZjkzMmI0NWMyZGM5Y2M4NGExZWM2ZTEwM2NlOTg2MmNhMjI0ZDQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZS13b3JrZXItZ2MtZXZlbnQuaHRtbApAQCAtMCwwICsxLDMzIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnZXROZXdlc3RXb3JrZXIocmVn
aXN0cmF0aW9uKQoreworICAgIGlmIChyZWdpc3RyYXRpb24uaW5zdGFsbGluZykKKyAgICAgICAg
cmV0dXJuIHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmIChyZWdpc3RyYXRpb24ud2Fp
dGluZykKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbi53YWl0aW5nOworICAgIHJldHVybiBy
ZWdpc3RyYXRpb24uYWN0aXZlOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigicmVzb3VyY2VzL2VtcHR5LmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKF9yZWdpc3RyYXRpb24p
IHsKKyAgICByZWdpc3RyYXRpb24gPSBfcmVnaXN0cmF0aW9uOworICAgIHJlZ2lzdHJhdGlvbi5p
bnN0YWxsaW5nLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGdjKCk7CisgICAgICAgIGxldCBuZXdTdGF0ZSA9IGdldE5ld2VzdFdvcmtlcihyZWdp
c3RyYXRpb24pLnN0YXRlOworICAgICAgICBnYygpOworICAgICAgICBsb2coInN0YXRlY2hhbmdl
IHRvICIgKyBuZXdTdGF0ZSk7CisgICAgICAgIGlmIChuZXdTdGF0ZSA9PSAiYWN0aXZhdGVkIikK
KyAgICAgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgIH0pOworICAgIGdjKCk7CisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZ2MoKTsKKyAgICB9LCAwKTsKK30pOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>