<?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>183016</bug_id>
          
          <creation_ts>2018-02-21 14:18:03 -0800</creation_ts>
          <short_desc>[Curl] Implement connection limit.</short_desc>
          <delta_ts>2018-03-09 10:52:20 -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>
          
          
          <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="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>lethalman88</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401267</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-21 14:18:03 -0800</bug_when>
    <thetext>Will add max total connections and max connections per domain. Also for Curl specific, the option for internal limitation for resource usage will be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401339</commentid>
    <comment_count>1</comment_count>
      <attachid>334429</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-21 17:29:10 -0800</bug_when>
    <thetext>Created attachment 334429
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401341</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-21 17:32:58 -0800</bug_when>
    <thetext>*** Bug 16364 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401344</commentid>
    <comment_count>3</comment_count>
      <attachid>334429</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-02-21 18:03:18 -0800</bug_when>
    <thetext>Comment on attachment 334429
patch

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

&gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:-41
&gt; -#include &lt;wtf/NeverDestroyed.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; -CurlRequestScheduler&amp; CurlRequestScheduler::singleton()
&gt; +CurlRequestScheduler::CurlRequestScheduler(long maxConnects, long maxTotalConnections, long maxHostConnections)
&gt; +    : m_maxConnects(maxConnects)
&gt; +    , m_maxTotalConnections(maxTotalConnections)
&gt; +    , m_maxHostConnections(maxHostConnections)
&gt;  {
&gt; -    static NeverDestroyed&lt;CurlRequestScheduler&gt; sharedInstance;
&gt; -    return sharedInstance;

Would we really ever need more than one instance? This is more or less a global property right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401353</commentid>
    <comment_count>4</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-21 19:21:37 -0800</bug_when>
    <thetext>Yes, one instance per process. I didn’t change that because it was  a singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404911</commentid>
    <comment_count>5</comment_count>
      <attachid>335344</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 14:15:36 -0800</bug_when>
    <thetext>Created attachment 335344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404929</commentid>
    <comment_count>6</comment_count>
      <attachid>335344</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-08 14:48:02 -0800</bug_when>
    <thetext>Comment on attachment 335344
Patch

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:143
&gt; +        m_scheduler = std::make_unique&lt;CurlRequestScheduler&gt;(maxConnects, maxTotalConnections, maxHostConnections);

This seems to require CurlContext to be used as a singleton.
This is probably fine but I don&apos;t think you gain much at this design compared to allocating m_scheduler in CurlContext constructor as a regular member (?) and the latter approach is probably easier to read.
You could also make m_scheduler a UniqueRef&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404958</commentid>
    <comment_count>7</comment_count>
      <attachid>335344</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 15:41:36 -0800</bug_when>
    <thetext>Comment on attachment 335344
Patch

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

Thanks.

&gt;&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:143
&gt;&gt; +        m_scheduler = std::make_unique&lt;CurlRequestScheduler&gt;(maxConnects, maxTotalConnections, maxHostConnections);
&gt; 
&gt; This seems to require CurlContext to be used as a singleton.
&gt; This is probably fine but I don&apos;t think you gain much at this design compared to allocating m_scheduler in CurlContext constructor as a regular member (?) and the latter approach is probably easier to read.
&gt; You could also make m_scheduler a UniqueRef&lt;&gt;.

CurlContext is designed as a singleton already. It can exist only one instance per process. We need to pass dynamic parameters to Scheduler, so we cannot make it a simple member variable. So unique_ptr or UniqueRef must be used at that time and instantiation like this code will be appeared on the CurlContext constructor. I think the complexity of code is similar and this code has a benefit of the lazy instantication.

On the other hand, I didn&apos;t measure the cost of call_once() here. I assume the cost is pretty similar to GCD&apos;s dispatch_once, but still some sort of cost exists compared to instantiation at the constructor.

The actual use case will be 99.9% of chance for scheduler to be instantiated, so moving to constructor may be the better choice.

I don&apos;t think UniqueRef needed here. UniqueRef exposes exclusiveness of Ref object but in this case Scheduler is simple class. No need to switch to Ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404993</commentid>
    <comment_count>8</comment_count>
      <attachid>335369</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 17:10:40 -0800</bug_when>
    <thetext>Created attachment 335369
PATCH

Move instantiation of scheduler into constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404997</commentid>
    <comment_count>9</comment_count>
      <attachid>335369</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-08 17:23:51 -0800</bug_when>
    <thetext>Comment on attachment 335369
PATCH

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:238
&gt; +

If we call setMaxConnects once to a value and then setMaxConnects to -1, shouldn&apos;t we update m_multiHandle as well?
If we only call it once, maybe maxConnects (and below parameters as well) should be passed in CurlMultiHandle constructor.

&gt; Source/WebCore/platform/network/curl/CurlContext.h:121
&gt; +    CurlRequestScheduler&amp; scheduler() { return *m_scheduler; }

If m_scheduler was a UniqueRef&lt;CurlRequestScheduler&gt;, there would be no need for &apos;*&apos;.
A UniqueRef is just a unique_ptr that cannot have a null pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405063</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 21:57:35 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 335369 [details]
&gt; PATCH
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335369&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:238
&gt; &gt; +
&gt; 
&gt; If we call setMaxConnects once to a value and then setMaxConnects to -1,
&gt; shouldn&apos;t we update m_multiHandle as well?
&gt; If we only call it once, maybe maxConnects (and below parameters as well)
&gt; should be passed in CurlMultiHandle constructor.

We design these values as configuration variables, which can be set at the initialization time. That&apos;s why they are passed by environment variable. Once our NetworkProcess implementation are in public, we will switch them via CreationParameter.

 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.h:121
&gt; &gt; +    CurlRequestScheduler&amp; scheduler() { return *m_scheduler; }
&gt; 
&gt; If m_scheduler was a UniqueRef&lt;CurlRequestScheduler&gt;, there would be no need
&gt; for &apos;*&apos;.
&gt; A UniqueRef is just a unique_ptr that cannot have a null pointer.

Interesting. Good to know. I miss understood about that class. Still we cannot use this because we have to set the value at constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405065</commentid>
    <comment_count>11</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 22:00:32 -0800</bug_when>
    <thetext>&gt; Youenn Fablet.

Thanks for r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405066</commentid>
    <comment_count>12</comment_count>
      <attachid>335392</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 22:01:01 -0800</bug_when>
    <thetext>Created attachment 335392
FIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405227</commentid>
    <comment_count>13</comment_count>
      <attachid>335392</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 10:51:35 -0800</bug_when>
    <thetext>Comment on attachment 335392
FIX

Clearing flags on attachment: 335392

Committed r229471: &lt;https://trac.webkit.org/changeset/229471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405228</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 10:51:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405230</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-09 10:52:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/38308596&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334429</attachid>
            <date>2018-02-21 17:29:10 -0800</date>
            <delta_ts>2018-03-08 14:15:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>183016.diff</filename>
            <type>text/plain</type>
            <size>10721</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NTAyM2RkN2E4OC4uYmY2ZTJmZTc3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOC0wMi0yMSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBjb25uZWN0aW9uIGxpbWl0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDE2CisKKyAg
ICAgICAgV2lsbCBhZGQgbWF4IHRvdGFsIGNvbm5lY3Rpb25zIGFuZCBtYXggY29ubmVjdGlvbnMg
cGVyIGRvbWFpbi4KKyAgICAgICAgQWxzbyBmb3IgQ3VybCBzcGVjaWZpYywgdGhlIG9wdGlvbiBm
b3IgaW50ZXJuYWwgbGltaXRhdGlvbiBmb3IKKyAgICAgICAgcmVzb3VyY2UgdXNhZ2Ugd2lsbCBi
ZSBhZGRlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsQ29udGV4dDo6c2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0
aUhhbmRsZTo6c2V0TWF4Q29ubmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpSGFu
ZGxlOjpzZXRNYXhUb3RhbENvbm5lY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0
aUhhbmRsZTo6c2V0TWF4SG9zdENvbm5lY3Rpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnN0YXJ0V2l0
aEpvYk1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9y
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1c0No
YW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Q3VybFJl
cXVlc3RTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6
OndvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6
c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuaDoKKwogMjAxOC0wMi0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VydmljZVdvcmtlckpvYjo6bV9sYXN0UmVzcG9uc2Ug
aXMgdW5uZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDVhNDI5YTlmODE0Li5hNDg0ZDQ0ZDk5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
Y3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAKICNpZiBV
U0UoQ1VSTCkKKyNpbmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlIDxOZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTgzLDYgKzg1
LDI4IEBAIHZvaWQgQ3VybENvbnRleHQ6OmluaXRTaGFyZUhhbmRsZSgpCiAgICAgY3VybF9lYXN5
X2NsZWFudXAoY3VybCk7CiB9CiAKK0N1cmxSZXF1ZXN0U2NoZWR1bGVyJiBDdXJsQ29udGV4dDo6
c2NoZWR1bGVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlLCBbdGhpc10geworICAgICAgICBsb25nIG1heENvbm5lY3RzIHsgQ3Vy
bERlZmF1bHRNYXhDb25uZWN0cyB9OworICAgICAgICBsb25nIG1heFRvdGFsQ29ubmVjdGlvbnMg
eyBDdXJsRGVmYXVsdE1heFRvdGFsQ29ubmVjdGlvbnMgfTsKKyAgICAgICAgbG9uZyBtYXhIb3N0
Q29ubmVjdGlvbnMgeyBDdXJsRGVmYXVsdE1heEhvc3RDb25uZWN0aW9ucyB9OworCisgICAgICAg
IGlmIChjb25zdCBjaGFyKiBzdHIgPSBnZXRlbnYoIldFQktJVF9DVVJMX01BWENPTk5FQ1RTIikp
CisgICAgICAgICAgICBzc2NhbmYoc3RyLCAiJWxkIiwgJm1heENvbm5lY3RzKTsKKworICAgICAg
ICBpZiAoY29uc3QgY2hhciogc3RyID0gZ2V0ZW52KCJXRUJLSVRfQ1VSTF9NQVhfVE9UQUxfQ09O
TkVDVElPTlMiKSkKKyAgICAgICAgICAgIHNzY2FuZihzdHIsICIlbGQiLCAmbWF4VG90YWxDb25u
ZWN0aW9ucyk7CisKKyAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHN0ciA9IGdldGVudigiV0VCS0lU
X0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKKyAgICAgICAgICAgIHNzY2FuZihzdHIsICIl
bGQiLCAmbWF4SG9zdENvbm5lY3Rpb25zKTsKKworICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENv
bm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIH0pOworICAgIHJldHVybiAqbV9z
Y2hlZHVsZXI7Cit9CisKIC8vIFByb3h5ID09PT09PT09PT09PT09PT09PT09PT09CiAKIGNvbnN0
IFN0cmluZyBDdXJsQ29udGV4dDo6UHJveHlJbmZvOjp1cmwoKSBjb25zdApAQCAtMTc4LDYgKzIw
MiwyNCBAQCBDdXJsTXVsdGlIYW5kbGU6On5DdXJsTXVsdGlIYW5kbGUoKQogICAgICAgICBjdXJs
X211bHRpX2NsZWFudXAobV9tdWx0aUhhbmRsZSk7CiB9CiAKK3ZvaWQgQ3VybE11bHRpSGFuZGxl
OjpzZXRNYXhDb25uZWN0cyhsb25nIG1heENvbm5lY3RzKQoreworICAgIGlmIChtYXhDb25uZWN0
cyA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIGN1cmxfbXVsdGlfc2V0b3B0KG1fbXVsdGlI
YW5kbGUsIENVUkxNT1BUX01BWENPTk5FQ1RTLCBtYXhDb25uZWN0cyk7Cit9CisKK3ZvaWQgQ3Vy
bE11bHRpSGFuZGxlOjpzZXRNYXhUb3RhbENvbm5lY3Rpb25zKGxvbmcgbWF4VG90YWxDb25uZWN0
aW9ucykKK3sKKyAgICBjdXJsX211bHRpX3NldG9wdChtX211bHRpSGFuZGxlLCBDVVJMTU9QVF9N
QVhfVE9UQUxfQ09OTkVDVElPTlMsIG1heFRvdGFsQ29ubmVjdGlvbnMpOworfQorCit2b2lkIEN1
cmxNdWx0aUhhbmRsZTo6c2V0TWF4SG9zdENvbm5lY3Rpb25zKGxvbmcgbWF4SG9zdENvbm5lY3Rp
b25zKQoreworICAgIGN1cmxfbXVsdGlfc2V0b3B0KG1fbXVsdGlIYW5kbGUsIENVUkxNT1BUX01B
WF9IT1NUX0NPTk5FQ1RJT05TLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworfQorCiBDVVJMTWNvZGUg
Q3VybE11bHRpSGFuZGxlOjphZGRIYW5kbGUoQ1VSTCogaGFuZGxlKQogewogICAgIHJldHVybiBj
dXJsX211bHRpX2FkZF9oYW5kbGUobV9tdWx0aUhhbmRsZSwgaGFuZGxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggZjUy
YmQ1NWI1NjkuLjM3MGEyZmQ1MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApAQCAtNTIsNiArNTIsMTIgQEAgZW51bSBjbGFz
cyBDdXJsUHJveHlUeXBlIHsKICAgICBTb2NrczVIb3N0bmFtZSA9IENVUkxQUk9YWV9TT0NLUzVf
SE9TVE5BTUUKIH07CiAKKy8vIFZhbHVlcyB0YWtlbiBmcm9tIGh0dHA6Ly93d3cuYnJvd3NlcnNj
b3BlLm9yZy8gZm9sbG93aW5nCisvLyB0aGUgcnVsZSAiRG8gV2hhdCBFdmVyeSBPdGhlciBNb2Rl
cm4gQnJvd3NlciBJcyBEb2luZyIuCitjb25zdCBsb25nIEN1cmxEZWZhdWx0TWF4Q29ubmVjdHMg
eyAtMSB9OyAvLyAtMSA6IERvZXMgbm90IHNldCBDVVJMTU9QVF9NQVhDT05ORUNUUworY29uc3Qg
bG9uZyBDdXJsRGVmYXVsdE1heFRvdGFsQ29ubmVjdGlvbnMgeyAxNyB9OworY29uc3QgbG9uZyBD
dXJsRGVmYXVsdE1heEhvc3RDb25uZWN0aW9ucyB7IDYgfTsKKwogLy8gQ3VybEdsb2JhbCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gdG8gbWFrZSB0aGUg
aW5pdGlhbGl6YXRpb24gb2YgbGliY3VybCBoYXBwZW4gYmVmb3JlIG90aGVyIGluaXRpYWxpemF0
aW9uIG9mIEN1cmxDb250ZXh0CiAKQEAgLTg5LDYgKzk1LDggQEAgcHJpdmF0ZToKIAogLy8gQ3Vy
bENvbnRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAor
Y2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXI7CisKIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGlj
IEN1cmxHbG9iYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxDb250ZXh0KTsKICAg
ICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybENvbnRleHQ+OwpAQCAtMTA5LDYgKzExNyw4IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEN1cmxTaGFyZUhhbmRsZSYgc2hhcmVIYW5kbGUoKSB7IHJl
dHVybiBtX3NoYXJlSGFuZGxlOyB9CiAKKyAgICBDdXJsUmVxdWVzdFNjaGVkdWxlciYgc2NoZWR1
bGVyKCk7CisKICAgICAvLyBQcm94eQogICAgIGNvbnN0IFByb3h5SW5mbyYgcHJveHlJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm94eTsgfQogICAgIHZvaWQgc2V0UHJveHlJbmZvKGNvbnN0IFBy
b3h5SW5mbyYgaW5mbykgeyBtX3Byb3h5ID0gaW5mbzsgIH0KQEAgLTEyOSw2ICsxMzksNyBAQCBw
cml2YXRlOgogICAgIFByb3h5SW5mbyBtX3Byb3h5OwogICAgIEN1cmxTaGFyZUhhbmRsZSBtX3No
YXJlSGFuZGxlOwogICAgIEN1cmxTU0xIYW5kbGUgbV9zc2xIYW5kbGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKIAogICAgIEN1cmxDb250
ZXh0KCk7CiAgICAgdm9pZCBpbml0U2hhcmVIYW5kbGUoKTsKQEAgLTE0OCw2ICsxNTksMTAgQEAg
cHVibGljOgogICAgIEN1cmxNdWx0aUhhbmRsZSgpOwogICAgIH5DdXJsTXVsdGlIYW5kbGUoKTsK
IAorICAgIHZvaWQgc2V0TWF4Q29ubmVjdHMobG9uZyk7CisgICAgdm9pZCBzZXRNYXhUb3RhbENv
bm5lY3Rpb25zKGxvbmcpOworICAgIHZvaWQgc2V0TWF4SG9zdENvbm5lY3Rpb25zKGxvbmcpOwor
CiAgICAgQ1VSTE1jb2RlIGFkZEhhbmRsZShDVVJMKik7CiAgICAgQ1VSTE1jb2RlIHJlbW92ZUhh
bmRsZShDVVJMKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDAzNjUzN2Y4YTUzLi40ZmFjN2Q3N2E4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnN0YXJ0V2l0aEpvYk1h
bmFnZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBDdXJsUmVxdWVz
dFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuYWRkKHRoaXMpOworICAgIEN1cmxDb250ZXh0OjpzaW5n
bGV0b24oKS5zY2hlZHVsZXIoKS5hZGQodGhpcyk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNh
bmNlbCgpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkKICAg
ICBtX2NhbmNlbGxlZCA9IHRydWU7CiAKICAgICBpZiAoIW1faXNTeW5jUmVxdWVzdCkgewotICAg
ICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCk7
CisgICAgICAgIGF1dG8mIHNjaGVkdWxlciA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zY2hl
ZHVsZXIoKTsKIAogICAgICAgICBpZiAobmVlZFRvSW52b2tlRGlkQ2FuY2VsVHJhbnNmZXIoKSkg
ewogICAgICAgICAgICAgc2NoZWR1bGVyLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2VGb3JGaWxlKFVSTCYgdXJsKQogCiAgICAgaWYg
KCFtX2lzU3luY1JlcXVlc3QpIHsKICAgICAgICAgLy8gRGlkUmVjZWl2ZVJlc3BvbnNlIG11c3Qg
bm90IGJlIGNhbGxlZCBpbW1lZGlhdGVseQotICAgICAgICBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6
c2luZ2xldG9uKCkuY2FsbE9uV29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKCkgeworICAgICAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2NoZWR1bGVyKCku
Y2FsbE9uV29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHByb3Rl
Y3RlZFRoaXMtPm1fcmVzcG9uc2UsIEFjdGlvbjo6U3RhcnRUcmFuc2Zlcik7CiAgICAgICAgIH0p
OwogICAgIH0gZWxzZSB7CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y29t
cGxldGVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBzdGFydFdpdGhKb2JNYW5hZ2VyKCk7
CiAgICAgfSBlbHNlIGlmIChtX2FjdGlvbkFmdGVySW52b2tlID09IEFjdGlvbjo6RmluaXNoVHJh
bnNmZXIpIHsKICAgICAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QpIHsKLSAgICAgICAgICAgIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyOjpzaW5nbGV0b24oKS5jYWxsT25Xb3JrZXJUaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmluaXNoZWRSZXN1bHRDb2RlID0gbV9maW5pc2hl
ZFJlc3VsdENvZGVdKCkgeworICAgICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNj
aGVkdWxlcigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBmaW5pc2hlZFJlc3VsdENvZGUgPSBtX2ZpbmlzaGVkUmVzdWx0Q29kZV0oKSB7CiAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkQ29tcGxldGVUcmFuc2ZlcihmaW5pc2hlZFJl
c3VsdENvZGUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNjAyLDcgKzYw
Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1c0NoYW5nZWQoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1faXNTeW5jUmVxdWVzdCAmJiBpc01haW5UaHJlYWQoKSkgewot
ICAgICAgICBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuY2FsbE9uV29ya2VyVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdXNlZCA9IGlzUGF1c2VkKCld
KCkgeworICAgICAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2NoZWR1bGVyKCkuY2FsbE9u
V29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdXNlZCA9IGlz
UGF1c2VkKCldKCkgewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzQ29tcGxldGVk
T3JDYW5jZWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuY3BwCmluZGV4IGUzYjQ1YmUyYzhjLi4xMWYyMTAwMjcwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAKICNpZiBVU0UoQ1VSTCkKIAogI2luY2x1
ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VybFJlcXVlc3RTY2hlZHVsZXIm
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzaW5nbGV0b24oKQorQ3VybFJlcXVlc3RTY2hlZHVsZXI6
OkN1cmxSZXF1ZXN0U2NoZWR1bGVyKGxvbmcgbWF4Q29ubmVjdHMsIGxvbmcgbWF4VG90YWxDb25u
ZWN0aW9ucywgbG9uZyBtYXhIb3N0Q29ubmVjdGlvbnMpCisgICAgOiBtX21heENvbm5lY3RzKG1h
eENvbm5lY3RzKQorICAgICwgbV9tYXhUb3RhbENvbm5lY3Rpb25zKG1heFRvdGFsQ29ubmVjdGlv
bnMpCisgICAgLCBtX21heEhvc3RDb25uZWN0aW9ucyhtYXhIb3N0Q29ubmVjdGlvbnMpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPiBzaGFyZWRJbnN0
YW5jZTsKLSAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7CiB9CiAKIGJvb2wgQ3VybFJlcXVlc3RT
Y2hlZHVsZXI6OmFkZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50KQpAQCAtMTM1
LDYgKzEzNSw5IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxl
LT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5lY3RzKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZS0+
c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21heFRvdGFsQ29ubmVjdGlvbnMpOworICAgIG1fY3Vy
bE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMp
OwogCiAgICAgd2hpbGUgKG1fcnVuVGhyZWFkKSB7CiAgICAgICAgIGV4ZWN1dGVUYXNrcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuaAppbmRleCA4YmFmMThlMGY3My4uMjY0YjkwZTEwNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNj
aGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5oCkBAIC00MSw4ICs0MSw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsUmVxdWVzdFNjaGVkdWxlcik7
CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPjsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgQ3VybFJlcXVlc3RTY2hlZHVsZXImIHNpbmdsZXRvbigpOwotCisgICAg
Q3VybFJlcXVlc3RTY2hlZHVsZXIobG9uZyBtYXhDb25uZWN0cywgbG9uZyBtYXhUb3RhbENvbm5l
Y3Rpb25zLCBsb25nIG1heEhvc3RDb25uZWN0aW9ucyk7CiAgICAgfkN1cmxSZXF1ZXN0U2NoZWR1
bGVyKCkgeyBzdG9wVGhyZWFkKCk7IH0KIAogICAgIGJvb2wgYWRkKEN1cmxSZXF1ZXN0U2NoZWR1
bGVyQ2xpZW50Kik7CkBAIC01MSw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxPbldv
cmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6Ci0gICAgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7Ci0KICAgICB2b2lkIHN0YXJ0VGhyZWFkSWZO
ZWVkZWQoKTsKICAgICB2b2lkIHN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKTsKICAgICB2
b2lkIHN0b3BUaHJlYWQoKTsKQEAgLTc0LDYgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxDVVJMKiwgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqPiBtX2FjdGl2ZUpvYnM7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpSGFuZGxlPiBtX2N1cmxNdWx0aUhhbmRsZTsKKwor
ICAgIGxvbmcgbV9tYXhDb25uZWN0czsKKyAgICBsb25nIG1fbWF4VG90YWxDb25uZWN0aW9uczsK
KyAgICBsb25nIG1fbWF4SG9zdENvbm5lY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335344</attachid>
            <date>2018-03-08 14:15:36 -0800</date>
            <delta_ts>2018-03-08 17:10:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>183016-b9ffaa43587.diff</filename>
            <type>text/plain</type>
            <size>11181</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMzAxN2ZhYjg5Mi4uOTJmYTdiZDJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOC0wMy0wOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBjb25uZWN0aW9uIGxpbWl0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDE2CisKKyAg
ICAgICAgSW1wbGVtZW50IGJvdGggY29ubmVjdGlvbiBsaW1pdCBwZXIgaG9zdCBhbmQgdG90YWwK
KyAgICAgICAgY29ubmVjdGlvbiBsaW1pdCBvbiBjdXJsIG5ldHdvcmsgbGF5ZXIuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJl
Y2F1c2UgdGhlcmUncyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW52aXJvbm1l
bnRWYXJpYWJsZVJlYWRlcjo6c3NjYW5UZW1wbGF0ZTxzaWduZWQ+KToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDb250ZXh0OjpzY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
SGFuZGxlOjpzZXRNYXhDb25uZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlIYW5k
bGU6OnNldE1heFRvdGFsQ29ubmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
SGFuZGxlOjpzZXRNYXhIb3N0Q29ubmVjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c3RhcnRXaXRo
Sm9iTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2VGb3JG
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpjb21wbGV0ZURpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpDdXJsUmVx
dWVzdFNjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6
d29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpz
aW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5oOgorCiAyMDE4LTAzLTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBOU0FuaW1hdGlvbiBpcyBub3Qgd29ya2luZyBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gV2luZG93U2VydmVyIGFjY2VzcyBpcyBibG9ja2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHAKaW5kZXggYmFiMTM5NzhhNDcuLmIzOGExNGUzNmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTI4
LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKIAogI2lmIFVTRShDVVJMKQor
I2luY2x1ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1h
cC5oIgogI2luY2x1ZGUgPE5ldHdvcmtMb2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPG11dGV4Pgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNjYsNiArNjgsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIC8vIGRlZmluZSBzcGVjaWFsaXplZCBtZW1iZXIgZnVuY3Rpb24g
Zm9yIHNwZWNpZmljIHR5cGUuCisgICAgdGVtcGxhdGU8PiBjb25zdGV4cHIgY29uc3QgY2hhciog
c3NjYW5UZW1wbGF0ZTxzaWduZWQ+KCkgeyByZXR1cm4gIiVkIjsgfQogICAgIHRlbXBsYXRlPD4g
Y29uc3RleHByIGNvbnN0IGNoYXIqIHNzY2FuVGVtcGxhdGU8dW5zaWduZWQ+KCkgeyByZXR1cm4g
IiV1IjsgfQogfTsKIApAQCAtMTE4LDYgKzEyMSwzMCBAQCB2b2lkIEN1cmxDb250ZXh0Ojppbml0
U2hhcmVIYW5kbGUoKQogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogfQogCitDdXJsUmVx
dWVzdFNjaGVkdWxlciYgQ3VybENvbnRleHQ6OnNjaGVkdWxlcigpCit7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2U7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZSwgW3RoaXNdIHsKKyAg
ICAgICAgbG9uZyBtYXhDb25uZWN0cyB7IEN1cmxEZWZhdWx0TWF4Q29ubmVjdHMgfTsKKyAgICAg
ICAgbG9uZyBtYXhUb3RhbENvbm5lY3Rpb25zIHsgQ3VybERlZmF1bHRNYXhUb3RhbENvbm5lY3Rp
b25zIH07CisgICAgICAgIGxvbmcgbWF4SG9zdENvbm5lY3Rpb25zIHsgQ3VybERlZmF1bHRNYXhI
b3N0Q29ubmVjdGlvbnMgfTsKKworICAgICAgICBFbnZpcm9ubWVudFZhcmlhYmxlUmVhZGVyIGVu
dlZhcjsKKworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigi
V0VCS0lUX0NVUkxfTUFYQ09OTkVDVFMiKSkKKyAgICAgICAgICAgIG1heENvbm5lY3RzID0gKnZh
bHVlOworCisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJX
RUJLSVRfQ1VSTF9NQVhfVE9UQUxfQ09OTkVDVElPTlMiKSkKKyAgICAgICAgICAgIG1heFRvdGFs
Q29ubmVjdGlvbnMgPSAqdmFsdWU7CisKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZWYXIu
cmVhZEFzPHNpZ25lZD4oIldFQktJVF9DVVJMX01BWF9IT1NUX0NPTk5FQ1RJT05TIikpCisgICAg
ICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CisKKyAgICAgICAgbV9zY2hlZHVs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywg
bWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gKm1fc2NoZWR1bGVyOworfQorCiAvLyBQcm94eSA9PT09PT09PT09PT09PT09PT09PT09
PQogCiBjb25zdCBTdHJpbmcgQ3VybENvbnRleHQ6OlByb3h5SW5mbzo6dXJsKCkgY29uc3QKQEAg
LTIxMyw2ICsyNDAsMjQgQEAgQ3VybE11bHRpSGFuZGxlOjp+Q3VybE11bHRpSGFuZGxlKCkKICAg
ICAgICAgY3VybF9tdWx0aV9jbGVhbnVwKG1fbXVsdGlIYW5kbGUpOwogfQogCit2b2lkIEN1cmxN
dWx0aUhhbmRsZTo6c2V0TWF4Q29ubmVjdHMobG9uZyBtYXhDb25uZWN0cykKK3sKKyAgICBpZiAo
bWF4Q29ubmVjdHMgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBjdXJsX211bHRpX3NldG9w
dChtX211bHRpSGFuZGxlLCBDVVJMTU9QVF9NQVhDT05ORUNUUywgbWF4Q29ubmVjdHMpOworfQor
Cit2b2lkIEN1cmxNdWx0aUhhbmRsZTo6c2V0TWF4VG90YWxDb25uZWN0aW9ucyhsb25nIG1heFRv
dGFsQ29ubmVjdGlvbnMpCit7CisgICAgY3VybF9tdWx0aV9zZXRvcHQobV9tdWx0aUhhbmRsZSwg
Q1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLCBtYXhUb3RhbENvbm5lY3Rpb25zKTsKK30K
Kwordm9pZCBDdXJsTXVsdGlIYW5kbGU6OnNldE1heEhvc3RDb25uZWN0aW9ucyhsb25nIG1heEhv
c3RDb25uZWN0aW9ucykKK3sKKyAgICBjdXJsX211bHRpX3NldG9wdChtX211bHRpSGFuZGxlLCBD
VVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUywgbWF4SG9zdENvbm5lY3Rpb25zKTsKK30KKwog
Q1VSTE1jb2RlIEN1cmxNdWx0aUhhbmRsZTo6YWRkSGFuZGxlKENVUkwqIGhhbmRsZSkKIHsKICAg
ICByZXR1cm4gY3VybF9tdWx0aV9hZGRfaGFuZGxlKG1fbXVsdGlIYW5kbGUsIGhhbmRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5o
CmluZGV4IDE1NmRlNzZhMGRjLi4xNjM4MWI2ZDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTUzLDYgKzUzLDEyIEBA
IGVudW0gY2xhc3MgQ3VybFByb3h5VHlwZSB7CiAgICAgU29ja3M1SG9zdG5hbWUgPSBDVVJMUFJP
WFlfU09DS1M1X0hPU1ROQU1FCiB9OwogCisvLyBWYWx1ZXMgdGFrZW4gZnJvbSBodHRwOi8vd3d3
LmJyb3dzZXJzY29wZS5vcmcvIGZvbGxvd2luZworLy8gdGhlIHJ1bGUgIkRvIFdoYXQgRXZlcnkg
T3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMgRG9pbmciLgorY29uc3QgbG9uZyBDdXJsRGVmYXVsdE1h
eENvbm5lY3RzIHsgLTEgfTsgLy8gLTEgOiBEb2VzIG5vdCBzZXQgQ1VSTE1PUFRfTUFYQ09OTkVD
VFMKK2NvbnN0IGxvbmcgQ3VybERlZmF1bHRNYXhUb3RhbENvbm5lY3Rpb25zIHsgMTcgfTsKK2Nv
bnN0IGxvbmcgQ3VybERlZmF1bHRNYXhIb3N0Q29ubmVjdGlvbnMgeyA2IH07CisKIC8vIEN1cmxH
bG9iYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRv
IG1ha2UgdGhlIGluaXRpYWxpemF0aW9uIG9mIGxpYmN1cmwgaGFwcGVuIGJlZm9yZSBvdGhlciBp
bml0aWFsaXphdGlvbiBvZiBDdXJsQ29udGV4dAogCkBAIC05MCw2ICs5Niw4IEBAIHByaXZhdGU6
CiAKIC8vIEN1cmxDb250ZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKK2NsYXNzIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOworCiBjbGFzcyBDdXJsQ29udGV4
dCA6IHB1YmxpYyBDdXJsR2xvYmFsIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsQ29u
dGV4dCk7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEN1cmxDb250ZXh0PjsKQEAgLTExMCw2
ICsxMTgsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDdXJsU2hhcmVIYW5kbGUmIHNoYXJlSGFu
ZGxlKCkgeyByZXR1cm4gbV9zaGFyZUhhbmRsZTsgfQogCisgICAgQ3VybFJlcXVlc3RTY2hlZHVs
ZXImIHNjaGVkdWxlcigpOworCiAgICAgLy8gUHJveHkKICAgICBjb25zdCBQcm94eUluZm8mIHBy
b3h5SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHk7IH0KICAgICB2b2lkIHNldFByb3h5SW5m
byhjb25zdCBQcm94eUluZm8mIGluZm8pIHsgbV9wcm94eSA9IGluZm87ICB9CkBAIC0xMzcsNiAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICBQcm94eUluZm8gbV9wcm94eTsKICAgICBDdXJsU2hhcmVI
YW5kbGUgbV9zaGFyZUhhbmRsZTsKICAgICBDdXJsU1NMSGFuZGxlIG1fc3NsSGFuZGxlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdXJsUmVxdWVzdFNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAKICAg
ICBTZWNvbmRzIG1fZG5zQ2FjaGVUaW1lb3V0IHsgU2Vjb25kczo6ZnJvbU1pbnV0ZXMoNSkgfTsK
ICAgICBTZWNvbmRzIG1fY29ubmVjdFRpbWVvdXQgeyAzMC4wIH07CkBAIC0xNTYsNiArMTY3LDEw
IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlIYW5kbGUoKTsKICAgICB+Q3VybE11bHRpSGFuZGxl
KCk7CiAKKyAgICB2b2lkIHNldE1heENvbm5lY3RzKGxvbmcpOworICAgIHZvaWQgc2V0TWF4VG90
YWxDb25uZWN0aW9ucyhsb25nKTsKKyAgICB2b2lkIHNldE1heEhvc3RDb25uZWN0aW9ucyhsb25n
KTsKKwogICAgIENVUkxNY29kZSBhZGRIYW5kbGUoQ1VSTCopOwogICAgIENVUkxNY29kZSByZW1v
dmVIYW5kbGUoQ1VSTCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCA1YTc4M2ZkNWU4Ni4uMTQ1MDMyYTI2ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzdGFydFdpdGhK
b2JNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRvbigpLmFkZCh0aGlzKTsKKyAgICBDdXJsQ29udGV4dDo6
c2luZ2xldG9uKCkuc2NoZWR1bGVyKCkuYWRkKHRoaXMpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0
OjpjYW5jZWwoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNhbmNlbCgp
CiAgICAgbV9jYW5jZWxsZWQgPSB0cnVlOwogCiAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QpIHsK
LSAgICAgICAgYXV0byYgc2NoZWR1bGVyID0gQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRv
bigpOworICAgICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCku
c2NoZWR1bGVyKCk7CiAKICAgICAgICAgaWYgKG5lZWRUb0ludm9rZURpZENhbmNlbFRyYW5zZmVy
KCkpIHsKICAgICAgICAgICAgIHNjaGVkdWxlci5jYWxsT25Xb3JrZXJUaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBDdXJs
UmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9yRmlsZShVUkwmIHVybCkKIAogICAg
IGlmICghbV9pc1N5bmNSZXF1ZXN0KSB7CiAgICAgICAgIC8vIERpZFJlY2VpdmVSZXNwb25zZSBt
dXN0IG5vdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkKLSAgICAgICAgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OnNpbmdsZXRvbigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIHsKKyAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNjaGVkdWxl
cigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmludm9rZURpZFJlY2VpdmVSZXNwb25zZShw
cm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNlLCBBY3Rpb246OlN0YXJ0VHJhbnNmZXIpOwogICAgICAg
ICB9KTsKICAgICB9IGVsc2UgewpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6
OmNvbXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICAgICAgc3RhcnRXaXRoSm9iTWFuYWdl
cigpOwogICAgIH0gZWxzZSBpZiAobV9hY3Rpb25BZnRlckludm9rZSA9PSBBY3Rpb246OkZpbmlz
aFRyYW5zZmVyKSB7CiAgICAgICAgIGlmICghbV9pc1N5bmNSZXF1ZXN0KSB7Ci0gICAgICAgICAg
ICBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuY2FsbE9uV29ya2VyVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZpbmlzaGVkUmVzdWx0Q29kZSA9IG1fZmlu
aXNoZWRSZXN1bHRDb2RlXSgpIHsKKyAgICAgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24o
KS5zY2hlZHVsZXIoKS5jYWxsT25Xb3JrZXJUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZmluaXNoZWRSZXN1bHRDb2RlID0gbV9maW5pc2hlZFJlc3VsdENvZGVdKCkgewog
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENvbXBsZXRlVHJhbnNmZXIoZmluaXNo
ZWRSZXN1bHRDb2RlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTYwMiw3
ICs2MDIsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QgJiYgaXNNYWluVGhyZWFkKCkp
IHsKLSAgICAgICAgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRvbigpLmNhbGxPbldvcmtl
clRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXVzZWQgPSBpc1BhdXNl
ZCgpXSgpIHsKKyAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNjaGVkdWxlcigpLmNh
bGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXVzZWQg
PSBpc1BhdXNlZCgpXSgpIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0NvbXBs
ZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcAppbmRleCBlM2I0NWJlMmM4Yy4uMTFmMjEwMDI3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0U2NoZWR1bGVyLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBACiAjaWYgVVNFKENVUkwpCiAKICNp
bmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1cmxSZXF1ZXN0U2NoZWR1
bGVyJiBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkKK0N1cmxSZXF1ZXN0U2NoZWR1
bGVyOjpDdXJsUmVxdWVzdFNjaGVkdWxlcihsb25nIG1heENvbm5lY3RzLCBsb25nIG1heFRvdGFs
Q29ubmVjdGlvbnMsIGxvbmcgbWF4SG9zdENvbm5lY3Rpb25zKQorICAgIDogbV9tYXhDb25uZWN0
cyhtYXhDb25uZWN0cykKKyAgICAsIG1fbWF4VG90YWxDb25uZWN0aW9ucyhtYXhUb3RhbENvbm5l
Y3Rpb25zKQorICAgICwgbV9tYXhIb3N0Q29ubmVjdGlvbnMobWF4SG9zdENvbm5lY3Rpb25zKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj4gc2hhcmVk
SW5zdGFuY2U7Ci0gICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCiBib29sIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjphZGQoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKQEAg
LTEzNSw2ICsxMzUsOSBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQo
KQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgbV9jdXJsTXVsdGlIYW5kbGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhh
bmRsZS0+c2V0TWF4Q29ubmVjdHMobV9tYXhDb25uZWN0cyk7CisgICAgbV9jdXJsTXVsdGlIYW5k
bGUtPnNldE1heFRvdGFsQ29ubmVjdGlvbnMobV9tYXhUb3RhbENvbm5lY3Rpb25zKTsKKyAgICBt
X2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4SG9zdENvbm5lY3Rpb25zKG1fbWF4SG9zdENvbm5lY3Rp
b25zKTsKIAogICAgIHdoaWxlIChtX3J1blRocmVhZCkgewogICAgICAgICBleGVjdXRlVGFza3Mo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXggOGJhZjE4ZTBmNzMuLjI2NGI5MGUxMDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAtNDEsOCArNDEsNyBAQCBjbGFzcyBDdXJsUmVxdWVz
dFNjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJlcXVlc3RTY2hlZHVs
ZXIpOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj47CiBw
dWJsaWM6Ci0gICAgc3RhdGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyJiBzaW5nbGV0b24oKTsKLQor
ICAgIEN1cmxSZXF1ZXN0U2NoZWR1bGVyKGxvbmcgbWF4Q29ubmVjdHMsIGxvbmcgbWF4VG90YWxD
b25uZWN0aW9ucywgbG9uZyBtYXhIb3N0Q29ubmVjdGlvbnMpOwogICAgIH5DdXJsUmVxdWVzdFNj
aGVkdWxlcigpIHsgc3RvcFRocmVhZCgpOyB9CiAKICAgICBib29sIGFkZChDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudCopOwpAQCAtNTEsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxs
T25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAg
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyKCkgPSBkZWZhdWx0OwotCiAgICAgdm9pZCBzdGFydFRocmVh
ZElmTmVlZGVkKCk7CiAgICAgdm9pZCBzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCk7CiAg
ICAgdm9pZCBzdG9wVGhyZWFkKCk7CkBAIC03NCw2ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8Q1VSTCosIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kj4gbV9hY3RpdmVKb2JzOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aUhhbmRsZT4gbV9jdXJsTXVsdGlIYW5kbGU7
CisKKyAgICBsb25nIG1fbWF4Q29ubmVjdHM7CisgICAgbG9uZyBtX21heFRvdGFsQ29ubmVjdGlv
bnM7CisgICAgbG9uZyBtX21heEhvc3RDb25uZWN0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335369</attachid>
            <date>2018-03-08 17:10:40 -0800</date>
            <delta_ts>2018-03-08 22:01:01 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>183016-b9ffaa43587.diff</filename>
            <type>text/plain</type>
            <size>11067</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMzAxN2ZhYjg5Mi4uODRlOTdlMjU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0wMy0wOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBjb25uZWN0aW9uIGxpbWl0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDE2CisKKyAg
ICAgICAgSW1wbGVtZW50IGJvdGggY29ubmVjdGlvbiBsaW1pdCBwZXIgaG9zdCBhbmQgdG90YWwK
KyAgICAgICAgY29ubmVjdGlvbiBsaW1pdCBvbiBjdXJsIG5ldHdvcmsgbGF5ZXIuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJl
Y2F1c2UgdGhlcmUncyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW52aXJvbm1l
bnRWYXJpYWJsZVJlYWRlcjo6c3NjYW5UZW1wbGF0ZTxzaWduZWQ+KToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlIYW5kbGU6OnNldE1heENvbm5lY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aUhh
bmRsZTo6c2V0TWF4VG90YWxDb25uZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlIYW5kbGU6OnNldE1heEhvc3RDb25uZWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6
c2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnN0YXJ0V2l0aEpvYk1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsUmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9yRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1c0NoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Q3VybFJlcXVlc3RTY2hlZHVs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuaDoKKwogMjAxOC0wMy0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTlNBbmltYXRpb24gaXMgbm90IHdvcmtpbmcgaW4gdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcyB3aGVuIFdpbmRvd1NlcnZlciBhY2Nlc3MgaXMgYmxvY2tlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmlu
ZGV4IGJhYjEzOTc4YTQ3Li41YzUwNGNlYzdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0yOCw4ICsyOCwxMCBA
QAogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAKICNpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJD
dXJsUmVxdWVzdFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNs
dWRlIDxOZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTY2LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB9
CiAKICAgICAvLyBkZWZpbmUgc3BlY2lhbGl6ZWQgbWVtYmVyIGZ1bmN0aW9uIGZvciBzcGVjaWZp
YyB0eXBlLgorICAgIHRlbXBsYXRlPD4gY29uc3RleHByIGNvbnN0IGNoYXIqIHNzY2FuVGVtcGxh
dGU8c2lnbmVkPigpIHsgcmV0dXJuICIlZCI7IH0KICAgICB0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBzc2NhblRlbXBsYXRlPHVuc2lnbmVkPigpIHsgcmV0dXJuICIldSI7IH0KIH07
CiAKQEAgLTg5LDYgKzkyLDIxIEBAIEN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCgpCiAgICAgaWYg
KGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHVuc2lnbmVkPigiV0VCS0lUX0NVUkxfQ09OTkVD
VF9USU1FT1VUIikpCiAgICAgICAgIG1fY29ubmVjdFRpbWVvdXQgPSBTZWNvbmRzKCp2YWx1ZSk7
CiAKKyAgICBsb25nIG1heENvbm5lY3RzIHsgQ3VybERlZmF1bHRNYXhDb25uZWN0cyB9OworICAg
IGxvbmcgbWF4VG90YWxDb25uZWN0aW9ucyB7IEN1cmxEZWZhdWx0TWF4VG90YWxDb25uZWN0aW9u
cyB9OworICAgIGxvbmcgbWF4SG9zdENvbm5lY3Rpb25zIHsgQ3VybERlZmF1bHRNYXhIb3N0Q29u
bmVjdGlvbnMgfTsKKworICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+
KCJXRUJLSVRfQ1VSTF9NQVhDT05ORUNUUyIpKQorICAgICAgICBtYXhDb25uZWN0cyA9ICp2YWx1
ZTsKKworICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRf
Q1VSTF9NQVhfVE9UQUxfQ09OTkVDVElPTlMiKSkKKyAgICAgICAgbWF4VG90YWxDb25uZWN0aW9u
cyA9ICp2YWx1ZTsKKworICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+
KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQorICAgICAgICBtYXhIb3N0Q29u
bmVjdGlvbnMgPSAqdmFsdWU7CisKKyAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBt
YXhIb3N0Q29ubmVjdGlvbnMpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVu
dlZhci5kZWZpbmVkKCJERUJVR19DVVJMIik7CiAKQEAgLTIxMyw2ICsyMzEsMjQgQEAgQ3VybE11
bHRpSGFuZGxlOjp+Q3VybE11bHRpSGFuZGxlKCkKICAgICAgICAgY3VybF9tdWx0aV9jbGVhbnVw
KG1fbXVsdGlIYW5kbGUpOwogfQogCit2b2lkIEN1cmxNdWx0aUhhbmRsZTo6c2V0TWF4Q29ubmVj
dHMobG9uZyBtYXhDb25uZWN0cykKK3sKKyAgICBpZiAobWF4Q29ubmVjdHMgPCAwKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjdXJsX211bHRpX3NldG9wdChtX211bHRpSGFuZGxlLCBDVVJMTU9Q
VF9NQVhDT05ORUNUUywgbWF4Q29ubmVjdHMpOworfQorCit2b2lkIEN1cmxNdWx0aUhhbmRsZTo6
c2V0TWF4VG90YWxDb25uZWN0aW9ucyhsb25nIG1heFRvdGFsQ29ubmVjdGlvbnMpCit7CisgICAg
Y3VybF9tdWx0aV9zZXRvcHQobV9tdWx0aUhhbmRsZSwgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5F
Q1RJT05TLCBtYXhUb3RhbENvbm5lY3Rpb25zKTsKK30KKwordm9pZCBDdXJsTXVsdGlIYW5kbGU6
OnNldE1heEhvc3RDb25uZWN0aW9ucyhsb25nIG1heEhvc3RDb25uZWN0aW9ucykKK3sKKyAgICBj
dXJsX211bHRpX3NldG9wdChtX211bHRpSGFuZGxlLCBDVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNU
SU9OUywgbWF4SG9zdENvbm5lY3Rpb25zKTsKK30KKwogQ1VSTE1jb2RlIEN1cmxNdWx0aUhhbmRs
ZTo6YWRkSGFuZGxlKENVUkwqIGhhbmRsZSkKIHsKICAgICByZXR1cm4gY3VybF9tdWx0aV9hZGRf
aGFuZGxlKG1fbXVsdGlIYW5kbGUsIGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDE1NmRlNzZhMGRjLi42YmE3
MGUxMTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKQEAgLTUzLDYgKzUzLDEyIEBAIGVudW0gY2xhc3MgQ3VybFByb3h5VHlw
ZSB7CiAgICAgU29ja3M1SG9zdG5hbWUgPSBDVVJMUFJPWFlfU09DS1M1X0hPU1ROQU1FCiB9Owog
CisvLyBWYWx1ZXMgdGFrZW4gZnJvbSBodHRwOi8vd3d3LmJyb3dzZXJzY29wZS5vcmcvIGZvbGxv
d2luZworLy8gdGhlIHJ1bGUgIkRvIFdoYXQgRXZlcnkgT3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMg
RG9pbmciLgorY29uc3QgbG9uZyBDdXJsRGVmYXVsdE1heENvbm5lY3RzIHsgLTEgfTsgLy8gLTEg
OiBEb2VzIG5vdCBzZXQgQ1VSTE1PUFRfTUFYQ09OTkVDVFMKK2NvbnN0IGxvbmcgQ3VybERlZmF1
bHRNYXhUb3RhbENvbm5lY3Rpb25zIHsgMTcgfTsKK2NvbnN0IGxvbmcgQ3VybERlZmF1bHRNYXhI
b3N0Q29ubmVjdGlvbnMgeyA2IH07CisKIC8vIEN1cmxHbG9iYWwgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRvIG1ha2UgdGhlIGluaXRpYWxpemF0aW9u
IG9mIGxpYmN1cmwgaGFwcGVuIGJlZm9yZSBvdGhlciBpbml0aWFsaXphdGlvbiBvZiBDdXJsQ29u
dGV4dAogCkBAIC05MCw2ICs5Niw4IEBAIHByaXZhdGU6CiAKIC8vIEN1cmxDb250ZXh0IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NsYXNzIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOworCiBjbGFzcyBDdXJsQ29udGV4dCA6IHB1YmxpYyBDdXJsR2xvYmFsIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsQ29udGV4dCk7CiAgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPEN1cmxDb250ZXh0PjsKQEAgLTExMCw2ICsxMTgsOCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBDdXJsU2hhcmVIYW5kbGUmIHNoYXJlSGFuZGxlKCkgeyByZXR1cm4gbV9zaGFyZUhh
bmRsZTsgfQogCisgICAgQ3VybFJlcXVlc3RTY2hlZHVsZXImIHNjaGVkdWxlcigpIHsgcmV0dXJu
ICptX3NjaGVkdWxlcjsgfQorCiAgICAgLy8gUHJveHkKICAgICBjb25zdCBQcm94eUluZm8mIHBy
b3h5SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHk7IH0KICAgICB2b2lkIHNldFByb3h5SW5m
byhjb25zdCBQcm94eUluZm8mIGluZm8pIHsgbV9wcm94eSA9IGluZm87ICB9CkBAIC0xMzcsNiAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICBQcm94eUluZm8gbV9wcm94eTsKICAgICBDdXJsU2hhcmVI
YW5kbGUgbV9zaGFyZUhhbmRsZTsKICAgICBDdXJsU1NMSGFuZGxlIG1fc3NsSGFuZGxlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdXJsUmVxdWVzdFNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAKICAg
ICBTZWNvbmRzIG1fZG5zQ2FjaGVUaW1lb3V0IHsgU2Vjb25kczo6ZnJvbU1pbnV0ZXMoNSkgfTsK
ICAgICBTZWNvbmRzIG1fY29ubmVjdFRpbWVvdXQgeyAzMC4wIH07CkBAIC0xNTYsNiArMTY3LDEw
IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlIYW5kbGUoKTsKICAgICB+Q3VybE11bHRpSGFuZGxl
KCk7CiAKKyAgICB2b2lkIHNldE1heENvbm5lY3RzKGxvbmcpOworICAgIHZvaWQgc2V0TWF4VG90
YWxDb25uZWN0aW9ucyhsb25nKTsKKyAgICB2b2lkIHNldE1heEhvc3RDb25uZWN0aW9ucyhsb25n
KTsKKwogICAgIENVUkxNY29kZSBhZGRIYW5kbGUoQ1VSTCopOwogICAgIENVUkxNY29kZSByZW1v
dmVIYW5kbGUoQ1VSTCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCA1YTc4M2ZkNWU4Ni4uMTQ1MDMyYTI2ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzdGFydFdpdGhK
b2JNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRvbigpLmFkZCh0aGlzKTsKKyAgICBDdXJsQ29udGV4dDo6
c2luZ2xldG9uKCkuc2NoZWR1bGVyKCkuYWRkKHRoaXMpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0
OjpjYW5jZWwoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNhbmNlbCgp
CiAgICAgbV9jYW5jZWxsZWQgPSB0cnVlOwogCiAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QpIHsK
LSAgICAgICAgYXV0byYgc2NoZWR1bGVyID0gQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRv
bigpOworICAgICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCku
c2NoZWR1bGVyKCk7CiAKICAgICAgICAgaWYgKG5lZWRUb0ludm9rZURpZENhbmNlbFRyYW5zZmVy
KCkpIHsKICAgICAgICAgICAgIHNjaGVkdWxlci5jYWxsT25Xb3JrZXJUaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBDdXJs
UmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9yRmlsZShVUkwmIHVybCkKIAogICAg
IGlmICghbV9pc1N5bmNSZXF1ZXN0KSB7CiAgICAgICAgIC8vIERpZFJlY2VpdmVSZXNwb25zZSBt
dXN0IG5vdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkKLSAgICAgICAgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OnNpbmdsZXRvbigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIHsKKyAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNjaGVkdWxl
cigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmludm9rZURpZFJlY2VpdmVSZXNwb25zZShw
cm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNlLCBBY3Rpb246OlN0YXJ0VHJhbnNmZXIpOwogICAgICAg
ICB9KTsKICAgICB9IGVsc2UgewpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6
OmNvbXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICAgICAgc3RhcnRXaXRoSm9iTWFuYWdl
cigpOwogICAgIH0gZWxzZSBpZiAobV9hY3Rpb25BZnRlckludm9rZSA9PSBBY3Rpb246OkZpbmlz
aFRyYW5zZmVyKSB7CiAgICAgICAgIGlmICghbV9pc1N5bmNSZXF1ZXN0KSB7Ci0gICAgICAgICAg
ICBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuY2FsbE9uV29ya2VyVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZpbmlzaGVkUmVzdWx0Q29kZSA9IG1fZmlu
aXNoZWRSZXN1bHRDb2RlXSgpIHsKKyAgICAgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24o
KS5zY2hlZHVsZXIoKS5jYWxsT25Xb3JrZXJUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZmluaXNoZWRSZXN1bHRDb2RlID0gbV9maW5pc2hlZFJlc3VsdENvZGVdKCkgewog
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENvbXBsZXRlVHJhbnNmZXIoZmluaXNo
ZWRSZXN1bHRDb2RlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTYwMiw3
ICs2MDIsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QgJiYgaXNNYWluVGhyZWFkKCkp
IHsKLSAgICAgICAgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnNpbmdsZXRvbigpLmNhbGxPbldvcmtl
clRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXVzZWQgPSBpc1BhdXNl
ZCgpXSgpIHsKKyAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNjaGVkdWxlcigpLmNh
bGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXVzZWQg
PSBpc1BhdXNlZCgpXSgpIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0NvbXBs
ZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcAppbmRleCBlM2I0NWJlMmM4Yy4uMTFmMjEwMDI3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0U2NoZWR1bGVyLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBACiAjaWYgVVNFKENVUkwpCiAKICNp
bmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1cmxSZXF1ZXN0U2NoZWR1
bGVyJiBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkKK0N1cmxSZXF1ZXN0U2NoZWR1
bGVyOjpDdXJsUmVxdWVzdFNjaGVkdWxlcihsb25nIG1heENvbm5lY3RzLCBsb25nIG1heFRvdGFs
Q29ubmVjdGlvbnMsIGxvbmcgbWF4SG9zdENvbm5lY3Rpb25zKQorICAgIDogbV9tYXhDb25uZWN0
cyhtYXhDb25uZWN0cykKKyAgICAsIG1fbWF4VG90YWxDb25uZWN0aW9ucyhtYXhUb3RhbENvbm5l
Y3Rpb25zKQorICAgICwgbV9tYXhIb3N0Q29ubmVjdGlvbnMobWF4SG9zdENvbm5lY3Rpb25zKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj4gc2hhcmVk
SW5zdGFuY2U7Ci0gICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCiBib29sIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjphZGQoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKQEAg
LTEzNSw2ICsxMzUsOSBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQo
KQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgbV9jdXJsTXVsdGlIYW5kbGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhh
bmRsZS0+c2V0TWF4Q29ubmVjdHMobV9tYXhDb25uZWN0cyk7CisgICAgbV9jdXJsTXVsdGlIYW5k
bGUtPnNldE1heFRvdGFsQ29ubmVjdGlvbnMobV9tYXhUb3RhbENvbm5lY3Rpb25zKTsKKyAgICBt
X2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4SG9zdENvbm5lY3Rpb25zKG1fbWF4SG9zdENvbm5lY3Rp
b25zKTsKIAogICAgIHdoaWxlIChtX3J1blRocmVhZCkgewogICAgICAgICBleGVjdXRlVGFza3Mo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXggOGJhZjE4ZTBmNzMuLjI2NGI5MGUxMDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAtNDEsOCArNDEsNyBAQCBjbGFzcyBDdXJsUmVxdWVz
dFNjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJlcXVlc3RTY2hlZHVs
ZXIpOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj47CiBw
dWJsaWM6Ci0gICAgc3RhdGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyJiBzaW5nbGV0b24oKTsKLQor
ICAgIEN1cmxSZXF1ZXN0U2NoZWR1bGVyKGxvbmcgbWF4Q29ubmVjdHMsIGxvbmcgbWF4VG90YWxD
b25uZWN0aW9ucywgbG9uZyBtYXhIb3N0Q29ubmVjdGlvbnMpOwogICAgIH5DdXJsUmVxdWVzdFNj
aGVkdWxlcigpIHsgc3RvcFRocmVhZCgpOyB9CiAKICAgICBib29sIGFkZChDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudCopOwpAQCAtNTEsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxs
T25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAg
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyKCkgPSBkZWZhdWx0OwotCiAgICAgdm9pZCBzdGFydFRocmVh
ZElmTmVlZGVkKCk7CiAgICAgdm9pZCBzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCk7CiAg
ICAgdm9pZCBzdG9wVGhyZWFkKCk7CkBAIC03NCw2ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8Q1VSTCosIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kj4gbV9hY3RpdmVKb2JzOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aUhhbmRsZT4gbV9jdXJsTXVsdGlIYW5kbGU7
CisKKyAgICBsb25nIG1fbWF4Q29ubmVjdHM7CisgICAgbG9uZyBtX21heFRvdGFsQ29ubmVjdGlv
bnM7CisgICAgbG9uZyBtX21heEhvc3RDb25uZWN0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>
<flag name="review"
          id="354022"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335392</attachid>
            <date>2018-03-08 22:01:01 -0800</date>
            <delta_ts>2018-03-09 10:51:35 -0800</delta_ts>
            <desc>FIX</desc>
            <filename>183016-b9ffaa43587.diff</filename>
            <type>text/plain</type>
            <size>11066</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMzAxN2ZhYjg5Mi4uODRlOTdlMjU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0wMy0wOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBjb25uZWN0aW9uIGxpbWl0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDE2CisKKyAg
ICAgICAgSW1wbGVtZW50IGJvdGggY29ubmVjdGlvbiBsaW1pdCBwZXIgaG9zdCBhbmQgdG90YWwK
KyAgICAgICAgY29ubmVjdGlvbiBsaW1pdCBvbiBjdXJsIG5ldHdvcmsgbGF5ZXIuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSdzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbnZpcm9ubWVu
dFZhcmlhYmxlUmVhZGVyOjpzc2NhblRlbXBsYXRlPHNpZ25lZD4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybENvbnRleHQ6OkN1cmxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0
aUhhbmRsZTo6c2V0TWF4Q29ubmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpSGFu
ZGxlOjpzZXRNYXhUb3RhbENvbm5lY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0
aUhhbmRsZTo6c2V0TWF4SG9zdENvbm5lY3Rpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0Ojpz
Y2hlZHVsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c3RhcnRXaXRoSm9iTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2VGb3JGaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpjb21wbGV0ZURpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpDdXJsUmVxdWVzdFNjaGVkdWxl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzaW5nbGV0b24pOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oOgorCiAyMDE4LTAzLTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBOU0FuaW1hdGlvbiBpcyBub3Qgd29ya2luZyBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIHdoZW4gV2luZG93U2VydmVyIGFjY2VzcyBpcyBibG9ja2VkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5k
ZXggYmFiMTM5NzhhNDcuLjVjNTA0Y2VjN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTI4LDggKzI4LDEwIEBA
CiAjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKIAogI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgIkN1
cmxSZXF1ZXN0U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1
ZGUgPE5ldHdvcmtMb2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNjYsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIC8vIGRlZmluZSBzcGVjaWFsaXplZCBtZW1iZXIgZnVuY3Rpb24gZm9yIHNwZWNpZmlj
IHR5cGUuCisgICAgdGVtcGxhdGU8PiBjb25zdGV4cHIgY29uc3QgY2hhciogc3NjYW5UZW1wbGF0
ZTxzaWduZWQ+KCkgeyByZXR1cm4gIiVkIjsgfQogICAgIHRlbXBsYXRlPD4gY29uc3RleHByIGNv
bnN0IGNoYXIqIHNzY2FuVGVtcGxhdGU8dW5zaWduZWQ+KCkgeyByZXR1cm4gIiV1IjsgfQogfTsK
IApAQCAtODksNiArOTIsMjEgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAgICBpZiAo
YXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8dW5zaWduZWQ+KCJXRUJLSVRfQ1VSTF9DT05ORUNU
X1RJTUVPVVQiKSkKICAgICAgICAgbV9jb25uZWN0VGltZW91dCA9IFNlY29uZHMoKnZhbHVlKTsK
IAorICAgIGxvbmcgbWF4Q29ubmVjdHMgeyBDdXJsRGVmYXVsdE1heENvbm5lY3RzIH07CisgICAg
bG9uZyBtYXhUb3RhbENvbm5lY3Rpb25zIHsgQ3VybERlZmF1bHRNYXhUb3RhbENvbm5lY3Rpb25z
IH07CisgICAgbG9uZyBtYXhIb3N0Q29ubmVjdGlvbnMgeyBDdXJsRGVmYXVsdE1heEhvc3RDb25u
ZWN0aW9ucyB9OworCisgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHNpZ25lZD4o
IldFQktJVF9DVVJMX01BWENPTk5FQ1RTIikpCisgICAgICAgIG1heENvbm5lY3RzID0gKnZhbHVl
OworCisgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHNpZ25lZD4oIldFQktJVF9D
VVJMX01BWF9UT1RBTF9DT05ORUNUSU9OUyIpKQorICAgICAgICBtYXhUb3RhbENvbm5lY3Rpb25z
ID0gKnZhbHVlOworCisgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHNpZ25lZD4o
IldFQktJVF9DVVJMX01BWF9IT1NUX0NPTk5FQ1RJT05TIikpCisgICAgICAgIG1heEhvc3RDb25u
ZWN0aW9ucyA9ICp2YWx1ZTsKKworICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1h
eEhvc3RDb25uZWN0aW9ucyk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52
VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKIApAQCAtMjEzLDYgKzIzMSwyNCBAQCBDdXJsTXVs
dGlIYW5kbGU6On5DdXJsTXVsdGlIYW5kbGUoKQogICAgICAgICBjdXJsX211bHRpX2NsZWFudXAo
bV9tdWx0aUhhbmRsZSk7CiB9CiAKK3ZvaWQgQ3VybE11bHRpSGFuZGxlOjpzZXRNYXhDb25uZWN0
cyhsb25nIG1heENvbm5lY3RzKQoreworICAgIGlmIChtYXhDb25uZWN0cyA8IDApCisgICAgICAg
IHJldHVybjsKKworICAgIGN1cmxfbXVsdGlfc2V0b3B0KG1fbXVsdGlIYW5kbGUsIENVUkxNT1BU
X01BWENPTk5FQ1RTLCBtYXhDb25uZWN0cyk7Cit9CisKK3ZvaWQgQ3VybE11bHRpSGFuZGxlOjpz
ZXRNYXhUb3RhbENvbm5lY3Rpb25zKGxvbmcgbWF4VG90YWxDb25uZWN0aW9ucykKK3sKKyAgICBj
dXJsX211bHRpX3NldG9wdChtX211bHRpSGFuZGxlLCBDVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVD
VElPTlMsIG1heFRvdGFsQ29ubmVjdGlvbnMpOworfQorCit2b2lkIEN1cmxNdWx0aUhhbmRsZTo6
c2V0TWF4SG9zdENvbm5lY3Rpb25zKGxvbmcgbWF4SG9zdENvbm5lY3Rpb25zKQoreworICAgIGN1
cmxfbXVsdGlfc2V0b3B0KG1fbXVsdGlIYW5kbGUsIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJ
T05TLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworfQorCiBDVVJMTWNvZGUgQ3VybE11bHRpSGFuZGxl
OjphZGRIYW5kbGUoQ1VSTCogaGFuZGxlKQogewogICAgIHJldHVybiBjdXJsX211bHRpX2FkZF9o
YW5kbGUobV9tdWx0aUhhbmRsZSwgaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggMTU2ZGU3NmEwZGMuLjZiYTcw
ZTExMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaApAQCAtNTMsNiArNTMsMTIgQEAgZW51bSBjbGFzcyBDdXJsUHJveHlUeXBl
IHsKICAgICBTb2NrczVIb3N0bmFtZSA9IENVUkxQUk9YWV9TT0NLUzVfSE9TVE5BTUUKIH07CiAK
Ky8vIFZhbHVlcyB0YWtlbiBmcm9tIGh0dHA6Ly93d3cuYnJvd3NlcnNjb3BlLm9yZy8gZm9sbG93
aW5nCisvLyB0aGUgcnVsZSAiRG8gV2hhdCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBE
b2luZyIuCitjb25zdCBsb25nIEN1cmxEZWZhdWx0TWF4Q29ubmVjdHMgeyAtMSB9OyAvLyAtMSA6
IERvZXMgbm90IHNldCBDVVJMTU9QVF9NQVhDT05ORUNUUworY29uc3QgbG9uZyBDdXJsRGVmYXVs
dE1heFRvdGFsQ29ubmVjdGlvbnMgeyAxNyB9OworY29uc3QgbG9uZyBDdXJsRGVmYXVsdE1heEhv
c3RDb25uZWN0aW9ucyB7IDYgfTsKKwogLy8gQ3VybEdsb2JhbCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gdG8gbWFrZSB0aGUgaW5pdGlhbGl6YXRpb24g
b2YgbGliY3VybCBoYXBwZW4gYmVmb3JlIG90aGVyIGluaXRpYWxpemF0aW9uIG9mIEN1cmxDb250
ZXh0CiAKQEAgLTkwLDYgKzk2LDggQEAgcHJpdmF0ZToKIAogLy8gQ3VybENvbnRleHQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorY2xhc3MgQ3VybFJlcXVl
c3RTY2hlZHVsZXI7CisKIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9iYWwgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxDb250ZXh0KTsKICAgICBmcmllbmQgTmV2ZXJE
ZXN0cm95ZWQ8Q3VybENvbnRleHQ+OwpAQCAtMTEwLDYgKzExOCw4IEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IEN1cmxTaGFyZUhhbmRsZSYgc2hhcmVIYW5kbGUoKSB7IHJldHVybiBtX3NoYXJlSGFu
ZGxlOyB9CiAKKyAgICBDdXJsUmVxdWVzdFNjaGVkdWxlciYgc2NoZWR1bGVyKCkgeyByZXR1cm4g
Km1fc2NoZWR1bGVyOyB9CisKICAgICAvLyBQcm94eQogICAgIGNvbnN0IFByb3h5SW5mbyYgcHJv
eHlJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eTsgfQogICAgIHZvaWQgc2V0UHJveHlJbmZv
KGNvbnN0IFByb3h5SW5mbyYgaW5mbykgeyBtX3Byb3h5ID0gaW5mbzsgIH0KQEAgLTEzNyw2ICsx
NDcsNyBAQCBwcml2YXRlOgogICAgIFByb3h5SW5mbyBtX3Byb3h5OwogICAgIEN1cmxTaGFyZUhh
bmRsZSBtX3NoYXJlSGFuZGxlOwogICAgIEN1cmxTU0xIYW5kbGUgbV9zc2xIYW5kbGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKIAogICAg
IFNlY29uZHMgbV9kbnNDYWNoZVRpbWVvdXQgeyBTZWNvbmRzOjpmcm9tTWludXRlcyg1KSB9Owog
ICAgIFNlY29uZHMgbV9jb25uZWN0VGltZW91dCB7IDMwLjAgfTsKQEAgLTE1Niw2ICsxNjcsMTAg
QEAgcHVibGljOgogICAgIEN1cmxNdWx0aUhhbmRsZSgpOwogICAgIH5DdXJsTXVsdGlIYW5kbGUo
KTsKIAorICAgIHZvaWQgc2V0TWF4Q29ubmVjdHMobG9uZyk7CisgICAgdm9pZCBzZXRNYXhUb3Rh
bENvbm5lY3Rpb25zKGxvbmcpOworICAgIHZvaWQgc2V0TWF4SG9zdENvbm5lY3Rpb25zKGxvbmcp
OworCiAgICAgQ1VSTE1jb2RlIGFkZEhhbmRsZShDVVJMKik7CiAgICAgQ1VSTE1jb2RlIHJlbW92
ZUhhbmRsZShDVVJMKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDVhNzgzZmQ1ZTg2Li4xNDUwMzJhMjY4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnN0YXJ0V2l0aEpv
Yk1hbmFnZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuYWRkKHRoaXMpOworICAgIEN1cmxDb250ZXh0Ojpz
aW5nbGV0b24oKS5zY2hlZHVsZXIoKS5hZGQodGhpcyk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6
OmNhbmNlbCgpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkK
ICAgICBtX2NhbmNlbGxlZCA9IHRydWU7CiAKICAgICBpZiAoIW1faXNTeW5jUmVxdWVzdCkgewot
ICAgICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9u
KCk7CisgICAgICAgIGF1dG8mIHNjaGVkdWxlciA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5z
Y2hlZHVsZXIoKTsKIAogICAgICAgICBpZiAobmVlZFRvSW52b2tlRGlkQ2FuY2VsVHJhbnNmZXIo
KSkgewogICAgICAgICAgICAgc2NoZWR1bGVyLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2VGb3JGaWxlKFVSTCYgdXJsKQogCiAgICAg
aWYgKCFtX2lzU3luY1JlcXVlc3QpIHsKICAgICAgICAgLy8gRGlkUmVjZWl2ZVJlc3BvbnNlIG11
c3Qgbm90IGJlIGNhbGxlZCBpbW1lZGlhdGVseQotICAgICAgICBDdXJsUmVxdWVzdFNjaGVkdWxl
cjo6c2luZ2xldG9uKCkuY2FsbE9uV29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldKCkgeworICAgICAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2NoZWR1bGVy
KCkuY2FsbE9uV29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkg
ewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHBy
b3RlY3RlZFRoaXMtPm1fcmVzcG9uc2UsIEFjdGlvbjo6U3RhcnRUcmFuc2Zlcik7CiAgICAgICAg
IH0pOwogICAgIH0gZWxzZSB7CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
Y29tcGxldGVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBzdGFydFdpdGhKb2JNYW5hZ2Vy
KCk7CiAgICAgfSBlbHNlIGlmIChtX2FjdGlvbkFmdGVySW52b2tlID09IEFjdGlvbjo6RmluaXNo
VHJhbnNmZXIpIHsKICAgICAgICAgaWYgKCFtX2lzU3luY1JlcXVlc3QpIHsKLSAgICAgICAgICAg
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzaW5nbGV0b24oKS5jYWxsT25Xb3JrZXJUaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmluaXNoZWRSZXN1bHRDb2RlID0gbV9maW5p
c2hlZFJlc3VsdENvZGVdKCkgeworICAgICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigp
LnNjaGVkdWxlcigpLmNhbGxPbldvcmtlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBmaW5pc2hlZFJlc3VsdENvZGUgPSBtX2ZpbmlzaGVkUmVzdWx0Q29kZV0oKSB7CiAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkQ29tcGxldGVUcmFuc2ZlcihmaW5pc2hl
ZFJlc3VsdENvZGUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNjAyLDcg
KzYwMiw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1c0NoYW5nZWQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW1faXNTeW5jUmVxdWVzdCAmJiBpc01haW5UaHJlYWQoKSkg
ewotICAgICAgICBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c2luZ2xldG9uKCkuY2FsbE9uV29ya2Vy
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdXNlZCA9IGlzUGF1c2Vk
KCldKCkgeworICAgICAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2NoZWR1bGVyKCkuY2Fs
bE9uV29ya2VyVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdXNlZCA9
IGlzUGF1c2VkKCldKCkgewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzQ29tcGxl
dGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCmluZGV4IGUzYjQ1YmUyYzhjLi4xMWYyMTAwMjcwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RTY2hlZHVsZXIuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAKICNpZiBVU0UoQ1VSTCkKIAogI2lu
Y2x1ZGUgIkN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VybFJlcXVlc3RTY2hlZHVs
ZXImIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzaW5nbGV0b24oKQorQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyKGxvbmcgbWF4Q29ubmVjdHMsIGxvbmcgbWF4VG90YWxD
b25uZWN0aW9ucywgbG9uZyBtYXhIb3N0Q29ubmVjdGlvbnMpCisgICAgOiBtX21heENvbm5lY3Rz
KG1heENvbm5lY3RzKQorICAgICwgbV9tYXhUb3RhbENvbm5lY3Rpb25zKG1heFRvdGFsQ29ubmVj
dGlvbnMpCisgICAgLCBtX21heEhvc3RDb25uZWN0aW9ucyhtYXhIb3N0Q29ubmVjdGlvbnMpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPiBzaGFyZWRJ
bnN0YW5jZTsKLSAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7CiB9CiAKIGJvb2wgQ3VybFJlcXVl
c3RTY2hlZHVsZXI6OmFkZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50KQpAQCAt
MTM1LDYgKzEzNSw5IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgp
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX2N1cmxNdWx0aUhhbmRsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFu
ZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5lY3RzKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRs
ZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21heFRvdGFsQ29ubmVjdGlvbnMpOworICAgIG1f
Y3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlv
bnMpOwogCiAgICAgd2hpbGUgKG1fcnVuVGhyZWFkKSB7CiAgICAgICAgIGV4ZWN1dGVUYXNrcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuaAppbmRleCA4YmFmMThlMGY3My4uMjY0YjkwZTEwNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5oCkBAIC00MSw4ICs0MSw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0
U2NoZWR1bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsUmVxdWVzdFNjaGVkdWxl
cik7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPjsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgQ3VybFJlcXVlc3RTY2hlZHVsZXImIHNpbmdsZXRvbigpOwotCisg
ICAgQ3VybFJlcXVlc3RTY2hlZHVsZXIobG9uZyBtYXhDb25uZWN0cywgbG9uZyBtYXhUb3RhbENv
bm5lY3Rpb25zLCBsb25nIG1heEhvc3RDb25uZWN0aW9ucyk7CiAgICAgfkN1cmxSZXF1ZXN0U2No
ZWR1bGVyKCkgeyBzdG9wVGhyZWFkKCk7IH0KIAogICAgIGJvb2wgYWRkKEN1cmxSZXF1ZXN0U2No
ZWR1bGVyQ2xpZW50Kik7CkBAIC01MSw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxP
bldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6Ci0gICAg
Q3VybFJlcXVlc3RTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7Ci0KICAgICB2b2lkIHN0YXJ0VGhyZWFk
SWZOZWVkZWQoKTsKICAgICB2b2lkIHN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKTsKICAg
ICB2b2lkIHN0b3BUaHJlYWQoKTsKQEAgLTc0LDYgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxDVVJMKiwgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqPiBtX2FjdGl2ZUpvYnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpSGFuZGxlPiBtX2N1cmxNdWx0aUhhbmRsZTsK
KworICAgIGxvbmcgbV9tYXhDb25uZWN0czsKKyAgICBsb25nIG1fbWF4VG90YWxDb25uZWN0aW9u
czsKKyAgICBsb25nIG1fbWF4SG9zdENvbm5lY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>